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来实现。

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

相关文章推荐

常用Android布局学习知识点汇总

RelativeLayout 相对布局 1、控件在不做任何处理时,默认放置在左上角 2、常用的     layout_margin+Left/Right=”xxdp” 设置控件在布局中距离左边/...

Android 琐碎知识点汇总

转载请注明本文出自 clevergump 的博客:http://blog.csdn.net/clevergump/article/details/52078859, 谢谢!View 通常来说, Dec...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

Android Java 框架基础[知识点汇总]

学习android的过程中,把整个框架的基础结构牢记很重要,特此摘录了一些这个框架的一些基础知识,在使用的过程中按照这个框架学习,事半功倍。 开发过程中参考JDK的文档和android的sdk文...

Android常用知识点汇总(不断更新)

本人就在平时开发中经常用到的知识点以及代码片段总结出来供大家分享。   1:手机自动重启       调用如下方法即可实现手机自动重启 public void onReboot() { ...
  • lyjIT
  • lyjIT
  • 2016-04-08 15:55
  • 371

Android开发笔记(各错误或知识点汇总)(转)

1.控制台输出:called unimplemented OpenGL ES API 调用了未实现的OpenGL ES API函数,一般由于导入的第三方库如地图库,里面有用到OpenGL,但是模...

android知识点记录汇总(不断更新中)

34. include进来的布局layout_margin不起作用。   解决方法需要同时设置layout_width和layout_height   see:http://stackov...

Android知识点汇总--第一篇

Android知识点,Android面试

Android 零碎知识点汇总

一些零碎的知识点,似乎不足以开篇,汇总记录在此。持续更新。

Android知识点及资料汇总(不断更新中)

/////////////////////// //版本:0.1 //主要内容:根据思维导图的知识点,对之前收藏夹的内容进行分类。 ///////////////////////之前转载过一篇...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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