- 博客(25)
- 收藏
- 关注
原创 触摸事件的分发与处理
触屏操作的理解1. MotionEvent : 触屏事件int ACTION_DOWN=0 : 代表downInt ACTION_MOVE=2 ; 代表moveInt ACTION_UP=1 : 代表upgetAction() : 得到事件类型值getX() : 得到事件发生的x轴坐标(相对于当前视图)getRawX() :得到事件发生的x轴坐标(相对于屏幕左顶点)
2017-02-13 18:30:11 471 3
原创 PopupWindow的常用方法
1.PopupWindow(View contentView, int width, int height)构造方法, 指定包含的视图,宽度和高度2.showAsDropDown(View anchor, int xoff, int yoff)显示在指定视图的下面,指定视图,x轴和y轴上的偏移值3.setBackgroundDrawable(Drawable
2017-02-13 18:22:25 395
原创 Selector多状态图片
selector多状态图形在可以在正常,按下,选中等状态下显示不同的图形, 在应用中十分常用在使用时可以把它的xml文件看作一个图片它可以与图片或一起使用
2017-02-13 18:19:48 610
原创 快速排序
背景介绍: 又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序n个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n)算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来 ----- 来自 wikipe
2017-02-09 12:47:02 264
原创 选择排序
背景介绍: 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 ----- 来自 wikipedia算法规则: 将待排序集合(0...n)看成两部分,在起始状态中,一部分为(k..n)的待
2017-02-09 12:45:33 209
原创 冒泡排序
背景介绍: 是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。----- 来自 wikipedia算法规则: 由于算法每次都将一个最大的元素往上冒,我们可以将待排序集合(0...n)看成两部分,一部分
2017-02-09 12:44:11 308
原创 单例模式
定义保证一个类仅有一个实例,并提供一个访问它的全局访问点。Singleton:负责创建Singleton类自己的唯一实例,并提供一个getInstance的方法,让外部来访问这个类的唯一实例。饿汉式: private static Singleton uniqueInstance = new Singleton(); 懒汉式 private static Sin
2017-02-09 12:42:18 272
原创 MVC,MVP,MVVM的区别
MVC软件可以分为三部分视图(View):用户界面控制器(Controller):业务逻辑模型(Model):数据保存各部分之间的通信方式如下:View传送指令到ControllerController完成业务逻辑后,要求Model改变状态Model将新的数据发送到View,用户得到反馈Tips:所有的通信都是单向的。互动模式接受
2017-02-09 12:38:48 998
原创 Android图片中的三级缓存, 为什么要使用三级缓存
如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的状况下,对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响特别是,当我们想要重复浏览一些图片时,如果每一次浏览都需要通过网络获取,流量的浪费可想而知所以提出三级缓存策略,通过网络、本地、内存三级缓存
2017-02-09 12:35:23 1042
原创 ANR简单见解
什么是ANR?ANR:Application Not Responding,即应用无响应。ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不
2017-02-09 12:32:04 334
原创 Service的两种启动的区别
1.在Context中通过public boolean bindService(Intent service,ServiceConnection conn,int flags) 方法来进行Service与Context的关联并启动,并且Service的生命周期依附于Context(不求同时同分同秒生!但求同时同分同秒屎!!)。2.通过public ComponentName start
2017-02-09 12:25:53 369
原创 广播(Broadcast Receiver)的两种动态注册和静态注册有什么区别。
静态注册:在AndroidManifest.xml文件中进行注册,当App退出后,Receiver仍然可以接收到广播并且进行相应的处理动态注册:在代码中动态注册,当App退出后,也就没办法再接受广播了
2017-02-09 12:24:20 1930 1
原创 动画有哪两类,各有什么特点?三种动画的区别
tween 补间动画。通过指定View的初末状态和变化时间、方式,对View的内容完成一系列的图形变换来实现动画效果。 Alpha Scale Translate Rotate。frame 帧动画 AnimationDrawable 控制 animation-list xml布局PropertyAnimation 属性动画
2017-02-09 12:21:42 4038
原创 Android怎么加速启动Activity
分两种情况,启动应用 和 普通Activity 启动应用 :Application 的构造方法,onCreate() 方法中不要进行耗时操作,数据预读取(例如 init 数据) 放在异步中操作 启动普通的Activity:A 启动B 时不要在 A 的 onPause() 中执行耗时操作。因为 B 的 onResume() 方法必须等待 A 的 onPause() 执行完成后才能运行
2017-02-09 12:20:00 2717
原创 IntentService的使用场景与特点
IntentService是Service的子类,是一个异步的,会自动停止的服务,很好解决了传统的Service中处理完耗时操作忘记停止并销毁Service的问题优点:一方面不需要自己去new Thread另一方面不需要考虑在什么时候关闭该ServiceonStartCommand中回调了onStart,onStart中通过mServiceHandler发送消息到该hand
2017-02-09 12:16:22 1534
原创 Context区别
Activity和Service以及Application的Context是不一样的,Activity继承自ContextThemeWraper.其他的继承自ContextWrapper每一个Activity和Service以及Application的Context都是一个新的ContextImpl对象getApplication()用来获取Application实例的,但是这个方法只有在
2017-02-09 12:14:44 431
原创 如何自定义控件
自定义属性的声明和获取分析需要的自定义属性在res/values/attrs.xml定义声明在layout文件中进行使用在View的构造方法中进行获取测量onMeasure布局onLayout(ViewGroup)绘制onDrawonTouchEventonInterceptTouchEvent(ViewGroup)状态的恢复与保存
2017-02-09 12:13:42 288
原创 Android的数据存储形式
SQLite:SQLite是一个轻量级的数据库,支持基本的SQL语法,是常被采用的一种数据存储方式。 Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的apiSharedPreference: 除SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件,常用于存储较简单的参数设置。File: 即常说的文件(I/O)
2017-02-09 12:12:50 255
原创 Intent可以传递哪些数据类型。
通过查询Intent/Bundle的API文档,我们可以获知,Intent/Bundle支持传递基本类型的数据和基本类型的数组数据,以及String/CharSequence类型的数据和String/CharSequence类型的数组数据。而对于其它类型的数据貌似无能为力,其实不然,我们可以在Intent/Bundle的API中看到Intent/Bundle还可以传递Parcelable(包裹化,
2017-02-09 12:11:45 1069
原创 能否保证service不被杀死
目前能否保证service不被杀死Service设置成START_STICKYkill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样提升service优先级在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = "1000"这个属性设置最高优先级,1000是最高值,如果数字越小则优先级越
2017-02-09 12:10:43 286
原创 为什么在Service中创建子线程而不是Activity中
这是因为Activity很难对Thread进行控制,当Activity被销毁之后,就没有任何其它的办法可以再重新获取到之前创建的子线程的实例。而且在一个Activity中创建的子线程,另一个Activity无法对其进行操作。但是Service就不同了,所有的Activity都可以与Service进行关联,然后可以很方便地操作其中的方法,即使Activity被销毁了,之后只要重新与Service建立
2017-02-09 12:02:19 2828 1
原创 ListView 下拉刷新的原理解析
1. 流程分析 下拉刷新最主要的流程是: (1). 下拉,显示提示头部界面(HeaderView),这个过程提示用户"下拉刷新" (2). 下拉到一定程度,超出了刷新最基本的下拉界限,我们认为达到了刷新的条件,提示用户可以"松手刷新"了,效果上允许用户继续下拉 (3). 用户松手,可能用户下拉远远不止提示头部界面,所以这一步,先反弹回仅显示提示头部界面,然后
2017-02-09 11:52:45 1916
原创 查看应用程序最高可用内存
int maxMemory = (int) (Runtime.getRuntime().maxMemory()/1024);Log.d("TAG", "maxMemory is " + maxMemory);
2017-02-09 11:42:49 351
原创 ImageLoader的各种格式DisplayImageOptions 的设置
DisplayImageOptions options; options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.ic_launcher) //设置图片在下载期间显示的图片 .showImageForEmptyUri(R.drawable.ic_launcher)//设置图片
2017-02-06 18:32:34 2375
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人