Android常用控件之ViewPager
来源:互联网 发布:淘宝免费送衣服返现 编辑:程序博客网 时间:2024/06/06 01:03
概述
ViewPager并不在android的官方包中,而在第三方jar包support.V4.jar中。写一个pagerview同样要用到自定义adapter,继承于pagerAdapter。adapter中需要实现四个方法:destroyItem(ViewGroup container, int position, Object object)、getCount()、instantiateItem(ViewGroup container, int position)、isViewFromObject(View arg0, Object arg1)。
内容
主活动
public class MainActivity extends Activity { private ViewPager mViewPager; private LayoutInflater mInflater; private View view1; private View view2; private View view3; private List<View> mViews; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mViewPager = (ViewPager)findViewById(R.id.viewPager); mViews = new ArrayList<>(); mInflater = getLayoutInflater(); view1 = mInflater.inflate(R.layout.newpager1, null); view2 = mInflater.inflate(R.layout.newpager2, null); view3 = mInflater.inflate(R.layout.newpager3, null); mViews.add(view1); mViews.add(view2); mViews.add(view3); MyPagerAdapter adapter = new MyPagerAdapter(mViews); mViewPager.setAdapter(adapter); }}
public class MyPagerAdapter extends PagerAdapter{ private List<View> mViews; public MyPagerAdapter(List<View> mViews) { super(); this.mViews = mViews; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mViews.get(position)); } @Override public int getCount() { return mViews.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { View view = mViews.get(position); container.addView(view); if(position==1){ Button button = (Button) view.findViewById(R.id.button_pager); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(),"点击按钮", Toast.LENGTH_SHORT).show(); //v.getContext()得到活动 } }); } return view; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1; }}
布局
<LinearLayout 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:background="#88ff88" android:gravity="center" android:orientation="vertical" tools:context="com.chu.helloworld.MainActivity" > <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"/></LinearLayout>
newpager1
<?xml version="1.0" encoding="UTF-8"?><LinearLayout 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" > <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/dog"/></LinearLayout>
newpager2
<?xml version="1.0" encoding="UTF-8"?><LinearLayout 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" > <Button android:id="@+id/button_pager" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="button" android:gravity="center"/></LinearLayout>
newpager3
<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:gravity="center" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30dp" android:text="我是第三页"/></LinearLayout>
结果演示:
pagerTabStrip、注位点、和伪循环滑动的添加:
常用方法有:
setBackgroundColor():设置背景色;
setTabIndicatorColor:设置tabIndicator的颜色;
setTextColor:设置文本颜色。
布局文件activity_main
<RelativeLayout 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:background="#88ff88" android:gravity="center" tools:context="com.chu.helloworld.MainActivity" > <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.PagerTabStrip android:id="@+id/pager_tap_tripe" android:layout_width="match_parent" android:layout_height="wrap_content"/> </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/linearlayout_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center" android:layout_alignParentBottom="true"> </LinearLayout></RelativeLayout>
MainActivity中需要修改一些地方地方:
MainActivity:
package com.chu.helloworld;import java.util.ArrayList;import java.util.List;import com.chu.helloworld.adapter.MyPagerAdapter;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.provider.Settings.SettingNotFoundException;import android.support.v4.view.PagerTabStrip;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;public class MainActivity extends Activity { private ViewPager mViewPager; private LayoutInflater mInflater; private View view1; private View view2; private View view3; private List<View> mViews; private LinearLayout mLinearLayoutContainer; private List<ImageView> mPoints; private PagerTabStrip mPagerTabTrip; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mViewPager = (ViewPager)findViewById(R.id.viewPager); mViews = new ArrayList<>(); mInflater = getLayoutInflater(); view1 = mInflater.inflate(R.layout.newpager1, null); view2 = mInflater.inflate(R.layout.newpager2, null); view3 = mInflater.inflate(R.layout.newpager3, null); mLinearLayoutContainer = (LinearLayout) findViewById(R.id.linearlayout_container); mPoints = new ArrayList<>(); mPagerTabTrip = (PagerTabStrip) findViewById(R.id.pager_tap_tripe); mPagerTabTrip.setBackgroundColor(Color.BLUE); mPagerTabTrip.setTabIndicatorColor(Color.CYAN); mPagerTabTrip.setTextColor(Color.LTGRAY); mViews.add(view1); mViews.add(view2); mViews.add(view3); for(int i=0;i<mViews.size();i++){ ImageView iv = new ImageView(this); iv.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)); iv.setPadding(7, 7, 7, 7); iv.setImageResource(R.drawable.point_normal); mPoints.add(iv); mLinearLayoutContainer.addView(iv); } mPoints.get(0).setImageResource(R.drawable.point_select); MyPagerAdapter adapter = new MyPagerAdapter(mViews); mViewPager.setAdapter(adapter); mViewPager.addOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { for(ImageView iv:mPoints){ iv.setImageResource(R.drawable.point_normal); } mPoints.get(arg0%mViews.size()).setImageResource(R.drawable.point_select); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); mViewPager.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2%mViews.size()); }}
MyPagerAdapter中也有改变
package com.chu.helloworld.adapter;import java.util.List;import com.chu.helloworld.R;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.Toast;public class MyPagerAdapter extends PagerAdapter{ private List<View> mViews; private String titles[] = {"页面1","页面2","页面3"}; public MyPagerAdapter(List<View> mViews) { this.mViews = mViews; } @Override public CharSequence getPageTitle(int position) { return titles[position%titles.length]; } @Override public void destroyItem(ViewGroup container, int position, Object object) { //container.removeView(mViews.get(position)); } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public Object instantiateItem(ViewGroup container, int position) { View view = mViews.get(position%mViews.size()); if(view.getParent()!=null){ container.removeView(view); } container.addView(view); if(position%mViews.size()==1){ Button button = (Button) view.findViewById(R.id.button_pager); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(),"点击按钮", Toast.LENGTH_SHORT).show(); //v.getContext()得到活动 } }); } return view; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1; }}
结果演示:
0 0
- Android常用控件之ViewPager
- Android常用控件之ViewPager的使用
- android控件之ViewPager
- Android引用控件之ViewPager
- android常用组件之ViewPager
- Android常用复杂控件使用(一)--ViewPager
- android常用的控件ViewPager的使用
- android常用控件ViewPager(一) ViewPager基本应用
- android常用控件ViewPager(二) ViewPager与Fragment
- 一、Android控件选择之ViewPager
- Android开发之自定义控件--ViewPager
- Android开发之自定义控件--ViewPager
- Android--多页面管理控件之ViewPager
- Android常用控件之SoundPool
- Android常用控件之:SeekBar
- Android常用控件之AlertDialog
- Android常用控件之ProgressDialog
- Android常用控件之EditText
- C++11(std::thread)
- iOS开发之指定UIView的某几个角为圆角
- pushViewController/presentModalViewController/addSubView区别及使用方法
- Linux解压 压缩
- Android ant 编译 apk文件名含版本号
- Android常用控件之ViewPager
- 13..[UIApplication sharedApplication].keyWindow,遇到的问题
- 573B - Bear and Blocks
- 字符串转码
- php利用zendframework编程实例
- MFC截屏、绘制并复制到剪切板
- python 基于dns 轮询的业务检测
- LinkedIn架构这十年
- Oracle使用笔记(1)