为了账号安全,请及时绑定邮箱和手机立即绑定
  • 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
提交
取消
课程须知
本课程需要大家对Android的了解要达到小成的境界: 1、熟悉Android常用API 2、了解Android如何自定义控件 3、了解属性动画
老师告诉你能学到什么?
通过本课程,你将学到: 1、PageTransformer的介绍与使用 2、自定义PageTransformer打造个性动画切换效果 3、属性动画的使用 4、自定义ViewPager实现个性的动画切换效果

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!