Android13_fragment_view动画_属性动画

1,fragment:片段,碎片

应用场景:微信,微博的导航栏

1.1从3.0之后的系统引进的控件,代表的是屏幕的一部分,因为以往在手机上的绘制控件问题不大,但是如果是平板界面,每次绘制大量的控件对资源消耗很大,会引起卡顿

fragment允许屏幕先更新界面的一部分,是界面的一部分

点击声音才显示声音的ui界面,点击存储才显示出存储的界面,但是并不是在页面跳转,而是布局文件的切换,点击切换布局文件,通过模块化来使用

FrameLayout布局和fragment最相配,因为它渲染速度最快,效率最高

1.2,fragment入门(模仿上面的平板界面创建一个主界面)

(0)定义主界面布局,个体fragment分配一块显示空间

①创建一个类,继承Fragment(API11之后才可以使用),它是一个轻量级的activity,不需要再清单文件里定义

②创建对应的 fragement布局文件

③重写onCreateView()方法,返回一个View对象

通过inflater(方法上传入的参数).inflate(资源文件,null),返回这个view

(view.inflate底层调用的是inflater.inflate(xxxx) 方法)

④在MainActivity中创建继承类的对象

extendfragment ef =new  extendfragment();

//获取管理器

FragementManager fm = getFragementManager()

//通过管理器获取fragment事务,因为一个界面要么全部更新成功,要么全部一起失败

FragmentTransaction ft = fm.getbeginTransaction();

//替换的方法,一个fragement替换另一个fragement

ft.replace(分配的显示区域控件id,继承的fragment);

//还有add 的方法,把fragement叠加上去

Ft.comit();//提交

额外:①不能直接通过findViewByid()初始化控件,而要通过inflater.inflate()返回的view去find;

这种方式的好处:主界面和子界面的业务功能分离,模块化,方便后期维护,内部耦合性强

②如果有多个fragement可以考虑把中间获取管理器到提交抽取出去,然后传入不同fragement继承类即可(都是继承fragement可以把参数定义为fragement)

③事务只对一次操作有用,comit()一次之后,下一次更新界面必须重新创建事务

1.3 fragment和activity的通信

需求,在fragment继承类里拿到activity主界面中的输入的值或其它值

在fragment中可以getActivity().findViewByid(XXXid);获取对应的控件

//getActivity()获取它挂载的activity

需要上下文可以沟通过getActivity();获取上下文

fragment之间可以通过Activity中转.

1.4 fragment的生命周期(算是一块小的activity)跟activity的生命周期差不多一致

Oncreate(),onDestory(),onStart(),onStop(),onResume(),onPause();

不过它没有setContentVIew(),有的是onCreateView()(重要);

如果是被replace切换掉,相当于是走销毁的三个方法:onstop),onPause(),onDestory()

1.5 fragment的向下兼容(它有两个包app包,4.0以后才有,v4包兼容api为4的版本)

欺骗eclipse编译器:在不修改代码的前提下修改最低版本,编译器就不会检查代码.

Supportx.jar 向下兼容的jar包//低版本的手机想使用高版本的东西就要引入supportx.jar包

但是这样兼容的jar包,使用方式是有所不同的

使用api为4的jar包中的fragment 时候

getFragmentManager()这个方法是没有的.继承activity的时候使用FragementActivity

然后再通过getSupportFragementManager().beginTransaction();获取管理器和事务

之后就跟上面是一样的

这种向下兼容的写法在高版本中是可以使用的,只要导入了对应的supportx.jar包即可

2.View动画

定义一个按钮并放置imageView控件做动画演示

定义几个按钮做具体的动画,透明度alpha,位移trans,缩放scale,旋转动画rotate

2.1透明度变化的动画api  AlphaAnimation aa = new (开始透明度(0.0完全透明),结束透明度(1.0完全不透明))

aa.setDuration(2000);//动画播放的时间长度

aa.setRepeatCount(2);//重复播放n+1次,Animation.INFINITE//循环次数

aa.setRepeatMode(aa.RESTART(正序)/aa.REVERSE(每一播放之后倒序));//重新播放的模式

Iv(对应的控件).startAnimation(aa);//开始播放动画

2.2位移变化的动画api:TranslateAnimation ta = new (1,2,3,4,5,6,7,8);

①开始位置的参照物:本身的控件,手机屏幕都可以做参照物,Ainmation.RELATIVE_TO_PARENT(参考父窗体的X轴)RELATIVE_TO_SELF(相对于自己本身)(可以看做开始的位置)

②为0即可,参考系的比例值

③移动位置的参照物:Animation.RELATIVE_TO_PARENT

④移动的距离 200//代表的不是像素,代表的是父窗体宽度的200倍!(跑的飞起)

⑤-⑧对应的Y轴参数

//其它的等同于设置透明度的动画

2.3,缩放的动画

缩放动画的 API:ScaleAnimation sd = new (1,2,3,4,5,6,7,8);

1,X水平方向缩放的比例

2,X水平方向放大的比例

3-4 Y的缩小和放大

5 X轴缩放的中心点

6 X轴缩放的比例

7-8  Y轴的中心点和比例

