【Android UI】ViewPage
2015-08-08 21:20
519 查看
ViewPager是经常用于软件首次登录时的一个控件。跟一般控件一致,listview控件实现的方法,大致如此。
声明控件---->设置数据源----->配置适配器------>绑定适配器------->添加监听。
该类存在于android-support-v4.jar里,故声明viewpage时要加上该坠名:
数据源:
是存放有viewpage的list集合,可以有两种方法进行加载。一种是通过xml文件静态加载(推荐);一种是通过list遍历动态加载背景。
这里为什么推荐xml静态加载?因为xml加载可以有更多的页面排版,使你的页面更精美。
适配器:去继承PageAdapter类。
PagerAdapter有几个必须的类,
MainActivity.java:
ImageAdapterjava;
提供几个xml文件:
main:
完事...
多记住解决问题的思路,应该往哪方面去思考。
多谢网友分享.
声明控件---->设置数据源----->配置适配器------>绑定适配器------->添加监听。
该类存在于android-support-v4.jar里,故声明viewpage时要加上该坠名:
<android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="fill_parent" android:layout_height="fill_parent" />
数据源:
是存放有viewpage的list集合,可以有两种方法进行加载。一种是通过xml文件静态加载(推荐);一种是通过list遍历动态加载背景。
这里为什么推荐xml静态加载?因为xml加载可以有更多的页面排版,使你的页面更精美。
适配器:去继承PageAdapter类。
PagerAdapter有几个必须的类,
@Override public int getCount() {//返回页面数量 return 0; } @Override public boolean isViewFromObject(View arg0, Object arg1) {//判断是否是view对象 return false; } @Override public Object instantiateItem(View container, int position) {//实例化一个页面 return super.instantiateItem(container, position); } @Override public void destroyItem(View container, int position, Object object) {//销毁一个页面 super.destroyItem(container, position, object);
MainActivity.java:
package com.example.day03_viewpage_02; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.media.ImageReader; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.view.Window; import android.widget.Button; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.Toast; public class MainActivity extends Activity implements OnPageChangeListener{ private ViewPager viewpager; private List<View> viewlist; //动态添加 // private int images[]={R.drawable.iewone,R.drawable.viewtwo,R.drawable.viewthree}; private View view1,view2,view3; private int currentIndex = 0;//存放当前页数 private Button statebutton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); initViewPager();//初始化ViewPager } private void initViewPager() { // TODO Auto-generated method stub viewpager = (ViewPager) this.findViewById(R.id.viewpager);//取的ViewPager实例 viewlist = new ArrayList<View>();//实例化list对象. //动态添加 // for(int i=0;i<images.length;i++){ // ImageView imagerview = new ImageView(MainActivity.this); // imagerview.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT)); // imagerview.setScaleType(ScaleType.FIT_XY); // imagerview.setImageResource(images[i]); // viewlist.add(imagerview); // } view1= View.inflate(MainActivity.this, R.layout.activity_one, null); view2= View.inflate(MainActivity.this, R.layout.activity_two, null); view3= View.inflate(MainActivity.this, R.layout.activity_three, null); viewlist.add(view1); viewlist.add(view2); viewlist.add(view3); ImageAdapter adapter=new ImageAdapter(viewlist);//设置适配器 viewpager.setAdapter(adapter);//绑定适配器 viewpager.setOnPageChangeListener(this); } @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 } @Override public void onPageSelected(int position ) {//当页面被选择时,position是当前页面卡数 // TODO Auto-generated method stub if(position ==2){ statebutton = (Button) this.findViewById(R.id.startbutton); statebutton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "欢迎进入我的世界", 5).show(); } }); } } }
ImageAdapterjava;
package com.example.day03_viewpage_02; import java.util.List; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; public class ImageAdapter extends PagerAdapter { private List<View> list; public ImageAdapter(List<View> list){ this.list=list; } @Override public int getCount() {//返回页面卡数量 // TODO Auto-generated method stub if(list.size()!=0){ return list.size(); } return 0; } @Override public boolean isViewFromObject(View arg0, Object arg1) {//判断是否为view对象 // TODO Auto-generated method stub return arg0==arg1; } @Override public Object instantiateItem(ViewGroup container, int position) {//实例化一个页卡,view对象存放在ViewGroup里 container.addView(list.get(position)); return list.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) {//销毁一个页卡 container.removeView(list.get(position)); } }
提供几个xml文件:
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"
tools:context="${relativePackage}.${activityClass}" >
<android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="fill_parent" android:layout_height="fill_parent" />
</RelativeLayout>
完事...
多记住解决问题的思路,应该往哪方面去思考。
多谢网友分享.
相关文章推荐
- leetcode - Unique Paths II
- UIStepper
- UIScrollView 按页面滚动视图 UIPageControl
- POJ2478 Farey Sequence(欧拉函数,打表)
- Pixel Width of the text in a UILabel
- UITableView省市区字典
- UI05_Control(UIStepper加减音量/UIBlurEffect毛玻璃/UISlider滑动/UISegmentedControl小模块)
- [leetcode] Implement Queue using Stacks
- UIButton的一些常用知识点
- [leetcode 234]Implement Queue using Stacks
- UVA 10420 List of Conquests
- UIViewController的生命周期
- UIViewController
- opencv开发之MFC的.SetWindowTextA() + OnTimer(UINT_PTR nIDEvent) +cvNamedWindow 在MFC上显示
- UI中简单的猜数字游戏
- UI, 关灯游戏的实现
- Longest Consecutive Sequence
- android自定义UI模板图文详解
- UIScrollView无法滚动的解决办法
- UITextField