Android知识点汇总--第三篇

原创 2016年08月29日 15:51:12

RemoteViews简单介绍

RemoteViews表示一个View结构,可以在其他进程中显示,由于在其他进程中显示,RemoteViews提供了一组基础的操作用于跨进程显示它的显示。
使用场景:通知栏和桌面小部件
通知栏通过NotificationManager的notify方法来实现。
桌面小部件由AppWidgetProvider来实现,AppWidgetProvider本质上是一个广播。
PendingIntent是一种特定的Intent,这个Intent中包含的意图必须由用户触发。

桌面小部件创建的步骤:
1.定义小部件界面
2.定义小部件配置信息(res/xml/…..xml)配置初始化布局,尺寸,自动更新周期
3.定义小部件的实现类,继承自AppWidgetProvider
4.在AndroidManifest.xml中声明小部件

AppWidgetProvider常用的方法有onUpdate/onEnable/onDisabled/onDeleted/onReceive。
在onReceive中根据不同的action来执行不同的方法。
onEabled:窗口小部件第一次添加到桌面上调用。
onDisabled:最后一个该类型的小部件被删除时调用。
onUpdate:周期性更新小部件
onDeleted:每删除一次小部件就调用一次。
onReceive:用于事件的分发处理。

PendingIntent简单介绍

匹配规则是:如果两个PendingIntent的内部Intent相同并且requestCode也相同,那么这两个PendingIntent就相同。

RemoteViews的简单介绍

用于在其他进程中显示并更新View界面。在使用RemoteViews中通过一系列set方法来完成对View元素的访问。大部分set方法是通过反射来完成的。
RemoteViews内部有一个mActions成员,是一个ArrayList,外界每调用一次set方法,RemoteViews就会为其创建一个Action对象并加入到ArrayList中。这里仅仅是把Action对象保存起来了,未对View进行处理。Action对象的apply方法才是真正操作View的地方。
RemoteViews的apply方法和reapply方法的区别在于apply会加载布局并更新界面,而reApply则会更新界面。

Drawable简单介绍

常见的有BitmapDrawable/ShapeDrawable/LayerDrawable/StateListDrawable。

Android动画介绍

动画可以分为三种:View动画,帧动画和属性动画。
View动画:
TranslateAnimation/ScaleAnimation/RotateAnimation/AlphaAnimation。
对应的标签:
translate:
android:fromXDelta
android:toXDelta
android:fromYDelta
android:toYDelta
scale:
android:fromXScale
android:toXScale
android:fromYScale
android:toYScale
android:pivotX
android:pivotY
rotate:
android:fromDegree
android:toDegree
android:pivotX
android:pivotY
alpa:
android:fromAlpha
android:toAlpha
使用方法:

//加载xml布局中的动画
Animation animation = AnimationUtils.loadAnimation(this,R.anim.xxx);
mView.startAnimation(animation);
//使用代码编写
AlphaAnimation anmiation = new AlphaAnimation(0,1);
animation.setDuration(300);
mView.startAnimation(animation);

自定义动画需要重写initialize和applyTransformation方法。可以采用Camera来简化矩阵变化过程。
帧动画:
通过xml定义一个AnimationDrawable。然后在代码中调用方式如下:

mView.setBackgroundDrawable(R.drawable.xxx);
AnimationDrawable drawable = (AnimationDrawable)mView.getBackground();
drawable.start();

通过LayoutAnimation可以为ViewGroup中的子元素加载时添加动画效果。可以通过android:layoutAnimation属性来加载动画效果,也可以通过LayoutAnimationController来实现。
通过overridePendingTransition()方法来可以改变Activity的切换效果。该方法必须位于startActivity或者finish之后。
通过FragmentTransaction中的setCustomAnimations()方法可以为Fragment添加动画切换效果。

属性动画简单介绍

属性动画要求动画作用的对象提供该属性的get和set方法,属性动画根据外界传递的该属性的初始值和最终值,以动画的效果多次去调用set方法。随着时间的推移,所传递的值越来越接近最终的值。
涉及到ValueAnimator、ObjectAnimator、AnimatorSet方法。
ObjectAnimator:

ObjectAnimator.ofFloat(object,"translationX",-object.getWidth()).start();

ValueAnimator:(改变一个View的背景色属性)

ValueAnimator colorAnim = ObjectAnimator.ofInt(this,"backgroundColor",0xFFFF3333,0xFFFF0000);
colorAnim.setDuration(3000);
colorAnim.setEvaluator(new ArgbEvaluator());
colorAnim.setRepeatCount(ValueAnimator.INFINITE);
colorAnim.setRepeatMode(ValueAnimator.REVERSE);
colorAnim.start();