其它类似透明度的4个参数设置

2.4 旋转RotateAnimation ra = new (开始角度,结束角度)//默认以本身控件左上方为原点

还有一个构造方法可以设置参照系

其它参数:播放单次时间长度,重复播放的次数,播放的模式,

开始播放

2.5.组合动画播放

上面介绍的动画可以放到一个集合里

动画集合的api :AnimationSet set = new ( boolean 如果为true都使用这个动画集合的插入器,如果为false,就使用它自己的插入器,或者说是模式)

set.addAnimation(动画);//把对应的子动画加进来

3.xml文件定义动画

创建一个动画文件夹,anim,创建对应的xml文件(有默认根节点alpha ,rotate 等)

alpha.xml中 alpha标签

属性: fromAlpha ,toAlpha 开始结束的透明度(不需要带单位float强转)

Duration :播放时间,repeatCount:infinte 一直重复播放,repeatMode:播放模式

translate的xml文件中translate标签中

fromXDelta=参照物坐标系(0)

toXDelta = (0几乎没有移动,100%相对于它自己100%p相对应父窗体)

Scale 标签中pivotX ,pivotY 指定中心点的坐标(都设置50%代表它自身的中心)

Animation aa = AnimationUtils.loadAnimation(this,R.anim. 对应的文件)

iv.startAnimation(aa)

在代码中要使用这个资源文件:通过工具类获取

set动画集合xml文件的设置:不能直接引入,要把其它几个xml文件中的内容复制过来.

动画播放完毕会恢复原来的样式,在这些xml文件的标签属性中有一个fillAfter = true就会保持最后变化的效果,而不是变化会原来的样子

动画的构造方法参数,时长,循环次数,播放模式也是一样的在对应xml文件中设置.

4 View动画的细节问题:

打开开发者选项可以选择显示触摸操作

在使用位移动画的时候,设置的点击事件只有在点击原始位置才有效,点击移动的动画无效.view动画本质上位置是没有改变的,看到的移动只是系统绘制的,通过矩阵变化,而不是ImageView实际的位置.

5,属性动画(3.0,api11之后才引进的)

5.1

属性,字段,成员变量的区别

如果直接声明私有的变量,而不提供公共的访问方式,就仅仅是成员变量

如果提供了公共的访问方式,那么就可以把这个成员变量理解为属性(只要view动画的成员变量有setget方法,就可以用属性动画进行播放)

//对imageView进行动画设置,

iv.setTranslationX()

iv.getTranslationX() //这两个 setget方法可以把平移的成员变量变成属性

ObjectAnimatior oa = ObjectAnimatior.ofFloat(修改的对象(view对象),属性的名称(translationx),可变参数)

Translationx 平移位置:像素点

可变参数float数组,这里可以new一个数组,也可以传入多个float数

oa.setDuration(2000);//动画播放的时间长度

oa.setRepartCount(ObjectAnimator.INFINITE)//这里用ObjectAnimatior

oa.setRepartMode(ObjectAnimator.RESTART(2))

Oa.start()//开始播放动画,移动的过程会按float数组进行移动

//属性动画的移动是可以被点击的,它不仅有动画效果,还把imageView控件进行了移动.

5.2 额外( 只要Imageview控件中的alpha,scale,translation,rotate(Rotation)之类的成员变量有setget方法就可以用属性动画)

setXXType可以设置参照系

注意:是imageView的属性,而不是AlphaAnimation中的属性,并且属性名称开头是小写的

RotateX属性,按X轴进行旋转,RotateY,按Y轴为中心旋转(可以看做3D的效果)

Alpha 透明度变化,ObjectAnimatior.ofFloat(修改的view对象,属性的名称,可变参数(透明度的变化))

动画的集合:如果是属性动画,播放一个set很简单,定义两个单独的属性动画,然后同时调用start()方法就可以一起进行播放了.

希望按对角线进行位移移动,定义两个位移属性动画,一个控制X轴,一个控制Y轴

AnimatiorSet set = new AinmatiorSet()//定义动画的合集

set.playSequentially(Animatior的可变参数)//按顺序播放,playTogether()//一起播放

set.start()//开始播放

5.3 xml定义属性动画

创建一个文件夹animator属性动画文件夹

创建一个animator为根节点的属性动画

在 animator中有propertyName属性 可以指定对应的属性名称,但是在这里就没有可变参数了,例如alpha透明度的属性, 就直接指定valueFrom开始的透明度和valueTo结束的透明度

代码中使用方式:把一个动画资源转换成动画对象

Animator animator = AnimatorInflater.LoadAnimator(this,R.animator.文件id);

animator.setTarget(iv) //指定播放的控件

animator.start(); //开始播放

如果要属性动画的集合,就创建子节点为set的XML文件,把需要一起播放的animator节点放进去即可(按顺序放即可,一个animator节点对应一个动画效果)

使用属性动画,还是推荐用代码实现,因为使用可变参数float数组变化的更灵话一些,资源文件中只能写初始和结束,相比较之下没有那么的精细

6 应用程序的反编译

apk在对应项目的bin目录下.apk文件本质上就是一个zip文件

