android ViewPager滑动欢迎界面
16lz
2021-12-04
我们看到很多应用安装后第一次打开时会出现一页一页滑动的欢迎界面,如下所示,下面就来看看实现过程
1、布局
看到这样的应用我们很容易想到它的所用组件和布局方式,就来看布局方式
2、组件
这里主要是ViewPager组件和一些事件,关于组件ViewPager已经在我博客的前面文章已经说过 http://my.oschina.net/helu/blog/141719,下面主要来看OnPageChangeListener事件
看名字可以知道“页面改变事件”,则肯定是类似ViewPager等组件的事件,它有三个必须实现的方法
3、主界面代码
我的博客其它文章列表
http://my.oschina.net/helu
1、布局
看到这样的应用我们很容易想到它的所用组件和布局方式,就来看布局方式
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" 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="match_parent" android:layout_height="wrap_content" android:background="@android:color/white" > </android.support.v4.view.ViewPager> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/viewGroup" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="50.0dp" android:gravity="center" android:orientation="horizontal" > </LinearLayout> </RelativeLayout></FrameLayout>
2、组件
这里主要是ViewPager组件和一些事件,关于组件ViewPager已经在我博客的前面文章已经说过 http://my.oschina.net/helu/blog/141719,下面主要来看OnPageChangeListener事件
看名字可以知道“页面改变事件”,则肯定是类似ViewPager等组件的事件,它有三个必须实现的方法
class ViewPagerPageChangeListener implements OnPageChangeListener { /* * state:网上通常说法:1的时候表示正在滑动,2的时候表示滑动完毕了,0的时候表示什么都没做,就是停在那; * 我的认为:1是按下时,0是松开,2则是新的标签页的是否滑动了 * (例如:当前页是第一页,如果你向右滑不会打印出2,如果向左滑直到看到了第二页,那么就会打印出2了); * 个人认为一般情况下是不会重写这个方法的 */ @Override public void onPageScrollStateChanged(int state) { } /* * page:看名称就看得出,当前页; positionOffset:位置偏移量,范围[0,1]; * positionoffsetPixels:位置像素,范围[0,屏幕宽度); 个人认为一般情况下是不会重写这个方法的 */ @Override public void onPageScrolled(int page, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int page) { //更新图标 for (int i = 0; i < list.size(); i++) { if (page == i) { img[i].setBackgroundResource(R.drawable.page_indicator_focused); } else { img[i].setBackgroundResource(R.drawable.page_indicator); } } } }
3、主界面代码
public class MainActivity extends Activity { private static final String TAG = "test"; private ViewPager viewpager = null; private List<View> list = null; private ImageView[] img = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); viewpager = (ViewPager) findViewById(R.id.viewpager); list = new ArrayList<View>(); list.add(getLayoutInflater().inflate(R.layout.tab1, null)); list.add(getLayoutInflater().inflate(R.layout.tab2, null)); list.add(getLayoutInflater().inflate(R.layout.tab3, null)); img = new ImageView[list.size()]; LinearLayout layout = (LinearLayout) findViewById(R.id.viewGroup); for (int i = 0; i < list.size(); i++) { img[i] = new ImageView(MainActivity.this); if (0 == i) { img[i].setBackgroundResource(R.drawable.page_indicator_focused); } else { img[i].setBackgroundResource(R.drawable.page_indicator); } img[i].setPadding(0, 0, 20, 0); layout.addView(img[i]); } viewpager.setAdapter(new ViewPagerAdapter(list)); viewpager.setOnPageChangeListener(new ViewPagerPageChangeListener()); } class ViewPagerAdapter extends PagerAdapter { private List<View> list = null; public ViewPagerAdapter(List<View> list) { this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(list.get(position)); return list.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(list.get(position)); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } } }
我的博客其它文章列表
http://my.oschina.net/helu
更多相关文章
- Android事件拦截机制
- 【转】推荐--《Android深入浅出》----不错
- 2013.03.19(9)———android xml解析之pull
- 收藏的Android非常好用的组件或者框架。
- 编写自定义的 Android(安卓)Preference 组件
- Android(安卓)UI开发第二十八篇——Fragment中使用左右滑动菜单
- Android之辅助服务上篇————AccessibilityService使用
- 一点见解: Android事件分发机制(三)
- android测试工具大全