AnimatorSet:

AnimatorSet set = new AnimatorSet();
set.playTogether(
    ObjectAnimator.ofFloat(view,"rotationX",0,180),
    ObjectAnimator.ofFloat(view,"rotationY",0,180),
    ......);
set.setDuration(3000).start();

//在代码中进行调用
AnimatorSet set = (AnimatorSet)AnimatorInflater.loadAnimator(myContext,R.anim.xxx);
set.setTarget(mView);
set.start();

属性动画监听器主要有AnimatorUpdateListener、AnimatorListener两个接口。

插值器和估值器

TimeInterpolator:时间插值器
根据时间的流逝百分比来计算出当前属性改变的百分比。
TypeEvaluator:类型估值算法
根据当前属性改变的百分比来计算改变后的属性值。
自定义插值器需要实现Interpolator或者TimeInterpolator。
自定义估值算法需要实现TypeEvaluator。

Window和WindowManager

单击事件由Window传递给DecorView,然后再由DecorView传递给我们的View。
Window有三种类型:应用Window、子Window、系统Window。Window是分层的,层级大的会覆盖在层级小的Window之上。
WindowManager常用的三个方法:添加View、更新View、删除View。这三个方法定义在ViewManager中。WindowManager是一个接口,真正实现类是WindowManagerImpl类。WindowManagerImpl将所有的操作全部委托给WindowManagerGlobal来实现。

版权声明:本文为博主原创文章,未经博主允许不得转载。

C# 知识点汇总

C#编程基础加强/Windows编程基础 核心技术课程 编程基础强化练习、面向过程编程(变量、if、for、while、函数、类型转换、枚举、数组、重载、值类型、引用类型、...
  • u014186972
  • u014186972
  • 2017年02月20日 16:39
  • 261

PHP知识点总结(二)

数组 PHP数组之索引数组初始化 PHP有两种数组:索引数组、关联数组。 索引和关联两个词都是针对数组的键而言的。 先介绍下索引数组,索引数组是指数组的键是整数的数...
  • ZGhekuiwu
  • ZGhekuiwu
  • 2016年12月24日 22:40
  • 7718

C#常用知识点总结

C#常用知识点总结: 1)方法定义语法:   访问修饰符+返回类型+方法名称+(参数列表)+{方法体}         注意:方法体中的最终返回类型必须和方法定义的返回类型一致,换句话说,如果 ...
  • liuxuejiao_
  • liuxuejiao_
  • 2015年05月16日 14:19
  • 639

Python知识点汇总

Python常用函数 本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接...
  • apple9005
  • apple9005
  • 2016年12月22日 13:58
  • 2362

神奇的Linux 之小知识点总结

最近在认真学习Linux,Linux 的强大又让我打开了一个新的世界,这篇文章主要总结我在学习Linux 时一些小的知识点,希望能帮助到更多还在为编程奋战的人 1.system 和exec 的区别...
  • chenjieyujiayou
  • chenjieyujiayou
  • 2017年07月30日 15:42
  • 169

数据结构详细总结-基础版——C语言版

****************************************** 本文全部来自个人手打总结,转载请注明出处! *********************************...
  • Gease_lcj
  • Gease_lcj
  • 2018年01月13日 17:40
  • 37

Python知识点整理

简介:Python是一种解释型语言,需要解释器来执行。可以通过在IDLE下执行,也可以在文本文件里写入代码,然后将该文件命名为xx.py 然后在Windows下可以通过Python xx.py 来运行...
  • yexudengzhidao
  • yexudengzhidao
  • 2017年06月21日 10:04
  • 879

软考网络工程师易混淆的知识点汇总

网络工程师考试是全国计算机技术与软件水平考试的一项中级资格考试,通过考试的合格人员能根据应用部门的要求进行网络系统的规划、设计和网络设备的软硬件安装调试工作,能进行网络系统的运行、维护和管理,能高效、...
  • cpongo1
  • cpongo1
  • 2016年05月26日 16:38
  • 672

python基础知识点总结

一、对迭代器进行切片#!/usr/bin/env python #-*- coding:utf-8 -*-from itertools import islice #islice(iterable, ...
  • m0_37886429
  • m0_37886429
  • 2017年12月11日 10:57
  • 75

MySql基础知识总结

MySql基础知识总结
  • weixin_37547197
  • weixin_37547197
  • 2017年06月08日 09:02
  • 292
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android知识点汇总--第三篇
举报原因:
原因补充:

(最多只允许输入30个字)