解压之后清单和布局文件都是一堆乱码,因为在生成apk文件的时候就进行了加密.

工具 安卓反编译助手:需要配置java环境变量,要求jdk7以上(我的电脑有问题用不了,暂时未修复)

posted on 2016-06-06 23:52 抓根宝 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/adventurer/p/5565598.html

Android13_fragment_view动画_属性动画相关推荐

  1. 面试:Android补间动画、属性动画的原理

     Q1:属性动画相关基础概念: Android属性动画(一)-- 属性动画的基本使用_Marck的博客-CSDN博客_android 属性动画 Android属性动画(二)-- 插值器和估值器_Mar ...

  2. Android 三种动画 (帧动画 、补间动画、属性动画)

    1.帧动画 帧动画是依次展示n张静态图片,造成动画的错觉,类似看视频一样. 使用方式 在drawable目录下定义XML文件,根节点为animation-list,然后放入定义更好的图片 onesho ...

  3. 【Android 属性动画】属性动画 Property Animation 与 视图动画 View Animation 区别

    文章目录 一.动画效果添加对象 二.动画效果类型 三.动画效果与实际属性 四.开发复杂程度 属性动画 Property Animation 可以为 任何对象 ( View 对象 / 非 View 对象 ...

  4. 【Android 属性动画】属性动画 Property Animation 简介 ( 属性动画简介 | 属性动画特性 )

    文章目录 一.属性动画简介 二.属性动画特性 一.属性动画简介 属性动画简介 : 1.动画制作框架 : 属性动画系统 , 允许你 将任何可变的操作制作成动画 , 其功能很强大 ; 2.基本功能 : 使 ...

  5. android 从底部网上的平移动画_Android属性动画,看完这篇够用了吧

    转载自作者新小梦 随着APP的开发周期演进,APP不再满足基础的功能保障,需要有较好视觉体验和交互操作.那么动画效果是必不可少的,动画有帧动画,补间动画,属性动画等等. 本文通过一些简单常见的动画效果 ...

  6. android组合动画还原,Android - Fragment,View动画,组合动画,属性动画

    转载请注明出处:https://blog.csdn.net/mythmayor/article/details/72876871 1.什么是Fragment 片段,碎片 * 从Android 3.0 ...

  7. android 属性动画还原,属性动画和补间动画

    动画的分类 今天我们将会探讨动画的学习,Android的动画分成三类 1. Tween Animation(补间动画.视图动画):通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生的动画效果,即 ...

  8. Android开发笔记(九十六)集合动画与属性动画

    集合动画AnimationSet 补间动画有四大类:透明度动画AlphaAnimation.旋转动画RotateAnimation.缩放动画ScaleAnimation.平移动画TranslateAn ...

  9. 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓动画全解:补间动画(视图动画).布局动画.属性动画.逐帧动画. 主要内容包含:动画Animation属性.Alpha属性.Scale属性.Tran ...

  10. Android -- 三种动画(帧动画、View动画、属性动画)

    Android的动画分为了三种, 分别是 帧动画.View动画.属性动画 一:帧动画 帧动画就是顺序播放一组预先定义好的图片,就类似于我们观看视频,就是一张一张的图片连续播放. 帧动画的使用很简单,总 ...

最新文章

  1. linux驱动:音频驱动(四)ASoc之machine设备
  2. 顺风详解Nginx系列—Ngx中的变量
  3. 剑指offer(49)把字符串转换成整数。
  4. 嵌入式开发之hi3519---PCIE DMA
  5. MFC 实现字符串的移动
  6. 直方图应用:直方图均衡化,直方图匹配,对比直方图
  7. python写音乐播放器_python 模拟(简易)音乐播放器
  8. IDEA下SpringBoot项目的引用类没问题却提示:java:找不到符号:类**位置:程序包
  9. 01.ShardingSphere笔记
  10. 给具有SAP传统产品ABAP开发经验的朋友介绍SAP C4C
  11. 9款超绚丽的HTML5/CSS3应用和动画特效
  12. 编写高性能 .NET 代码 第二章:垃圾回收
  13. vue前后分离session实现_vue2 前后端分离项目ajax跨域session问题解决
  14. BootstrapTable分页(一)
  15. 如何打造应对超大流量的高性能负载均衡?
  16. linux学习之用户的切换
  17. js面向对象练习(二):JS面向对象的思路(canvas)写躁动的小球
  18. WINDOWS 98 启动盘(加强版)
  19. hadoop-bigdata-v2.2 版本shell脚本一键部署 master、slaver1、slaver2三个节点源代码.
  20. 2023年软考信息安全工程师备考学习笔记汇总

热门文章

  1. 【干货】阿里直播平台的架构演进
  2. ofo 彻底凉凉。。。
  3. linux中级之HAProxy基础配置
  4. Java Class的文件结构
  5. syntax error : missing ';' before identifier 'oper'解决方法
  6. 根据ip地址查找本地时区
  7. PhotoshopCS2相关教程网址
  8. 用C++获取屏幕上某点的颜色
  9. 04_数字的处理方法(保留小数点两位、将数字转化为千分位格式)
  10. py-faster-rcnn +cudnn V5