ViewPager实现Gallery的画廊效果 突显中间 虚化两边的界面
来源:互联网 发布:广联达算量软件下载 编辑:程序博客网 时间:2024/05/01 18:52
昨天在项目中需要完成一个滑动切换投资标的需求
百度了很多都不是很理想,后面通过结合几个前辈的经验,写了一个符合要求的Demo
下面就总结一下:
首先布局文件,需要注意的是在Relatilayout和viewpager中必须要设置
android:clipChildren="false"
具体代码:
<?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:layout_width="match_parent" android:layout_height="match_parent" android:clipChildren="false" android:id="@+id/rl_content" tools:context="com.gellarydemo.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/vp_content" android:layout_width="500px" android:layout_height="650px" android:layout_centerInParent="true" android:clipChildren="false" /></RelativeLayout>
然后在MainActivity中的代码
public class MainActivity extends AppCompatActivity { private ViewPager mVpcontent; private RelativeLayout mRlcontent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mVpcontent = (ViewPager) findViewById(R.id.vp_content); mRlcontent = (RelativeLayout) findViewById(R.id.rl_content); initView(); } private void initView() { mVpcontent.setAdapter(new HomeContentAdapter(this)); mVpcontent.setOffscreenPageLimit(3); //设置page之间的距离 mVpcontent.setPageMargin(10); //设置缩放及透明度 mVpcontent.setPageTransformer(true, new ScalePageTransformer()); //监听viewpager滑动,在page滑动的时候一直去更新界面 mVpcontent.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { if (mVpcontent != null) { mVpcontent.invalidate(); } } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); mRlcontent.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // 这是让整个View随着触摸而滑动 return mVpcontent.dispatchTouchEvent(event); } }); }}
Adapter中的代码
public class HomeContentAdapter extends PagerAdapter { private static final String TAG = "HomeContentAdapter"; private Context mContext; private int[] datas ={R.mipmap.guide01,R.mipmap.guide02,R.mipmap.guide03,R.mipmap.guide01,R.mipmap.guide02,R.mipmap.guide03}; public HomeContentAdapter(Context context) { mContext = context; } @Override public int getCount() { return datas.length; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = new ImageView(mContext); imageView.setImageResource(datas[position]); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); }}
ScalePageTransformer中的代码
public class ScalePageTransformer implements ViewPager.PageTransformer { private static final String TAG = "ScalePageTransformer"; public static final float MAX_SCALE = 1.0f; public static final float MIN_SCALE = 0.8f; @Override public void transformPage(View page, float position) { if (position < -1) { position = -1; } else if (position > 1) { position = 1; } float tempScale = position < 0 ? 1 + position : 1 - position; float slope = (MAX_SCALE - MIN_SCALE) / 1; //一个公式 float scaleValue = MIN_SCALE + tempScale * slope; //设置缩放比例 page.setScaleX(scaleValue); page.setScaleY(scaleValue); //设置透明度 page.setAlpha(scaleValue); }}
可以自己设置缩放比例及透明度 还有page之间的距离
1 0
- ViewPager实现Gallery的画廊效果 突显中间 虚化两边的界面
- RecycleView实现Gallery画廊效果,中间放大两边缩小
- ViewPager中间大两边小效果的实现
- Android 使用ViewPager实现类似gallery画廊的效果(画廊效果之ViewPager显示多个图片)
- 【转】Android 使用ViewPager实现类似gallery画廊的效果(画廊效果之ViewPager显示多个图片)
- Gallery实现ViewPager的页面切换效果、以及实现图片画廊效果
- 用gallery展示图片,实现中间图片稍大,两边较小的效果
- 基于ViewPager实现Gallery画廊效果
- 利用ViewPager实现画廊Gallery效果
- ViewPager+TimerTask实现Gallery画廊效果
- ViewPager实现简单的画廊效果
- RecycleView实现的Gallery画廊效果(图片制作成圆角)
- Android开发学习之基于ViewPager实现Gallery画廊效果
- Android开发学习之基于ViewPager实现Gallery画廊效果
- Android画廊效果-Gallery和ViewPager不同实现
- 漂亮的viewpager画廊效果
- UICollectionViewCell水平缩放,中间大两边小效果的实现
- viewPager实现画廊效果,中间显示一张,两侧显示一部分
- 第五届_李白打酒
- 51NOD算法马拉松11 B君的竞技场
- 图像验证码识别(八)——字符归一化
- 模式识别相似性测度距离计算---欧式距离
- 骑士问题
- ViewPager实现Gallery的画廊效果 突显中间 虚化两边的界面
- Android自定义View控件
- Android Studio——Android Studio更新升级方法
- Android仿美团筛选菜单
- cntk学习日志(一)
- JS三级可折叠菜单实现方法
- JAVA之DecimalFormat的用法---用户格式化数据
- Android逆向分析基础-静态分析Android程序
- 图像验证码识别(九)——训练和识别