Android之ViewPager笔记(一)
来源:互联网 发布:一键复制淘宝店铺 编辑:程序博客网 时间:2024/05/19 17:05
像UC浏览器、网易新闻顶部都有一些带图片的新闻,可以通过左右滑动来选取新闻。,其实是通过VIewPager这一个控件来实现的。
具体步骤如下:
(一):假设有4条新闻条目,那我们就创建四个xml文件.注意的是ViewPager这个控件是继承自V4这个包下的,并不是Android原生的那个包,相当于私生子差不多。
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v4.view.ViewPager></RelativeLayout>
下面是其中一个新闻条目,如果有四个那我们就创建四个。
view_pager1.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/a" ></ImageView></LinearLayout>(二):在MainActivity中初始化这些控件,并创建一个集合来存这些图片布局。ViewPager加载图片需要用到适配器,这种时候需要我们自己定义一个适配器,这个适配器需继承自PagerAdapter,继承的时候除了自动生成的getCount()和isViewFromObject()这两个方法,还要添加重写instantiateItem和destroyItem的方法.这里还要知道的是Android在为了提高在使用这些布局的效率的,通常都会用到预加载的方法,就是会在缓存中添加相邻的两个布局的实例,在切换的时候胡删除非相邻的那个布局然后添加新的相邻的布局文件。以下是适配器中一些相关代码:
/* 当前的识图是否和instantiateItem返回的key值是否相同 */ @Override public boolean isViewFromObject(View view, Object object) { return view == object; }
//要展示的View的个数 @Override public int getCount() { return viewList.size(); }
/* 实例化view,并添加到容器中并返回一个与view对应额key值 */ @Override public Object instantiateItem(ViewGroup container, int position) { //从容器中获取当前要展示的视图 View view = viewList.get(position); //将view添加到容器中 container.addView(view); return view; }
/* 销毁条目 */ @Override public void destroyItem(ViewGroup container, int position, Object object) { //super.destroyItem(container, position, object); container.removeView((View)object); }MainActivity:
package com.liaohan.viewpagerdemo1;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import java.util.ArrayList;public class MainActivity extends AppCompatActivity { private ViewPager viewPager; private ArrayList<View> viewList = new ArrayList<View>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager = (ViewPager)findViewById(R.id.viewPager); //初始化View initView(); viewPager.setAdapter(new MyPagerAdapter(viewList)); } private void initView() { //inflate方法是初始化那些非本活动绑定的布局的控件 View view1 = View.inflate(this,R.layout.view_pager1,null); View view2 = View.inflate(this,R.layout.view_pager2,null); View view3 = View.inflate(this,R.layout.view_pager3,null); View view4 = View.inflate(this,R.layout.view_pager4,null); //将这些控件添加到集合中 viewList.add(view1); viewList.add(view2); viewList.add(view3); viewList.add(view4); }}
最终的效果如图:
0 0
- Android之ViewPager笔记(一)
- Android之ViewPager总结(一)
- Android:初级控件之(一)ViewPager(一)
- Android学习笔记(一)——ViewPager滑动监听
- Android之ViewPager(引导界面)(一)
- Android之ViewPager学习笔记(MVP模式)
- Android进阶——ViewPager详解之初识ViewPager(一)
- Android进阶——ViewPager详解之初识ViewPager(一)
- Android学习之ViewPager(一)——ViewPager的简单使用
- Android中的ViewPager(一)
- 一、Android控件选择之ViewPager
- Android开发之ViewPager使用详解(一)
- android开发笔记之viewpager 基本使用方法
- [学习笔记]用户界面优化之Android ViewPager
- android--之笔记(一)
- android常用控件ViewPager(一) ViewPager基本应用
- 【android笔记】之 android studio (一)
- Tab实现之ViewPager(一)
- Javascript 小功能收集
- Oracle数据库的冷备份与恢复
- 这一年
- CSS3 Word-wrap、word-break、white-space
- 制作竖直导航菜单
- Android之ViewPager笔记(一)
- leetcode D1 Hamming Distance
- 二级考试复习随笔
- 读取inputStream中的数据
- 2324: [ZJOI2011]营救皮卡丘
- ELK 聚合查询
- spring入门学习笔记第三课--spring的注入
- 这篇文章为了请教大牛帮忙解决一下现网乱码问题
- 从源码编译TensorFlow出错和解决