展会信息港展会大全

android开发之ViewPager滑动欢迎界面
来源:互联网   发布日期:2015-10-02 17:20:51   浏览:1539次  

导读:我们看到很多应用安装后第一次打开时会出现一页一页滑动的欢迎界面,如下所示,下面就来看看实现过程 1、布局 看到这样的应用我们很容易想到它的所用组件和布局方式,就来看布局方式 FrameLayout x ...

我们看到很多应用安装后第一次打开时会出现一页一页滑动的欢迎界面,如下所示,下面就来看看实现过程

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组件和一些事件,下面主要来看 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;

}

}

}

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港