展会信息港展会大全

android开发中设置viewpager滑动事件,实现导航点滚动
来源:互联网   发布日期:2015-10-02 17:19:41   浏览:2992次  

导读:此处为显示的布局:LinearLayout xmlns:android=http: schemas android com apk res androidandroid:layout_width=match_parentandroid:layout_height=match_parentandroid:orientation=vertical Re ...

此处为显示的布局:

<LinearLayout xmlns:android= http://schemas.android.com/apk/res/android

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<RelativeLayout

android:layout_width="match_parent"

android:layout_height="match_parent" >

<android.support.v4.view.ViewPager

android:id="@+id/navigation_page"

android:layout_width="fill_parent"

android:layout_height="fill_parent" />

<LinearLayout

android:id="@+id/viewGroup"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:layout_marginBottom="40dp"

android:gravity="center_horizontal"

android:orientation="horizontal" >

</LinearLayout>

</RelativeLayout>

此处为ViewPager中显示的布局:

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android= http://schemas.android.com/apk/res/android

android:layout_width="match_parent"

android:layout_height="match_parent" >

<ImageView

android:id="@+id/img_navigation_page"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:scaleType="fitXY"/>

<RelativeLayout

android:layout_width="match_parent"

android:layout_height="match_parent" >

<ImageView

android:id="@+id/img_cancel"

android:layout_width="25dp"

android:layout_height="25dp"

android:layout_alignParentRight="true"

android:src="@drawable/ic_btn_chat_text" />

<Button

android:id="@+id/btn_enter"

android:layout_width="80dp"

android:layout_height="30dp"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:layout_marginBottom="80dp"

android:background="@drawable/invite_btn_bg"

android:text="@string/trend_navigation"

android:textColor="@color/red"

android:textSize="15sp"

android:visibility="invisible" />

</RelativeLayout>

代码部分:

/* 装分页显示的view的数组 /

private ArrayList<View> pageViews;

private ImageView imageView;

/** 将小圆点的图片用数组表示 */

private ImageView[] imageViews;

// 包裹小圆点的LinearLayout

private LinearLayout mViewPoints;

//初始化要显示的页面,添加到view集合中

private void init(Context context) {

// 将要分页显示的View装入数组中

pageViews = new ArrayList<View>();

pageViews.add(inflater.inflate(R.layout.trend_descript_navigation_item,

null));

pageViews.add(inflater.inflate(R.layout.trend_descript_navigation_item,

null));

pageViews.add(inflater.inflate(R.layout.trend_descript_navigation_item,

null));

pageViews.add(inflater.inflate(R.layout.trend_descript_navigation_item,

null));

pageViews.add(inflater.inflate(R.layout.trend_descript_navigation_item,

null));

pageViews.add(inflater.inflate(R.layout.trend_descript_navigation_item,

null));

}

//初始化显示的控件,有viewpager和显示导航点的linearlayout

private void initView(Context context,View v) {

// 创建imageviews数组,大小是要显示的图片的数量

imageViews = new ImageView[pageViews.size()];

// 实例化小圆点的linearLayout和viewpager

mViewPoints = (LinearLayout) v.findViewById(R.id.viewGroup);

mViewPager = (ViewPager) v.findViewById(R.id.navigation_page);

// 添加小圆点的图片

for (int i = 0; i < pageViews.size(); i++) {

imageView = new ImageView(context);

// 设置小圆点imageview的参数

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(

10, 10);

layoutParams.setMargins(5, 0, 5, 0);

imageView.setLayoutParams(layoutParams);// 创建一个宽高均为20 的布局

// 将小圆点layout添加到数组中

imageViews[i] = imageView;

// 默认选中的是第一张图片,此时第一个小圆点是选中状态,其他不是

if (i == 0) {

imageViews[i]

.setBackgroundResource(R.drawable.indicator_normal_pressed);

} else {

imageViews[i]

.setBackgroundResource(R.drawable.indicator_normal);

}

// 将imageviews添加到小圆点视图组

mViewPoints.addView(imageViews[i]);

}

// 设置viewpager的适配器和监听事件

mViewPager.setAdapter(new NavigationPageAdapter());

mViewPager.setOnPageChangeListener(new NavigationPageChangeListener());

}

//设置要显示的pageradapter类

private class NavigationPageAdapter extends PagerAdapter {

// 销毁position位置的界面

@Override

public void destroyItem(View v, int position, Object arg2) {

((ViewPager) v).removeView((View) arg2);

}

// 获取当前窗体界面数

@Override

public int getCount() {

return pageViews.size();

}

// 初始化position位置的界面

@Override

public Object instantiateItem(View v, int position) {

View contentView = pageViews.get(position);

/**

*显示页面的相关操作

**/

((ViewPager) v).addView(contentView, 0);

return pageViews.get(position);

}

@Override

public boolean isViewFromObject(View v, Object arg1) {

return v == arg1;

}

@Override

public void startUpdate(View arg0) {

}

@Override

public int getItemPosition(Object object) {

return super.getItemPosition(object);

}

}

//设置viewpager滑动的事件,实现导航点的滚动

private class NavigationPageChangeListener implements OnPageChangeListener {

@Override

public void onPageScrollStateChanged(int arg0) {

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

}

@Override

public void onPageSelected(int position) {

for (int i = 0; i < imageViews.length; i++) {

imageViews[position]

.setBackgroundResource(R.drawable.indicator_normal_pressed);

// 不是当前选中的page,其小圆点设置为未选中的状态

if (position != i) {

imageViews[i]

.setBackgroundResource(R.drawable.indicator_normal);

}

}

}

}

赞助本站

人工智能实验室

相关热词: 滑动事件 viewpager android

AiLab云推荐
展开

热门栏目HotCates

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