- 博客(61)
- 收藏
- 关注
原创 GestureDetector手势初识
关于手势,大神的博客:http://blog.csdn.net/harvic880925/article/details/39520901 用于处理一些复杂的手势活动。//GestureDetector 手势GestureDetector 这个类对外提供了两个接口和一个外部类 接口:OnGestureListener OnDoubleTapListener(双击的监听) 外部类:
2016-03-31 00:48:50
440
原创 Messenger--信使
Messenger可以在不同进程中传递Message对象,是一种轻量级的IPC方案,它的底层实现是AIDL。它对AIDL做了封装,使得我们可以更简单地进行进程间通信。它一次处理一个请求,因此在服务端我们不用考虑线程同步的问题。//服务端public class MessengerService extends Service{ private static final String TAG
2016-03-16 23:38:31
372
原创 Binder
Binder是Android中的一个类,它继承了IBinder接口。从IPC角度来说,Binder是Android中的一种跨进程通信方式,Binder还可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder,该通信方式在Linux中没有;从Android Framework角度来说,Binder是ServiceManager连接各种Manager(ActivityManager、Wind
2016-03-15 23:00:29
313
原创 Parcelable 序列化和反序列化
public class User implements Parcelable{ public int userId; public String userName; public boolean isMale; public Book book; }
2016-03-15 21:56:25
1176
原创 Serializable 序列化和反序列化
Serializable是Java所提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化操作。想让一个对象实现序列化,只需要这个类实现Serializable 接口并声明一个serialVersionUID即可,实际上,甚至这个serialVersionUID也不是必需的,我们不声明这个serialVersionUID同样也可以实现序列化,但是这将会对反序列化过程产生影响。//序列
2016-03-15 21:48:03
333
原创 IPC 机制---多线程模式
在Android中最有特色的进程间通信方式就是Binder了,通过Binder可以轻松地实现进程间通信。除了Binder,Android还支持Socket,通过Socket也可以实现任意两个终端之间的通信,当然同一个设备上的两个进程通过Socket通信自然也是可以的。多进程的情况分为两种:一、一个应用因为某些原因自身需要采用多进程模式来实现。二、当前应用需要向其他应用获取数据。Android中的
2016-03-15 21:29:56
1095
原创 IntentFilter的匹配规则
隐式调用需要Intent能够匹配目标组件的IntentFilter中所设置的过滤信息,如果不匹配将无法启动目标Activity。IntentFilter中的过滤信息有action、category、data。只有一个Intent同时匹配action类别、category类别、data类别才算完全匹配,只有完全匹配才能成功启动目标Activity。另外一点,一个Activity中可以有多个intent
2016-03-10 00:05:26
272
原创 Activity的Flags
Activity的Flags有很多,这里主要分析一些比较常用的标记位。标记位的作用很多,有的标记位可以设定Activity的启动模式,比如FLAG_ACTIVITY_NEW_TASK;还有的标记位可以影响Activity的运行状态,比如FLAG_ACTIVITY_CLEAR_TOP等。FLAG_ACTIVITY_NEW_TASK这个标记位的作用是为Activity指定“singleTask”启动模式
2016-03-09 22:31:55
349
原创 Activity的启动模式
standard 标准模式谁启动了这个Activity,那么这个Activity就运行在启动它的那个Activity所在的栈中。然而当我们用ApplicationContext去启动standard模式的Activity的时候就会报错,错误如下: E/AndroidRuntime(674): android.util.AndroidRuntimeException: Calling st
2016-03-09 22:14:37
330
原创 Activity生命周期
正常情况下onCreate()-->onStart()-->onResume()->onPause()-->onStop()-->onDestroy()异常杀死资源相关的系统文件发生改变导致Activity被杀死并重新创建当系统配置发生改变后,Activity会被销毁,其onPause、onStop、onDestroy均会被调用,同时由于Activity是在异常情况下终止的,系统会调用onSave
2016-03-09 21:44:40
262
原创 PreferenceActivity系统本身的设置页
PreferenceActivity 系统本身的设置页PreferenceActivity extends ListView 分组:PreferenceCategory 开关:CheckBoxference ListPreference EditTextPreference每一次设置,都会被Preference,这就是setting的数据持久化。//数组定义 <!--?xml ver
2016-03-07 23:41:24
342
原创 MediaMetadataRetriever类 取得媒体文件信息
MediaMetadataRetriever类 取得媒体文件信息MediaMetadataRetriever类提供了一个统一的接口用于从一个输入媒体文件中取得帧和元数据//从一个音乐中取得部分媒体信息MediaMetadataRetriever mmr=new MediaMetadataRetriever();String str=getExternalStorageDirectory()+"m
2016-03-07 23:33:27
1193
原创 GLSurfaceView
GLSurfaceView内嵌surface专门负责OpenGL渲染 1、管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上 2、能让opengl把内容渲染到上述的surface上 3、用户自定义渲染器(render) 4、让渲染器在独立的线程里运作,和UI线程分离 5、支持按需渲染和连续渲染GLSurf
2016-03-07 23:23:14
661
原创 MediaController
一个包含媒体播放器(MediaPlayer)控件的视图。包含了一些典型的按钮,像”播放(Play)/暂停(Pause)”, “倒带(Rewind)”, “快进(Fast Forward)”与进度滑动器(progress slider)。它管理媒体播放器(MediaController)的状态以保持控件的同步。这些控件会漂浮在通过setAnchorView()指定的视图上。如果这个窗口空闲3秒那么它将
2016-03-07 23:08:19
1062
原创 event.getRepeatCount()
event.getRepeatCount()是重复次数public boolean onKeyDown(int keyCode,KeyEvent event){ //在欢迎界面屏蔽BACK键 if(keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0){ // do something on back
2016-03-07 23:05:14
5174
原创 MD5 算法
MD5MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性。用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm).另外还有一种常用的消息摘要算法SHA1。Java 已经实现了MD5、SHA1算法。利用java.security.MessageDigest类就可以获取字符串和文件的MD5以及SHA1结果。字符串MD5public static String
2016-03-07 23:03:10
253
原创 Application.mk
Application.mk文件的一个基础版本,指定一个ABI APP_ABI :=armeabi-v7a 如果没有提供Application.mk,将会创建仅针对armeabi ABI(ARMv5)这一版本的库。Application.mk: APP_PROJECT_PATH 项目路径 APP_MODULES 模块编译列表 APP_OPTIM
2016-03-07 22:50:44
362
原创 Android.mk文件
Android.mk文件核心部分是模块,模块可以用来指定静态库或共享库,其中只有共享库会被安装或复制到android应用程序包(apk文件)中,而静态库可以用来生成共享库。LOCAL_PATH 用来指定参与编译的C/C++源文件的位置。my-dir是个宏函数是由系统提供的,返回Android.mk文件所在目录的路径include $(CLEAR_VARS) 用来清空很多以LOCAL
2016-03-07 22:40:23
309
原创 Android JNI编程规范
Demo//增加学生信息: addStu(JNIEnv *env,jobject valObj){ //获取jclass对象 jclass cls=env->GetObjectClass(valObj); //GetFieldID方法用到取到jclas中的name字段。参数列表(jclass对象,字段名称,字段类型) 这点类似于java的反射
2016-03-07 21:54:20
688
原创 eclipse中JNI开发
步骤:1、创建Android工程2、编写native方法3、生成.h头文件 (javah)4、创建.c文件 5、创建Android.mk文件 6、构建一个Builder 7、生成so文件8、加载库函数9、调用native函数
2016-03-07 11:07:01
321
原创 Android 测试用例
编写测试用例测试是软件工程中一个非常重要的环节,而测试用例又可以显著地提高测试的效率和准确性,测试用例其实就是一段普通的程序代码,通常是带有期望的运行结果的,测试者可以根据最终的运行结果来判断程序是否能正常工作。创建测试工程测试工程通常不是独立存在的,而是依赖于某个现有工程的,一般比较常见的做法是在现有工程下新建一个tests文件夹,测试工程就存放在这里。那么我们就给BroadcastBestPra
2016-02-22 12:34:44
2126
原创 Intent 传递对象
Serializable 方式Serializable 是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。public class Person implements Serializable{ private String name; private int age; public String getName(
2016-02-22 11:16:47
238
原创 Android 标题
public void setTitle(CharSequence title) //改变标题内容setTitle("标题内容");requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏标题/* 隐藏标题和最上面的电池电量及信号栏(全屏)*/public void setFullScreen(){ requestWindowF
2016-02-22 10:48:22
257
原创 List遍历时陷阱
//list遍历时陷阱 public class ListRemoveTest{ public static void main(String[] args){ List<Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2);
2016-02-17 20:33:16
276
原创 Map遍历方法及Map遍历时陷阱
//Map 遍历 //方法一:for-each循环中使用entries来遍历 Map<Integer,Integer> map = new HashMap<Integer,Integer>(); for(Map.Entry<Integer,Integer> entry:map.entrySet()){ System.out.println(
2016-02-17 20:20:38
581
原创 Android EventBus框架
//EventBus Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如网络请求等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus来实现//作为消息总线,有三个主要元素 /* 1. 事件
2016-02-17 18:03:53
207
原创 Android 中的缩略图的加载
//Android 中的缩略图加载/* 1、使用inJustDecodeBounds,读Bitmap的长和宽 2、根据bitmap的长宽和目标缩略图的长和宽。计算出inSampleSize的大小 3、使用inSampleSize,载入一个大一点的缩略图A 4、使用createScaseBitmap,将缩略图A,生成我们需要的缩略图B 5、回收缩略图A*//*
2016-02-16 19:40:19
355
原创 BitmapFactory.Options 图片解析
BitmapFactory.OptionsBitmapFactory.Options options= new BitmapFactory.Options(); options.inJustDecodeBounds = true; //避免OOM 该字段设置为true的话,那么返回的就不是Bitmap对象,而是返回该对象的宽和高的参数 BitmapFactory.decodeFile(
2016-02-16 19:37:12
282
原创 数据解析
XML数据解析Pull 解析:XmlPullParserFactory factory=XmlPullParserFactory.newInstance();XmlPullParser parser=factory.newPullParser();FileInputStream fis=new FileInputStream("user.xml","utf-8");parser.setInpu
2015-12-24 00:16:00
342
原创 传感器
光照传感器SensorManager manager=(SensorManager)getSystemSeervice(Context.SENSOR_SERVICE);Sensor sensor=manager.getDefaultSenser(Sensor.TYPE_LIGHT);//TYPE_LIGHT 常量来指定传感器类型//对传感器输出的信号进行监听,就要借助SensorEventLi
2015-12-23 23:43:31
344
原创 LBS--定位
LocationManagerAndroid 中一般有三种位置提供器可供选择,GPS_PROVIDER、NETWORK_PROVIDER、PASSIVE_PROVIDER。其中前两种使用的比较多,分别表示使用GPS定位和使用网络定位。这两种定位方式各有特点,GPS定位精度比较高,但是非常耗电,而网络定位的精确稍差,但耗电量比较少。注意:定位功能必须要由用户主动去启用才行,不然任何应用都无法获取到手机
2015-12-22 23:54:44
825
原创 Android网络技术
网络技术WebViewpublic class MainActivity extends Activity{ private WebView webView; protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentV
2015-12-22 22:48:36
308
原创 线程---Thread
Threadnew Thread(){ public void run(){ //执行耗时操作 }}.start();Runnableclass MyThread implements Runnable{ public void run(){ //执行耗时操作 }}MyThread myThread=new MyThread()
2015-12-21 22:36:03
238
原创 服务---Service
Service非常适合用于去执行那些不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖于任何用户界面,即使当程序被切换到后台,或者用户打开了另外一个应用程序,服务仍然能够保持正常运行。服务并不是运行在一个独立的进程当中的,而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉时,所有依赖于该进程的服务也会停止运行。另外,服务并不会自动开启线程,所有的代码都是默认运行在主线程当中的。
2015-12-21 22:31:46
367
原创 Notification
通知Notification一般只有当程序进入到后台的时候我们才需要使用通知。使用NotificationManager来对通知进行管理。NotificationManager manager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);创建一个Notification对象,这个对象用于存储通知所需的各种信
2015-12-17 22:10:23
488
原创 内容提供器---Content Provider
Content Provider内容提供者主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性。目前,使用内容提供者是Android实现跨程序共享数据的标准方式。不同于文件存储和SharedPreferences存储中的两种全局可读写操作模式,内容提供器可以选择只对哪一部分数据进行共享,从而保证我们程序中的隐私数据
2015-12-16 22:19:51
386
原创 数据存储---数据持久化
Android 系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件存储,SharedPreference以及数据库存储。你还可以将数据保存在手机的SD卡中,不过使用文件、SharedPreference或数据库来保存数据会相对更简单一些,而且比起将数据保存在SD卡中会更加安全。文件存储文件存储是Android中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封
2015-12-15 22:09:09
391
原创 Git 版本控制
Git 版本控制下载地址: http://msysgit.github,io/配置身份: git config --global user.name "LZL" git config --global user.email "lzl@qq.com" 验证是否配置成功: git config --global user.name git
2015-12-15 00:59:54
261
原创 广播接收器
标准广播时一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻收到这条广播消息,因此他们之间没有任何先后顺序可言。这种广播效率会比较高,但同时意味着它是无法被截断的。有序广播则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先收
2015-12-14 22:06:35
426
原创 StackOverflowError
Android开发中StackOverflowError错误实例分析一个复杂的layout嵌套较多的android界面,碰到了java.lang.StackOverflowError这个Fatal Exception,app程序crash退出。这个错误出现的比较奇怪,在我做技术调研的时候,这个界面是放在单独的一个程序中展示的,工作很正常,没有出现这个严重错误,当将其嵌入到一个ActivityGrou
2015-12-14 10:19:31
538
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人