博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ViewPager与PagerAdapter
阅读量:6351 次
发布时间:2019-06-22

本文共 3509 字,大约阅读时间需要 11 分钟。

ViewPager是一个可以用来滑动内部View的组件,他有一个老搭档PagerAdapter,我们这次就来看看他们这两位拍档的本事。

我们要使用ViewPager与PagerAdapter结合

 


 

首先布局文件

<android.support.v4.view.ViewPager

        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

然后实现自己的adapter继承PagerAdapter。实现PagerAdapter的方法

1、public int getCount();  //获取总View的数量

2、public void startUpdate(ViewGroup container)  ;

3、public Object instantiateItem(ViewGroup container, int position)  ; //实例化当前的View,添加到contrainer中,然后返回生成的View或关联的Object (用于在isViewFromObject中检查)

4、public void destroyItem(ViewGroup container, int position, Object object);  //从container中移除指定的View (释放内存)

5、public void finishUpdate(ViewGroup container)  ;

6、 public boolean isViewFromObject(View view, Object object) ;// 检查View是否与一个Object关联,

下面展示一下demo

 

 

package com.example.communityfunction.myView;import java.util.List;import android.animation.Animator;import android.animation.Animator.AnimatorListener;import android.animation.AnimatorSet;import android.animation.ObjectAnimator;import android.app.ActionBar.LayoutParams;import android.content.Context;import android.graphics.Bitmap;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.ImageView;public class ImgViewPagerAdapter extends PagerAdapter{    private List
imgBm; private Context mContext; private ViewPager pager; public ImgViewPagerAdapter(Context context,List
imgBm,ViewPager pager) { this.imgBm=imgBm; this.mContext=context; this.pager=pager; } @Override public int getCount() { return imgBm.size(); } @Override public Object instantiateItem(final ViewGroup container, int position) { ImageView imageView=new ImageView(mContext); imageView.setImageBitmap(imgBm.get(position)); container.addView(imageView,LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT); imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startAnim(); } }); return imageView; }
// PagerAdapter只缓存三张要显示的图片,如果滑动的图片超出了缓存的范围,就会调用这个方法,将图片销毁
@Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View)object); }; @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1; //官方提示写法 } /*      *动画效果      */    public void startAnim()    {        AnimatorSet animSet = new AnimatorSet();        animSet.play(ObjectAnimator.ofFloat(pager, "alpha", 1.0f,0f))        .with(ObjectAnimator.ofFloat(pager, "scaleX",1.0f,0f))        .with(ObjectAnimator.ofFloat(pager, "scaleY",1.0f,0f));        animSet.setDuration(400);        animSet.start();        animSet.addListener(new AnimatorListener() {            @Override            public void onAnimationStart(Animator animation) {}            @Override            public void onAnimationRepeat(Animator animation) {}            @Override            public void onAnimationEnd(Animator animation)             {                pager.setVisibility(View.GONE);            }            @Override            public void onAnimationCancel(Animator animation){}        });    }}

 注意:

在ViewPager 外面嵌套ScrollView 时,发现ViewPager中的元素显示不出来。


解决办法:
在ScrollView节点指定android:fillviewport="true"

转载于:https://www.cnblogs.com/tangZH/p/6123246.html

你可能感兴趣的文章
Citrix Provisioning Services 7.13新功能之PVS加速器
查看>>
python easygui & Tkinter
查看>>
Struts2 配置文件
查看>>
springMVC注意事项
查看>>
postgresql pgpool搭建及高可用简单配置
查看>>
几款公式解析工具的比较
查看>>
使用mke2fs格式化新建分区
查看>>
Go36-29,30-原子操作
查看>>
Java Socket基础(一)
查看>>
SQL中IN和EXISTS用法的区别
查看>>
spring的一个奇技淫巧
查看>>
Ubuntu 12.04 下 安装LibreOffice 版本 3.6.3.2 (编译 ID: 58f22d5)
查看>>
合作将能否成浏览器“可信化”主流?
查看>>
李一男再出发:电动车怎么做?
查看>>
SHOP++第三方支付插件研究
查看>>
STP——生成树协议
查看>>
我的友情链接
查看>>
MySQL8.0 · 优化器新特性 · Cost Model, 直方图及优化器开销优化
查看>>
我的友情链接
查看>>
我的友情链接
查看>>