自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

直到世界的尽头

先入门,再深入,直至改变世界

  • 博客(61)
  • 收藏
  • 关注

原创 GestureDetector手势初识

关于手势,大神的博客:http://blog.csdn.net/harvic880925/article/details/39520901 用于处理一些复杂的手势活动。//GestureDetector 手势GestureDetector 这个类对外提供了两个接口和一个外部类 接口:OnGestureListener OnDoubleTapListener(双击的监听) 外部类:

2016-03-31 00:48:50 431

原创 Messenger--信使

Messenger可以在不同进程中传递Message对象,是一种轻量级的IPC方案,它的底层实现是AIDL。它对AIDL做了封装,使得我们可以更简单地进行进程间通信。它一次处理一个请求,因此在服务端我们不用考虑线程同步的问题。//服务端public class MessengerService extends Service{ private static final String TAG

2016-03-16 23:38:31 367

原创 Binder

Binder是Android中的一个类,它继承了IBinder接口。从IPC角度来说,Binder是Android中的一种跨进程通信方式,Binder还可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder,该通信方式在Linux中没有;从Android Framework角度来说,Binder是ServiceManager连接各种Manager(ActivityManager、Wind

2016-03-15 23:00:29 305

原创 Parcelable 序列化和反序列化

public class User implements Parcelable{ public int userId; public String userName; public boolean isMale; public Book book; }

2016-03-15 21:56:25 1172

原创 Serializable 序列化和反序列化

Serializable是Java所提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化操作。想让一个对象实现序列化,只需要这个类实现Serializable 接口并声明一个serialVersionUID即可,实际上,甚至这个serialVersionUID也不是必需的,我们不声明这个serialVersionUID同样也可以实现序列化,但是这将会对反序列化过程产生影响。//序列

2016-03-15 21:48:03 322

原创 IPC 机制---多线程模式

在Android中最有特色的进程间通信方式就是Binder了,通过Binder可以轻松地实现进程间通信。除了Binder,Android还支持Socket,通过Socket也可以实现任意两个终端之间的通信,当然同一个设备上的两个进程通过Socket通信自然也是可以的。多进程的情况分为两种:一、一个应用因为某些原因自身需要采用多进程模式来实现。二、当前应用需要向其他应用获取数据。Android中的

2016-03-15 21:29:56 1085

原创 IntentFilter的匹配规则

隐式调用需要Intent能够匹配目标组件的IntentFilter中所设置的过滤信息,如果不匹配将无法启动目标Activity。IntentFilter中的过滤信息有action、category、data。只有一个Intent同时匹配action类别、category类别、data类别才算完全匹配,只有完全匹配才能成功启动目标Activity。另外一点,一个Activity中可以有多个intent

2016-03-10 00:05:26 262

原创 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 339

原创 Activity的启动模式

standard 标准模式谁启动了这个Activity,那么这个Activity就运行在启动它的那个Activity所在的栈中。然而当我们用ApplicationContext去启动standard模式的Activity的时候就会报错,错误如下: E/AndroidRuntime(674): android.util.AndroidRuntimeException: Calling st

2016-03-09 22:14:37 322

原创 Activity生命周期

正常情况下onCreate()-->onStart()-->onResume()->onPause()-->onStop()-->onDestroy()异常杀死资源相关的系统文件发生改变导致Activity被杀死并重新创建当系统配置发生改变后,Activity会被销毁,其onPause、onStop、onDestroy均会被调用,同时由于Activity是在异常情况下终止的,系统会调用onSave

2016-03-09 21:44:40 257

原创 PreferenceActivity系统本身的设置页

PreferenceActivity 系统本身的设置页PreferenceActivity extends ListView 分组:PreferenceCategory 开关:CheckBoxference ListPreference EditTextPreference每一次设置,都会被Preference,这就是setting的数据持久化。//数组定义 <!--?xml ver

2016-03-07 23:41:24 333

原创 MediaMetadataRetriever类 取得媒体文件信息

MediaMetadataRetriever类 取得媒体文件信息MediaMetadataRetriever类提供了一个统一的接口用于从一个输入媒体文件中取得帧和元数据//从一个音乐中取得部分媒体信息MediaMetadataRetriever mmr=new MediaMetadataRetriever();String str=getExternalStorageDirectory()+"m

2016-03-07 23:33:27 1180

原创 GLSurfaceView

GLSurfaceView内嵌surface专门负责OpenGL渲染 1、管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上 2、能让opengl把内容渲染到上述的surface上 3、用户自定义渲染器(render) 4、让渲染器在独立的线程里运作,和UI线程分离 5、支持按需渲染和连续渲染GLSurf

2016-03-07 23:23:14 645

原创 MediaController

一个包含媒体播放器(MediaPlayer)控件的视图。包含了一些典型的按钮,像”播放(Play)/暂停(Pause)”, “倒带(Rewind)”, “快进(Fast Forward)”与进度滑动器(progress slider)。它管理媒体播放器(MediaController)的状态以保持控件的同步。这些控件会漂浮在通过setAnchorView()指定的视图上。如果这个窗口空闲3秒那么它将

2016-03-07 23:08:19 1052

原创 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 5092

原创 MD5 算法

MD5MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性。用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm).另外还有一种常用的消息摘要算法SHA1。Java 已经实现了MD5、SHA1算法。利用java.security.MessageDigest类就可以获取字符串和文件的MD5以及SHA1结果。字符串MD5public static String

