-
left.bringToFront()View对象在最前面 viewpage还有这个getPageMargin()方法 JazzViewPager第三方PageView 重写ViewPage的onPageScrolled方法 在其中获取页面,并设置位置,透明度 获取页面: 通过Map<integer,view> 保存页面查看全部
-
ViewPager.setPageTransformer()可以实现切换动画 获取页宽: int pageWidth=view.getWidth() 设置页的属性动画: view.setAlpha() 透明度 view.setScaleX() setScaleY()缩放 view.setTranslationX(pageWidth*0.几) nineoldandroids可以在低版本中代替属性动画查看全部
-
imageView.setScaleType(ScaleType.CENTER_CROP)不变形 去掉标题栏:在setContent之前 requestWindowFeature(Window.FEATURE_NONE)查看全部
-
页面缩小,透明度变化查看全部
-
public void destroyItem(ViewGroup container,int postion,Object object){ container.removeView(mImages.get(position));查看全部
-
直接new PagerAdapter(); 重写方法public Object instantiateItem(ViewGroup container,int positon){ iv.setImageResource(mImageIds[position]); container.addView(iv); // use somewhere return iv;查看全部
-
自定义ViewPager 1.自定义一个MyViewPager,继承自ViewPager 2.修改MainActivity的布局 <com.zhangxt4.welcomeviewpager.MyViewPager 3.思路 要实现自己的ViewPager就要实现其OnPageScrolled(),在page滚动时获取左右两个View,然后对这两个View分别处理。 onPageScrolled(int position, float offset, int offsetPixels){ (1)在页面滚动时,规律总结如下 页面0->1: position = 0; offset = 0~1; offsetPixels = 0~屏幕宽度 页面1->0: position = 0; offset = 1~0; offsetPixels = 屏幕宽度~0 offsetPixels随着offset变化(像素值),offsetPixels = offset*屏幕宽度 页面1->2或2->1时规律相同,只是相应position=1 先将所有的view对应position保存在一个Map中,这样就可以通过position来获取左右的两个view Map<Integer, View> mChildren = new HashMap<>(); mLeftView = mChildren.get(position); mRightView = mChildren.get(position + 1); (2)通过规律借助position来设置梯度值 if (mRightView != null){ //右边view: mScale = 0.6~1 //mTrans = -屏幕宽度~0,因为刚开始rightview应该是往左偏了一个屏幕宽度 mScale = MIN_SCALE + (1-MIN_SCALE) * offset; mTrans = -getWidth() - getPageMargin() + offsetPixels; } if (mLeftView != null){ mLeftView.bringToFront(); }查看全部
-
实现自己的旋转动画 1.需求: A页角度0~-20的旋转动画 B页角度20~0的旋转动画 2.基于上一节笔记里的分析 首先要实现自己的PageTransformer实现类 public class RotatePageTransformer implements ViewPager.PageTransformer { 3.实现自己的transformPage() int pageWidth = view.getWidth(); if (position < -1) { // [-Infinity,-1) } else if (position <= 0) { // [-1,0], 第一页position: 0~-1 // Use the default slide transition when moving to the left page mRot = position * MAX_ROTATE; //0~-20度 ViewHelper.setPivotX(view, pageWidth/2); ViewHelper.setPivotY(view, view.getMeasuredHeight()); ViewHelper.setRotation(view, mRot); } else if (position <= 1) { // (0,1], 第二页position: 1~0 // Fade the page out. mRot = position * MAX_ROTATE; //20~0度 ViewHelper.setPivotX(view, pageWidth/2); ViewHelper.setPivotY(view, view.getMeasuredHeight()); ViewHelper.setRotation(view, mRot); } else { // (1,+Infinity] } 3.MainActivity mViewPager.setPageTransformer(true, new RotatePageTransformer());查看全部
-
兼容3.0以下版本的动画效果 1.实现步骤 (1)添加nineoldandroids库 (2)将DepthPageTransformer(继承ViewPager.PageTransformer)这个动画效果的类的实现全部用ViewHelper来实现 ViewHelper.setAlpha(view, 1); (3)重新实现ViewPager类,因为这是Framework源码,需要自己重写一个;注意将setPageTransformer()中的版本检查关掉(如图) public class ViewPagerCompat extends ViewGroup { 还要注意ViewPagerCompat类中用到的是ViewPager.PageTransformer (4)MainActivity及其布局文件中都改成ViewPagerCompat <com.zhangxt4.welcomeviewpager.ViewPagerCompat 2.研究一下ViewPager用到的PageTransformer实现类(DepthPageTransformer),然后写自己的一个动画 mViewPager.setPageTransformer(true, new DepthPageTransformer()); public class DepthPageTransformer implements ViewPager.PageTransformer { (1)通过添加log将View及其Position打印出来 (2)发现A页->B页滑动的过程中,发生的变化是: A页position:0.0~-1 B页position:1~0.0 (3)再来看一下DepthPageTransformer主要实现函数transformPage()的实现和注释 position分为4中情况: 1)不可见[-Infinity,-1) 2)[-1,0], A页position: 0.0~-1 3)(0,1], B页position: 1~0.0 4)不可见(1,+Infinity] (4)其中的缩放和透明度的变化看代码就明白了 training/animation/screen-slide.html查看全部
-
仅支持3.0以上版本 1.关于ViewPager www.imooc.com/space/notelist/uid/1859625/cid/107/sort/1/coll/1/page/1 2.使用步骤 (1)在layout中使用ViewPager的组件 <android.support.v4.view.ViewPager (2)给ViewPager设置一个Adapter,实现它自己的方法 public class MyPagerAdapter extends PagerAdapter { public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = new ImageView(mContext); imageView.setImageResource(mImgIds[position]); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); container.addView(imageView); mImgViews.add(imageView); return imageView; } (3)设置给ViewPager mViewPager.setAdapter(new MyPagerAdapter(mImgViews, mImgIds, MainActivity.this)); 3.给ViewPager添加动画效果 这里使用了官方的例子:training/animation/screen-slide.html mViewPager.setPageTransformer(true, new DepthPageTransformer()); //mViewPager.setPageTransformer(true, new ZoomOutPageTransformer());查看全部
-
A页切换到B页:A页的position 0.0 ~ -1; B页的position 1 ~0.0查看全部
-
自定义ViewPager 开源JazzViewPager查看全部
-
requestWindowFeature(Window.FEATURE_NO_TITLE); 取消顶部APP标题查看全部
-
要学习和整理动画查看全部
-
container & other查看全部
举报
0/150
提交
取消