
Android-基础
lzl370515231
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
IntentFilter的匹配规则
隐式调用需要Intent能够匹配目标组件的IntentFilter中所设置的过滤信息,如果不匹配将无法启动目标Activity。IntentFilter中的过滤信息有action、category、data。只有一个Intent同时匹配action类别、category类别、data类别才算完全匹配,只有完全匹配才能成功启动目标Activity。另外一点,一个Activity中可以有多个intent原创 2016-03-10 00:05:26 · 306 阅读 · 0 评论 -
GestureDetector手势初识
关于手势,大神的博客:http://blog.youkuaiyun.com/harvic880925/article/details/39520901 用于处理一些复杂的手势活动。//GestureDetector 手势GestureDetector 这个类对外提供了两个接口和一个外部类 接口:OnGestureListener OnDoubleTapListener(双击的监听) 外部类:原创 2016-03-31 00:48:50 · 500 阅读 · 0 评论 -
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 · 368 阅读 · 0 评论 -
Messenger--信使
Messenger可以在不同进程中传递Message对象,是一种轻量级的IPC方案,它的底层实现是AIDL。它对AIDL做了封装,使得我们可以更简单地进行进程间通信。它一次处理一个请求,因此在服务端我们不用考虑线程同步的问题。//服务端public class MessengerService extends Service{ private static final String TAG原创 2016-03-16 23:38:31 · 432 阅读 · 0 评论 -
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 · 315 阅读 · 0 评论 -
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 · 637 阅读 · 0 评论 -
Android EventBus框架
//EventBus Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如网络请求等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus来实现//作为消息总线,有三个主要元素 /* 1. 事件原创 2016-02-17 18:03:53 · 248 阅读 · 0 评论 -
Binder
Binder是Android中的一个类,它继承了IBinder接口。从IPC角度来说,Binder是Android中的一种跨进程通信方式,Binder还可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder,该通信方式在Linux中没有;从Android Framework角度来说,Binder是ServiceManager连接各种Manager(ActivityManager、Wind原创 2016-03-15 23:00:29 · 366 阅读 · 0 评论 -
Parcelable 序列化和反序列化
public class User implements Parcelable{ public int userId; public String userName; public boolean isMale; public Book book; }原创 2016-03-15 21:56:25 · 1243 阅读 · 0 评论 -
Serializable 序列化和反序列化
Serializable是Java所提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化操作。想让一个对象实现序列化,只需要这个类实现Serializable 接口并声明一个serialVersionUID即可,实际上,甚至这个serialVersionUID也不是必需的,我们不声明这个serialVersionUID同样也可以实现序列化,但是这将会对反序列化过程产生影响。//序列原创 2016-03-15 21:48:03 · 383 阅读 · 0 评论 -
IPC 机制---多线程模式
在Android中最有特色的进程间通信方式就是Binder了,通过Binder可以轻松地实现进程间通信。除了Binder,Android还支持Socket,通过Socket也可以实现任意两个终端之间的通信,当然同一个设备上的两个进程通过Socket通信自然也是可以的。多进程的情况分为两种:一、一个应用因为某些原因自身需要采用多进程模式来实现。二、当前应用需要向其他应用获取数据。Android中的原创 2016-03-15 21:29:56 · 1157 阅读 · 0 评论 -
BitmapFactory.Options 图片解析
BitmapFactory.OptionsBitmapFactory.Options options= new BitmapFactory.Options(); options.inJustDecodeBounds = true; //避免OOM 该字段设置为true的话,那么返回的就不是Bitmap对象,而是返回该对象的宽和高的参数 BitmapFactory.decodeFile(原创 2016-02-16 19:37:12 · 330 阅读 · 0 评论 -
Android 中的缩略图的加载
//Android 中的缩略图加载/* 1、使用inJustDecodeBounds,读Bitmap的长和宽 2、根据bitmap的长宽和目标缩略图的长和宽。计算出inSampleSize的大小 3、使用inSampleSize,载入一个大一点的缩略图A 4、使用createScaseBitmap,将缩略图A,生成我们需要的缩略图B 5、回收缩略图A*//*原创 2016-02-16 19:40:19 · 402 阅读 · 0 评论 -
返回到上一个Activity
startActivityForResult(intent,requestCode);onActivityResult(int requestCode,int resultCode,Intent data){}//第二个ActivitysetResult(RESULT_OK,intent);finish();//一般在onStop()之前调用onSaveInstanceState(Bun原创 2015-12-09 00:32:47 · 638 阅读 · 0 评论 -
Android 标题
public void setTitle(CharSequence title) //改变标题内容setTitle("标题内容");requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏标题/* 隐藏标题和最上面的电池电量及信号栏(全屏)*/public void setFullScreen(){ requestWindowF原创 2016-02-22 10:48:22 · 282 阅读 · 0 评论 -
Intent 传递对象
Serializable 方式Serializable 是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。public class Person implements Serializable{ private String name; private int age; public String getName(原创 2016-02-22 11:16:47 · 278 阅读 · 0 评论 -
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 · 398 阅读 · 0 评论 -
Activity的启动模式
standard 标准模式谁启动了这个Activity,那么这个Activity就运行在启动它的那个Activity所在的栈中。然而当我们用ApplicationContext去启动standard模式的Activity的时候就会报错,错误如下: E/AndroidRuntime(674): android.util.AndroidRuntimeException: Calling st原创 2016-03-09 22:14:37 · 375 阅读 · 0 评论 -
Activity生命周期
正常情况下onCreate()-->onStart()-->onResume()->onPause()-->onStop()-->onDestroy()异常杀死资源相关的系统文件发生改变导致Activity被杀死并重新创建当系统配置发生改变后,Activity会被销毁,其onPause、onStop、onDestroy均会被调用,同时由于Activity是在异常情况下终止的,系统会调用onSave原创 2016-03-09 21:44:40 · 299 阅读 · 0 评论 -
PreferenceActivity系统本身的设置页
PreferenceActivity 系统本身的设置页PreferenceActivity extends ListView 分组:PreferenceCategory 开关:CheckBoxference ListPreference EditTextPreference每一次设置,都会被Preference,这就是setting的数据持久化。//数组定义 <!--?xml ver原创 2016-03-07 23:41:24 · 379 阅读 · 0 评论 -
MediaMetadataRetriever类 取得媒体文件信息
MediaMetadataRetriever类 取得媒体文件信息MediaMetadataRetriever类提供了一个统一的接口用于从一个输入媒体文件中取得帧和元数据//从一个音乐中取得部分媒体信息MediaMetadataRetriever mmr=new MediaMetadataRetriever();String str=getExternalStorageDirectory()+"m原创 2016-03-07 23:33:27 · 1272 阅读 · 0 评论 -
GLSurfaceView
GLSurfaceView内嵌surface专门负责OpenGL渲染 1、管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上 2、能让opengl把内容渲染到上述的surface上 3、用户自定义渲染器(render) 4、让渲染器在独立的线程里运作,和UI线程分离 5、支持按需渲染和连续渲染GLSurf原创 2016-03-07 23:23:14 · 733 阅读 · 0 评论 -
MediaController
一个包含媒体播放器(MediaPlayer)控件的视图。包含了一些典型的按钮,像”播放(Play)/暂停(Pause)”, “倒带(Rewind)”, “快进(Fast Forward)”与进度滑动器(progress slider)。它管理媒体播放器(MediaController)的状态以保持控件的同步。这些控件会漂浮在通过setAnchorView()指定的视图上。如果这个窗口空闲3秒那么它将原创 2016-03-07 23:08:19 · 1138 阅读 · 0 评论 -
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 · 5372 阅读 · 0 评论 -
MD5 算法
MD5MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性。用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm).另外还有一种常用的消息摘要算法SHA1。Java 已经实现了MD5、SHA1算法。利用java.security.MessageDigest类就可以获取字符串和文件的MD5以及SHA1结果。字符串MD5public static String原创 2016-03-07 23:03:10 · 289 阅读 · 0 评论 -
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 · 405 阅读 · 0 评论 -
Android.mk文件
Android.mk文件核心部分是模块,模块可以用来指定静态库或共享库,其中只有共享库会被安装或复制到android应用程序包(apk文件)中,而静态库可以用来生成共享库。LOCAL_PATH 用来指定参与编译的C/C++源文件的位置。my-dir是个宏函数是由系统提供的,返回Android.mk文件所在目录的路径include $(CLEAR_VARS) 用来清空很多以LOCAL原创 2016-03-07 22:40:23 · 356 阅读 · 0 评论 -
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 · 746 阅读 · 0 评论 -
Android 测试用例
编写测试用例测试是软件工程中一个非常重要的环节,而测试用例又可以显著地提高测试的效率和准确性,测试用例其实就是一段普通的程序代码,通常是带有期望的运行结果的,测试者可以根据最终的运行结果来判断程序是否能正常工作。创建测试工程测试工程通常不是独立存在的,而是依赖于某个现有工程的,一般比较常见的做法是在现有工程下新建一个tests文件夹,测试工程就存放在这里。那么我们就给BroadcastBestPra原创 2016-02-22 12:34:44 · 2189 阅读 · 0 评论 -
Android 基础学-4 杂记
隐藏标题栏requestWindowFeature(Window.FEATURE_NO_TITLE);使用菜单创建Menupublic boolean onCreateOptionsMenu(Menu menu){ getMenuInflater().inflate(R.menu.main,menu); return true;}//第一个参数用于指定我们通过哪一个资源文件来原创 2015-11-29 12:37:31 · 334 阅读 · 0 评论 -
数据解析
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 · 391 阅读 · 0 评论 -
传感器
光照传感器SensorManager manager=(SensorManager)getSystemSeervice(Context.SENSOR_SERVICE);Sensor sensor=manager.getDefaultSenser(Sensor.TYPE_LIGHT);//TYPE_LIGHT 常量来指定传感器类型//对传感器输出的信号进行监听,就要借助SensorEventLi原创 2015-12-23 23:43:31 · 377 阅读 · 0 评论 -
Android 基础学-4 文件目录
文件目录srcsrc目录是放置我们所有Java代码的地方gen这个目录里的内容是自动生成的,主要有一个R.java文件。assets主要可以存放一些随程序打包的文件,在你得程序运行时可以动态读取到这些文件的内容。另外,如果你得程序中使用到了WebView加载本地网页的功能,所有网页相关的文件也都存放在这个目录下。bin这个目录你也不需要过多关注,它主要包含了一些在编译时自动产生的文件。其中会有原创 2015-11-29 11:44:03 · 319 阅读 · 0 评论 -
Android 基础学-4 Android系统提供
Android系统提供四大组件Activity(活动)、Service(服务)、Broadcast Receiver(广播接收器)、Content Provider(内容提供器)丰富的系统控件SQLite 数据库不仅支持标准的SQL语法,还可以通过Android封装好的API进行操作,让存储和读取数据变得非常方便。地理位置定位现在的Android手机都内置有GPS,走到哪儿都可以定位到自己的位置原创 2015-11-29 11:09:11 · 352 阅读 · 0 评论 -
数据存储---数据持久化
Android 系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件存储,SharedPreference以及数据库存储。你还可以将数据保存在手机的SD卡中,不过使用文件、SharedPreference或数据库来保存数据会相对更简单一些,而且比起将数据保存在SD卡中会更加安全。文件存储文件存储是Android中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封原创 2015-12-15 22:09:09 · 437 阅读 · 0 评论 -
Android-基础学4 日志工具Log
日志工具LogLog.v()用于打印那些最为琐碎的,意义最小的日志信息。对应级别verbose,是Android日志里面级别最低的一种。Log.d()这个方法用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应的级别debug,比verbose高一级。Log.i()这个方法用于打印一些比较重要的数据,这些数据应该是你非常想看到的,可以帮助你分析用户行为的那种。对应级别info原创 2015-11-29 12:02:29 · 282 阅读 · 0 评论 -
广播接收器
标准广播时一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻收到这条广播消息,因此他们之间没有任何先后顺序可言。这种广播效率会比较高,但同时意味着它是无法被截断的。有序广播则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先收原创 2015-12-14 22:06:35 · 473 阅读 · 0 评论 -
StackOverflowError
Android开发中StackOverflowError错误实例分析一个复杂的layout嵌套较多的android界面,碰到了java.lang.StackOverflowError这个Fatal Exception,app程序crash退出。这个错误出现的比较奇怪,在我做技术调研的时候,这个界面是放在单独的一个程序中展示的,工作很正常,没有出现这个严重错误,当将其嵌入到一个ActivityGrou原创 2015-12-14 10:19:31 · 587 阅读 · 0 评论 -
碎片---Fragment
Fragment两种生成方式静态生成碎片public class LeftFragment extends Fragment{ public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstatnceState){ View view=inflater.inflate(原创 2015-12-13 22:39:00 · 335 阅读 · 0 评论 -
制作Nine-Patch图片
Nine-Patch是一种被特殊处理过的png图片,能够制定哪些区域可以被拉伸而哪些区域不可以。制作Nine-Patch图片Android sdk目录下有一个tools文件夹,在这个文件夹中找到draw9patch.bat文件,我们就是使用它来制作Nine-Patch图片的。双击打开之后,在导航栏点击File-Open9-patch将图片加载进来,我们可以在图片的四个边框绘制一个个的小黑点,在上边原创 2015-12-13 22:20:19 · 325 阅读 · 0 评论