2016-03-07 23:03:10 243

原创 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 352

原创 Android.mk文件

Android.mk文件核心部分是模块,模块可以用来指定静态库或共享库,其中只有共享库会被安装或复制到android应用程序包(apk文件)中,而静态库可以用来生成共享库。LOCAL_PATH 用来指定参与编译的C/C++源文件的位置。my-dir是个宏函数是由系统提供的,返回Android.mk文件所在目录的路径include $(CLEAR_VARS) 用来清空很多以LOCAL

2016-03-07 22:40:23 293

原创 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 670

原创 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 313

原创 Android 测试用例

编写测试用例测试是软件工程中一个非常重要的环节,而测试用例又可以显著地提高测试的效率和准确性,测试用例其实就是一段普通的程序代码,通常是带有期望的运行结果的,测试者可以根据最终的运行结果来判断程序是否能正常工作。创建测试工程测试工程通常不是独立存在的,而是依赖于某个现有工程的,一般比较常见的做法是在现有工程下新建一个tests文件夹,测试工程就存放在这里。那么我们就给BroadcastBestPra

2016-02-22 12:34:44 2108

原创 Intent 传递对象

Serializable 方式Serializable 是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。public class Person implements Serializable{ private String name; private int age; public String getName(

2016-02-22 11:16:47 223

原创 Android 标题

public void setTitle(CharSequence title) //改变标题内容setTitle("标题内容");requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏标题/* 隐藏标题和最上面的电池电量及信号栏(全屏)*/public void setFullScreen(){ requestWindowF

2016-02-22 10:48:22 243

原创 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 267

原创 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 562

原创 Android EventBus框架

//EventBus Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如网络请求等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus来实现//作为消息总线,有三个主要元素 /* 1. 事件

2016-02-17 18:03:53 197

原创 Android 中的缩略图的加载

//Android 中的缩略图加载/* 1、使用inJustDecodeBounds,读Bitmap的长和宽 2、根据bitmap的长宽和目标缩略图的长和宽。计算出inSampleSize的大小 3、使用inSampleSize,载入一个大一点的缩略图A 4、使用createScaseBitmap,将缩略图A,生成我们需要的缩略图B 5、回收缩略图A*//*

2016-02-16 19:40:19 347

原创 BitmapFactory.Options 图片解析

BitmapFactory.OptionsBitmapFactory.Options options= new BitmapFactory.Options(); options.inJustDecodeBounds = true; //避免OOM 该字段设置为true的话,那么返回的就不是Bitmap对象,而是返回该对象的宽和高的参数 BitmapFactory.decodeFile(

2016-02-16 19:37:12 271

原创 数据解析

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 324

原创 传感器

光照传感器SensorManager manager=(SensorManager)getSystemSeervice(Context.SENSOR_SERVICE);Sensor sensor=manager.getDefaultSenser(Sensor.TYPE_LIGHT);//TYPE_LIGHT 常量来指定传感器类型//对传感器输出的信号进行监听,就要借助SensorEventLi

2015-12-23 23:43:31 331

原创 LBS--定位

LocationManagerAndroid 中一般有三种位置提供器可供选择,GPS_PROVIDER、NETWORK_PROVIDER、PASSIVE_PROVIDER。其中前两种使用的比较多,分别表示使用GPS定位和使用网络定位。这两种定位方式各有特点,GPS定位精度比较高,但是非常耗电,而网络定位的精确稍差,但耗电量比较少。注意:定位功能必须要由用户主动去启用才行,不然任何应用都无法获取到手机

2015-12-22 23:54:44 814

原创 Android网络技术

网络技术WebViewpublic class MainActivity extends Activity{ private WebView webView; protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentV

2015-12-22 22:48:36 302

原创 线程---Thread

Threadnew Thread(){ public void run(){ //执行耗时操作 }}.start();Runnableclass MyThread implements Runnable{ public void run(){ //执行耗时操作 }}MyThread myThread=new MyThread()

2015-12-21 22:36:03 232

原创 服务---Service

Service非常适合用于去执行那些不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖于任何用户界面,即使当程序被切换到后台,或者用户打开了另外一个应用程序,服务仍然能够保持正常运行。服务并不是运行在一个独立的进程当中的,而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉时,所有依赖于该进程的服务也会停止运行。另外,服务并不会自动开启线程,所有的代码都是默认运行在主线程当中的。

2015-12-21 22:31:46 358

原创 Notification

通知Notification一般只有当程序进入到后台的时候我们才需要使用通知。使用NotificationManager来对通知进行管理。NotificationManager manager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);创建一个Notification对象,这个对象用于存储通知所需的各种信

2015-12-17 22:10:23 480

原创 内容提供器---Content Provider

Content Provider内容提供者主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性。目前,使用内容提供者是Android实现跨程序共享数据的标准方式。不同于文件存储和SharedPreferences存储中的两种全局可读写操作模式,内容提供器可以选择只对哪一部分数据进行共享,从而保证我们程序中的隐私数据

2015-12-16 22:19:51 378

原创 数据存储---数据持久化

Android 系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件存储,SharedPreference以及数据库存储。你还可以将数据保存在手机的SD卡中,不过使用文件、SharedPreference或数据库来保存数据会相对更简单一些,而且比起将数据保存在SD卡中会更加安全。文件存储文件存储是Android中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封

2015-12-15 22:09:09 375

原创 Git 版本控制

Git 版本控制下载地址: http://msysgit.github,io/配置身份: git config --global user.name "LZL" git config --global user.email "[email protected]" 验证是否配置成功: git config --global user.name git

2015-12-15 00:59:54 254

原创 广播接收器

标准广播时一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻收到这条广播消息,因此他们之间没有任何先后顺序可言。这种广播效率会比较高,但同时意味着它是无法被截断的。有序广播则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先收

2015-12-14 22:06:35 416

原创 StackOverflowError

Android开发中StackOverflowError错误实例分析一个复杂的layout嵌套较多的android界面,碰到了java.lang.StackOverflowError这个Fatal Exception,app程序crash退出。这个错误出现的比较奇怪,在我做技术调研的时候,这个界面是放在单独的一个程序中展示的,工作很正常,没有出现这个严重错误,当将其嵌入到一个ActivityGrou

2015-12-14 10:19:31 522

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除