ViewPager中间大两边小效果的实现
来源:互联网 发布:怎样优化limit 分页 编辑:程序博客网 时间:2024/04/19 00:08
Activity部分:
public class MainActivity extends Activity { private ViewPager mViewPager; private ViewPaperAdapter mVpAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mViewPager = (ViewPager) this.findViewById(R.id.viewpager); List<Integer> imageIds = new ArrayList<Integer>(); imageIds.add(R.drawable.image01); imageIds.add(R.drawable.image02); imageIds.add(R.drawable.image03); mVpAdapter = new ViewPaperAdapter(this, imageIds); mViewPager.setOffscreenPageLimit(3); mViewPager.setAdapter(mVpAdapter);// 这个值主要负责两边控件与中间控件的距离 mViewPager.setPageMargin(-300); mViewPager.setPageTransformer(false, new DepthPageTransformer()); }}
适配器部分:
public class ViewPaperAdapter extends PagerAdapter { private Context mContext; private List<Integer> mImageIds; /** * @param mainActivity * @param integers */ public ViewPaperAdapter(Context context, List<Integer> imageIds) { this.mContext = context; this.mImageIds = imageIds; } @Override public int getCount() { return this.mImageIds.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView((View) object); } @Override public Object instantiateItem(View container, int position) { ImageView image=new ImageView(mContext); image.setImageResource(mImageIds.get(position)); image.setScaleType(ScaleType.FIT_XY); image.setPadding(200, 80, 200, 80); ((ViewPager) container).addView(image); return image; }}
效果部分:
@TargetApi(Build.VERSION_CODES.HONEYCOMB)public class DepthPageTransformer implements PageTransformer { private static final float MIN_SCALE = 0.5f; private static final float MIN_ALPHA = 0.8f; @TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("NewApi") public void transformPage(View view, float position) { if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setScaleY(MIN_SCALE); view.setAlpha(MIN_ALPHA); } else if (position == 0) { // [-1,0] // Use the default slide transition when moving to the left page view.setScaleY(MIN_SCALE); view.setAlpha(MIN_ALPHA); } else if (position <= 1) { // (0,1] // Fade the page out. // Counteract the default slide transition // Scale the page down (between MIN_SCALE and 1) float scaleFactor = MIN_SCALE + (1 - MIN_SCALE)* (1 - Math.abs(position)); float alphaFactor = MIN_ALPHA + (1 - MIN_ALPHA)* (1 - Math.abs(position)); view.setScaleY(scaleFactor); view.setAlpha(alphaFactor); } else { // (1,+Infinity] // This page is way off-screen to the right. view.setScaleY(MIN_SCALE); view.setAlpha(MIN_ALPHA); } }}
xml布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffff00" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="100dp" android:paddingRight="100dp" /></LinearLayout>
0 0
- ViewPager中间大两边小效果的实现
- UICollectionViewCell水平缩放,中间大两边小效果的实现
- ViewPager 实现 Galler 效果, 中间大图显示,两边小图展示
- ViewPager 实现 Galler 效果, 中间大图显示,两边小图展示(优化篇)
- ViewPager实现Gallery的画廊效果 突显中间 虚化两边的界面
- 用gallery展示图片,实现中间图片稍大,两边较小的效果
- ViewPager 实现 GallerView 效果, 显示左右两边
- 实现一个EditText中间有字,字两边都可点击触发事件的效果
- Android 实现 按钮从两边移到中间动画效果
- RecycleView实现Gallery画廊效果,中间放大两边缩小
- CSS伪类实现中间文字两边横线效果
- ViewPager 实现 GallerView 效果, 显示左右两边
- 如何实现两边固定,中间自适应的三栏布局?
- 中间文字,两边横线(纯css实现的哦)
- 用伪类实现 两边横线、中间标题的样式
- ViewPager 实现 GallerView 效果, 显示左右两边 ViewPager Transform 使用详解
- FancyCoverFlow——一个页面显示多张图片,中间大,两边小
- Android实现按钮从两边移到中间动画效果(网上整理)
- 如何使用Fiddler实现跨域访问(把自己做的静态HTML页面域名变成api.bing.com)
- picasso 缓存位置
- Android学习开发中碰到的问题记录
- c#正则表达式
- 学习IOS的一些网站
- ViewPager中间大两边小效果的实现
- 【C语言】了解一些常用的预处理标识符
- oracle数据类型
- android 系统基本架构-软件层次
- ConcurrentHashMap总结
- 作文 —— 诙谐、幽默、调侃
- EditText 键盘控制
- 用十条命令在一分钟内检查Linux服务器性能
- 2016.10.17回顾