这个已经不是什么新技术了。今天自己写了一次。做个简单的笔记吧。
上代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | package com.example.viewpargertest; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.os.Parcelable; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { private ViewPager myViewPager; // 页卡内容 private List<View> list; // 存放页卡 private TextView dot1,dot2,dot3; // 这些点都是文字 private Button startButton; // 按钮,“开始体验” @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); initDot(); initViewPager(); } <!--more--> private void initDot(){ dot1=(TextView) this.findViewById(R.id.textView1); // 这些点都是文字 dot2=(TextView) this.findViewById(R.id.textView2); dot3=(TextView) this.findViewById(R.id.textView3); } private void initViewPager(){ myViewPager=(ViewPager) this.findViewById(R.id.viewPager); list=new ArrayList<View>(); LayoutInflater inflater=getLayoutInflater(); View view =inflater.inflate(R.layout.lay3, null); // 只是为了等下 findviewbuid 而独立拿出来赋给 view list.add(inflater.inflate(R.layout.lay1, null)); list.add(inflater.inflate(R.layout.lay2, null)); list.add(view); myViewPager.setAdapter(new MyPagerAdapter(list)); myViewPager.setOnPageChangeListener(new MyPagerChangeListener()); startButton=(Button) view.findViewById(R.id.start); // 与上面对应,获取这个按钮 startButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(MainActivity.this,Main.class); startActivity(intent); } }); } class MyPagerAdapter extends PagerAdapter { public List<View> mListViews; public MyPagerAdapter(List<View> mListViews) { this.mListViews = mListViews; } @Override public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView(mListViews.get(arg1)); } @Override public void finishUpdate(View arg0) { } @Override public int getCount() { return mListViews.size(); } @Override public Object instantiateItem(View arg0, int arg1) { ((ViewPager) arg0).addView(mListViews.get(arg1), 0); return mListViews.get(arg1); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == (arg1); } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { } @Override public Parcelable saveState() { return null; } @Override public void startUpdate(View arg0) { } } class MyPagerChangeListener implements OnPageChangeListener{ @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub switch (arg0) { // 设置点的颜色 case 0: dot1.setTextColor(Color.WHITE); dot2.setTextColor(Color.BLACK); dot3.setTextColor(Color.BLACK); break; case 1: dot1.setTextColor(Color.BLACK); dot2.setTextColor(Color.WHITE); dot3.setTextColor(Color.BLACK); break; case 2: dot1.setTextColor(Color.BLACK); dot2.setTextColor(Color.BLACK); dot3.setTextColor(Color.WHITE); break; } } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } } } |
每个页面都是一张图片,在 xml 定义好几个 file,再把它们都实例化 inflater 为 view, 加入到 list 中。再把 list 加到适配器 PagerAdapter 中。myViewPager 绑定适配器。OK。已经完成了。运行可以手动滑动转页了。
再下来就是那几个导航的点。
上 XML。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/RelativeLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="fill_parent" android:layout_height="fill_parent"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="72dp" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="." android:textColor="#FFF" android:textSize="100dp" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="." android:textSize="100dp" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="." android:textSize="100dp" /> </LinearLayout> </RelativeLayout> |
这里我用了 RelativeLayout 布局。目的是为了使这几个导航点叠加在页面图片的上面。
可以看到,其实这几个点都是 TextView。
myViewPager 设置监听 OnPageChangeListener,在页面变化的时候这几个 TextView 变一下颜色就可以了。在最后一个页面卡添加多一个按钮 ”开始体验“。到了最后一个,按一按。就可以开始我的 QQ 空间生活咯。完工。
上图。
这里用到的图都是 QQ 空间客户端截取下来的。有点就是。官方那几个导航点竟然是图片来的。不是动态的。~ 呀~
最后那张图那个按钮是我自己加上去的。官方的是继续向右滑动就进入到主界面。额~ 这个不知道怎么实现。求大牛指点
到此结束。欢迎吐槽。其中这里用到的 PagerAdapter 个人还不是很能理解。继续大牛指点指点吗。~~~~ 先继续研究官方 API 去咯。