Android使用viewpager实现画廊式效果
程序员文章站
2022-04-10 16:27:46
本文实例为大家分享了android使用viewpager实现画廊式效果的具体代码,供大家参考,具体内容如下先看一下效果1.创建一个自定义类 zoomoutpagetransformerpublic c...
本文实例为大家分享了android使用viewpager实现画廊式效果的具体代码,供大家参考,具体内容如下
先看一下效果
1.创建一个自定义类 zoomoutpagetransformer
public class zoomoutpagetransformer implements viewpager.pagetransformer { //*控制缩放比例 private static final float max_scale = 1f; private static final float min_scale = 0.8f;//0.85f @override public void transformpage(view page, float position) { if (position <= 1) { float scalefactor = min_scale + (1 - math.abs(position)) * (max_scale - min_scale); page.setscalex(scalefactor); if (position > 0) { page.settranslationx(-scalefactor * 2); } else if (position < 0) { page.settranslationx(scalefactor * 2); } page.setscaley(scalefactor); } else { page.setscalex(min_scale); page.setscaley(min_scale); } } }
2.创建适配器myadapter
public class myadapter extends pageradapter { private int[] mdata; private context mcontext; public myadapter(context ctx, int[] data) { this.mcontext = ctx; this.mdata = data; } @override public int getcount() { return mdata.length;// 返回数据的个数 } @override public object instantiateitem(final viewgroup container, final int position) {//子view显示 view view = view.inflate(container.getcontext(), r.layout.item, null); imageview imageview = view.findviewbyid(r.id.iv_icon); imageview.setimageresource(mdata[position]); imageview.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { toast.maketext(mcontext, "当前条目:" + position, toast.length_short).show(); } }); container.addview(view);//添加到父控件 return view; } @override public boolean isviewfromobject(view view, object object) { return view == object;// 过滤和缓存的作用 } @override public void destroyitem(viewgroup container, int position, object object) { container.removeview((view) object);//从viewpager中移除掉 } }
3.item布局
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <imageview android:id="@+id/iv_icon" android:layout_width="match_parent" android:scaletype="centercrop" android:src="@mipmap/ic_launcher" android:layout_height="match_parent"/> </linearlayout>
4.activity_main布局
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ll_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:clipchildren="false" android:orientation="vertical"> <textview android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="5dp" android:text="viewpager实现画廊效果" android:textcolor="@color/colorprimary"/> <androidx.viewpager.widget.viewpager android:id="@+id/viewpager" android:layout_width="200dp" android:layout_height="300dp" android:layout_gravity="center" android:layout_marginbottom="30dp" android:clipchildren="false" android:layout_margintop="30dp"/> </linearlayout>
5.main_activity
public class mainactivity extends appcompatactivity { private viewpager mviewpager; private linearlayout ll_layout; //向导界面的图片 private int[] mpics = new int[]{r.mipmap.ic_launcher, r.mipmap.ic_launcher, r.mipmap.ic_launcher, r.mipmap.ic_launcher, r.mipmap.ic_launcher}; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); initview(); } private void initview() { mviewpager = (viewpager) findviewbyid(r.id.viewpager); ll_layout = (linearlayout) findviewbyid(r.id.ll_layout); //设置适配器 mviewpager.setadapter(new myadapter(this, mpics)); mviewpager.setpagemargin(20); mviewpager.setoffscreenpagelimit(mpics.length); mviewpager.setpagetransformer(true, new zoomoutpagetransformer());//设置画廊模式 //左右都有图 mviewpager.setcurrentitem(1); //viewpager左右两边滑动无效的处理 ll_layout.setontouchlistener(new view.ontouchlistener() { @override public boolean ontouch(view view, motionevent motionevent) { return mviewpager.dispatchtouchevent(motionevent); } }); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
Android使用ViewFlipper和GestrueDetector共同实现滑屏效果实例
-
Android 使用ViewPager实现左右循环滑动及轮播效果
-
Android使用ViewPager实现屏幕滑动效果
-
Android实现带指示器的自动轮播式ViewPager
-
Android viewpager 3D画廊的实现方法
-
Android UI设计与开发之使用ViewPager实现欢迎引导页面
-
Android ViewPager实现轮播图效果
-
Android使用ViewPager实现顶部tabbar切换界面
-
Android实现单页显示3个Item的ViewPager炫酷切换效果
-
Android使用CountDownTimer实现倒数定时器效果