
Android
文章平均质量分 58
Feathers .
这个作者很懒,什么都没留下…
展开
-
Android群英传——目录
感谢作者@eclipse_xu,历时12天的阅读已经结束,我省略了老生常谈的Activity原创 2016-11-23 09:57:11 · 686 阅读 · 0 评论 -
Android群英传——第九章五道安全防线与系统隐患
Android系统五道安全防线以及安全隐患五道防线: - 代码混淆, 因为java语言的特殊性(是指先编译为class),即使编译为apk也仍有危险,我么可以混淆关键代码,替换命名让破坏这阅读困难,同时也可以压缩代码,优化编译后的字节码。应用接入权限控制,应用使用相关权限,需要显示的向系统声明。只有当应用具有相应的权限,才能通过权限机制检查并使用系统的Binder对象完成对系统服务的调用。缺点:原创 2016-11-22 19:01:23 · 416 阅读 · 0 评论 -
Android群英传——第九章packages.xml的作用
Android系统在初始化时,PackageManager的底层实现类PackageManagerService 回去扫描系统的/data/system/目录下的packages .xml文件,这个文件包含了所有的apk的包信息,当Apk安装、删除升级时,这个xml同样也会更新packages.xml文件解析: 好吧 太多了,吓着我了<permissions>标签 定义了目前系统中的所有权限,分原创 2016-11-22 17:28:13 · 2716 阅读 · 0 评论 -
Android群英传——第九章ActivityManager获取信息
ActivityManager不同于PackageManager,PackagerManager侧重于APK包的信息,而ActivityManager则侧重于运行中的应用信息ActivityManager.MemoryInfo(全局内存使用信息): availMem 系统可用内存, totalMem 总内存, threshold 低内存阀值 (判断当前内存是否过低的临界值),原创 2016-11-22 17:26:31 · 456 阅读 · 0 评论 -
Android群英传——第九章使用PackageManager获取应用包信息
Apk信息的获取使用PM(PackageManager)和AM(ActivityManager)管理APK PM负责包管理,AM负责Activity管理在Mainifest.xml中, activity与receiver标签会被系统封装为ActivityInfo类 service标签则会被封装为ServiceInfo类 application标签会被封装为ApplicationInfo类,A原创 2016-11-22 12:08:08 · 604 阅读 · 0 评论 -
Android群英传——第九章系统信息的获取
Android系统信息的获取系统信息来源于/system/build.prop文件 我们可以使用adb通过终端进入/system目录,输入cat build.prop命令查看文件信息以下是我的模拟器的build.prop文件内容# begin build properties# autogenerated by buildinfo.shro.build.id=MASTERro.build.d原创 2016-11-19 19:16:37 · 840 阅读 · 0 评论 -
Android群英传——第七章自定义动画
关于Matrix请看博客:http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html#translateimport android.graphics.Camera;import android.graphics.Matrix;import android.view.animation.AccelerateInterpolator;原创 2016-11-19 15:26:24 · 354 阅读 · 0 评论 -
Android群英传——第七章布局动画
所谓布局动画是指,在ViewGroup上,给ViewGroup增加View时添加一个动画过度的效果。使用android:animateLayoutChanges="true"开启布局动画。我们可以通过以下方式设置布局动画:// 参1:动画 参2:动画delay时间,当delay不为0时,可以设置子View显示的顺序// ORDER_NORMAL:顺序// ORDER_RANDOM:随机// O原创 2016-11-19 13:32:32 · 309 阅读 · 0 评论 -
Android群英传——第七章Animator属性动画
Animator顾名思义:动画制作者,用来生成、管理动画。 属性动画的运行机制是通过不断地对值进行操作来实现的,并且它常常与Animation配合实现动画效果subClass:有两个接口: interface Animator.AnimatorListener:监听动画的监听器(如启动、重复、结束) interface Animator.AnimatorPauseListener:监听动画原创 2016-11-19 13:22:23 · 530 阅读 · 0 评论 -
Android群英传——第七章View的Animation
View动画 Animation首先感谢这篇文章以及博主:【Android 基础】Animation 动画介绍和实现Animation控制的是真个View,实现原理为:每次绘制视图时,View所在的ViewGroup中的drawChild函数获取该View的Animation的Transformation的值,然后调用canvas.concat(TransformToApplay.getMatri原创 2016-11-18 17:03:54 · 325 阅读 · 0 评论 -
Android群英传——第六章SurfaceView
SurfaceViewView通过刷新来重绘视图,Android系统通过发出VSYNC信号来进行屏幕重绘,刷新的间隔为16ms。如果在16ms内View完成了你所需要执行的所有操作。那么用户在视觉上就不会产生卡顿的感觉;而如果执行的操作逻辑太多,特别是需要频繁的刷新界面上,例如游戏界面, 那么就会不断的阻塞主线程,从而导致画面卡段。 Skipped 47 frames!The Applicati原创 2016-11-18 16:07:30 · 371 阅读 · 0 评论 -
Android群英传——第六章Canvas的Layer图层
类似于PS的图层,几个图层叠在一起形成一个图片有了图层后,canvas可以在不同的图层中进行绘画 图层采用栈的方式进行管理:如下所示 使用save() 与 saveLayerAlpha()建立一个图层,入栈使用restore()[移出栈顶图层]和restoreToCount()[移出图层,让栈中的图层数量为count]图形的绘制(drawXXX())只会发生在栈顶中即使用save()创建一原创 2016-11-17 16:37:43 · 593 阅读 · 0 评论 -
Android群英传——第六章Canvas绘图技巧
使用canvas的平移画布的操作,实际上是改变屏幕坐标原点在Canvas当前层的位置所谓canvas的图层(类似ps),可以理解为每一个draw操作就是一个透明的图层,层层叠在一起就形成了整个图形所以当我们移动canvas时,之前绘制的图形并不受影响,不会跟着移动可以使用save()保存坐标的位置,使用restore()恢复保存的状态使用canvas的平移旋转等操作实现如下效果: c原创 2016-11-17 14:02:15 · 405 阅读 · 0 评论 -
Android群英传——第六章屏幕尺寸信息
屏幕尺寸信息屏幕大小: 以寸为单位,如4.7寸5.5寸,计算:屏幕左上角到右下角的距离(1英寸 = 2.54厘米)分辨率: 720x1280 代表宽有720像素点 高有1280个像素点 像素点: px(单位),像素不是一个点或一个方块,而是一个抽样的采样,实际是一片面积。密度值: DPI(密度值的单位) Dots per inch,每英寸像素点 也称PPI(Pixels pe原创 2016-11-16 16:46:35 · 301 阅读 · 0 评论 -
Android群英传——第五章实现滑动的7种方式(六七)ViewDragHelper自定义侧滑菜单
ViewDragHelper你问我这个类是个啥,那我告诉你 知道侧滑菜单DrawLayout不? 他的背后就是它在操控,非常强大!! 有了这个类,麻麻再也不用担心我自定义半天的控件了,很厉害有木有!!! code:import android.content.Context;import android.support.v4.view.ViewCompat;import android.su原创 2016-11-16 15:52:52 · 633 阅读 · 2 评论 -
Android群英传——第五章实现滑动的7种方法(五)Scroller
Scroller上一个方法中我们说到: scrollTo和scrollBy都是瞬间移动的,为了它们达到平滑移动的效果,我们可以通过motionEvent来多次处理, 但是,如果是像ViewPager一样的操作,当用户滑动并抬起时,Viewpager会自己进行回弹或者进入下一个page,期间没有任何MotionEvent, 如果使用scrollBy和To则会直接移动,没有动画效果,这又该怎么办呢原创 2016-11-16 12:51:54 · 379 阅读 · 0 评论 -
Android群英传——第五章实现滑动的7种方法(四)scrollTo和scrollBy
scrollTo()和scrollBy()的区别scrollTo()代表让View移动到一个具体的坐标点:scrollTo(x,y) 移动到(x,y)点scrollBy()则代表横纵增量:设原点为(a,b),则scrollBy(dx,dy) 后 坐标变为(a+dx, b+dy)scrollBy和scrollTo的移动,是移动View的content,即让View的内容移动(比如listView原创 2016-11-15 18:26:03 · 400 阅读 · 0 评论 -
Android群英传——第五章实现滑动的7种方法(一二三)
实现滑动的基本思想:当触摸View时,系统记下当前的坐标当手指移动时,系统记下当前移动点的坐标从而获取了一个偏移量通过这个偏移量修改这个View的坐标即可实现滑动的过程要实现的效果如下: 方法一:layout方法直接采用了基本思想:import android.content.Context;import android.util.AttributeSet;import android原创 2016-11-15 17:10:59 · 366 阅读 · 0 评论 -
Android群英传——第五章常用触控事件MotionEvent与获取View坐标长度的各种方法
触控事件MotionEvent// 单点触摸按下动作int ACTION_DOWN// 单点触摸抬起动作int ACTION_UP// 触摸点移动动作int ACTION_MOVE// 触摸点取消动作int ACTION_CANCEL// 触摸动作超出边界int ACTION_OUTSIDE// 多点触摸按下动作int ACTION_POINTER_DOWN// 多点触摸抬起原创 2016-11-15 15:18:26 · 1220 阅读 · 0 评论 -
Android群英传——第四章动态改变ListView的布局
看效果: 看代码:import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout原创 2016-11-15 14:50:56 · 381 阅读 · 0 评论 -
Android群英传——第四章自动显示隐藏ActionBar/Toolbar的ListView
这中效果最为常见: 当ListView向上滑动的时候,Toolbar进行隐藏,当向下滑动时,Toolbar则又显示出来了。 如图 完整代码实现如下:import android.animation.ObjectAnimator;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;impor原创 2016-11-15 11:44:28 · 445 阅读 · 0 评论 -
Android群英传——第四章具有弹性的ListView
具有弹性的ListView实现起来比较简单,只需修改ListView的如下方法即可: int mMaxOverDistance = 50; private void initView() { DisplayMetrics metrics = getContext().getResources().getDisplayMetrics(); float density原创 2016-11-14 18:47:56 · 354 阅读 · 0 评论 -
Android群英传——第四章ListView滑动监听
ListView的滑动监听大部分重写ListView都是在滑动事件上下功夫,以达到特殊的效果。 有时候还会使用GestureDetector手势识别、VelocityTracker滑动速度检测等辅助类。 listView的滑动监听主要有两个类:onTouchListener、onScrollListeneronTouchListener:listView.setOnTouchListener(n原创 2016-11-14 16:26:52 · 449 阅读 · 0 评论 -
Android群英传——第四章ListView常用优化
设置分割线 <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@color/colorPrimary" andr原创 2016-11-14 14:42:25 · 467 阅读 · 0 评论 -
Android群英传——第三章事件分发机制
View事件分发机制什么是分发?分发就是将一些事务交给下属来处理,事件的分发其实包含了:事件的拦截,事件的处理(这样说可能不是太准确) 事件拦截机制中,ViewGroup有onInterceptTouchEvent(),dispatchTouchEvent(),onTouchEvent()三个方法,分别起到事件分发、事件拦截、事件处理的作用 而View中只有dispatchTouchEvent(原创 2016-11-14 11:30:33 · 771 阅读 · 4 评论 -
Android群英传——第三章自定义View
自定义View除了onMeasure() 测量、onLayout()布局、onDraw()绘制 这三个比较重要的View回调方法外,还有以下几个比较重要的回调方法: onFinishInflate():从XML加载组件后调用 onSizeChanged():组件改变大小时调用 onTouchEvent():监听到触摸事件后回调 有三种自定义控件的方式: 继承类:对现有控件进行扩展,比如:继原创 2016-11-13 17:55:22 · 482 阅读 · 0 评论 -
Android群英传——第三章绘制View和ViewGroup
Android在绘制View之前,需要知道这个View的大小,即需要对View进行测量。这个过程在onMeasure方法中进行 Android提供了一个MeasureSpec类用来帮助我们测来嗯View - MeasureSpec是一个32位int值 - 高2位为测量模式,低30位为测量大小 - 测量模式: - EXACTLY:精确值模式,比如width指定为match_paren原创 2016-11-12 19:10:39 · 406 阅读 · 0 评论 -
Android群英传——第三章Android控件架构
Android控件架构每个控件占用一块矩形区域控件大致可分为:View和ViewGroup两类通过ViewGroup,整个界面上的控件形成一个树形结构,即控件树上层控件负责下一层控件的测量与绘制Android界面的架构图: 每个Activity包含一个Window对象,Window对象通常由PhoneWindow实现PhoneWindow将一个DecorView对象设置为窗口的根View原创 2016-11-11 19:28:18 · 315 阅读 · 0 评论 -
Android群英传——第二章ADB命令使用
ADB命令使用Android Debug Bridge,借助此工具,可以让我们使用电脑来操控手机 ADB工具位于 sdk_location/platform-tools使用命令adb shell,就可以使用shell命令了。ADB常用命令显示系统中所有的android平台:android list targets安装Apk程序到data目录下(普通用户程序):adb install -r /X原创 2016-11-11 18:29:35 · 330 阅读 · 0 评论 -
Android群英传——第一章Android体系和系统架构
Android体系和系统架构Android系统架构Linux层最低层,核心层:包含了Android系统的核心服务,比如硬件驱动、进程管理、安全系统等。Dalvik 和 ARTDalvik包含了一整套的Android运行环境虚拟机,每个App都会被分配Dalvik虚拟机来保证互相之间不受干扰。 特点:运行时编译,即当要运行这个app时,才去编译这个app 5.X开始,ART模式取代了Dalvik,原创 2016-11-11 17:54:36 · 404 阅读 · 0 评论 -
Android性能优化——渲染
提高用户体验首先要提高app的性能造成卡顿的原因Android的CPU和GPU同时工作,在屏幕上绘制图片 如果手机的刷新频率为60hz,则代表每秒会刷新60次屏幕,即绘制60张图片,这也是大部分手机的刷新频率。 这个刷新频率也称为fps(帧率),即每秒钟的帧数,一个帧数就是一张图片,如果1000ms绘制了60帧,则代表每隔 1000 / 60 = 16.666ms 时,就需要绘制一个帧你一定玩原创 2016-11-24 21:38:21 · 603 阅读 · 1 评论 -
hierarchyviewer偶然不能使用的解决方法
在DDMS的device中可以看到设备,并显示可以debug的状态,可以看到不显示进程的信息,但是hierarchyviewer也却不显示各个Window。在控制台的打印信息如下: - hierarchyviewer]Unable to get view server version from device emulator-5554 - hierarchyviewer]Unable to get转载 2016-11-24 22:04:07 · 1222 阅读 · 0 评论 -
AndroidStudio报错:UnsupportedMethodException
AndroidStudio运行报错:UnsupportedMethodException Unsupported method: AndroidProject.getPluginGeneration(). The version of Gradle you connect to does not support that method. To r原创 2016-11-21 23:24:30 · 831 阅读 · 0 评论 -
Android Studio的使用--导入 API Demo
2016年4月6日 命运在自己手里,不在别人嘴里studio 导入android api Demo要想导入API Demo来进行学习,首先要在 SDK Manager中下载Demo 如图所示:下载完成后,你的sdk中就会多出 sample这个文件夹,其中包含了你下载的 所有sample。然后使用 File-New-Import Sample来导入相关的Sample运行或学习也可以在 打开Sa原创 2016-04-06 16:21:51 · 7681 阅读 · 0 评论 -
LookLook剖析,架构概述——MVP、Retrofit+RxJava
前言: 学习LookLook这个开源项目的初衷是学习MVP架构,因为自己已经块学了一年的Android,可是对架构一直没有什么概念,而且平时自己编项目时总是没有框架。写到哪里,就封装到哪里,照着一些接口自己总是瞎写写,收获甚微,代码乱,所以出现最多的情况就是写不下去了,代码不仅没法扩展,也没法修改。项目地址:https://github.com/xinghongfei/LookLookLookLo原创 2016-10-31 21:46:59 · 517 阅读 · 1 评论 -
Android围住神经猫的实现
2016年3月2日 会当凌绝顶,一览众山小。为期三天的围住神经猫极简版已经出炉,虽说github或者其他博客已经吧这个简单的小项目写的很详细了,但我还是忍不住再扯一篇。一来为了加深理解,二来也给自己留个学习回忆,毕竟这是我的第一个完整的小游戏项目嘛。下面我就按照我忍为比较好理解的思路来把整个项目重新整理一遍,期待可以和大家一起学习讨论。功能预览原版游戏项目预览: 本人的精简版:游戏玩法: 点击灰原创 2016-03-02 22:51:43 · 4037 阅读 · 0 评论 -
Volley完全解析——使用、源码
Feathers’s Volley and Demo:Volley简介2013年Google I/O大会上推出了一个新的网络通信框架——Volley,它简单易用,适合通信频繁的操作,不适合大数据量的操作 volley本来的意思就是集中射击、集鸣:下载VolleyGit:git clone https://android.googlesource.com/platform/frameworks/vo原创 2016-11-29 13:37:57 · 842 阅读 · 0 评论 -
Material Design——Touch feedback Ripple波纹动画
Touch feedback(触摸反馈)Ripple波纹效果使用系统波纹效果要实现波纹效果首先要保证控件可以进行触摸反馈,一半要将foucesable和clickable 设置为trueandroid:background="?android:attr/selectableItemBackground" <!--波纹有边界-->android:background="?android:attr原创 2016-11-26 22:04:23 · 829 阅读 · 0 评论 -
Material Design —— Elevation高度、shadows阴影、clipping裁剪、tint着色
ElevationAndroid5.0加入了Z轴,这个Z轴的值就是View的高度Elevationelevation的值较大的View会遮盖住较小的code:<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"原创 2016-11-26 19:02:49 · 5194 阅读 · 0 评论 -
Material Design——CardView的简单使用
作用卡片布局,有阴影、圆角、在V7包中添加CardView的依赖:compile 'com.android.support:cardview-v7:25.0.0'在XML中使用CardView: <!-- CardView_cardBackgroundColor 设置背景色 CardView_cardCornerRadius 设置圆角大小 CardVi原创 2016-11-25 16:24:31 · 1090 阅读 · 0 评论