- 博客(39)
- 收藏
- 关注
原创 android WindowManager
项目中有一个到时锁屏的的功能,就是当到达特定时间后,程序弹出一个蒙层将界面锁住,用户不能进行其他操作 (ps:按home键和back键蒙层也还在),除非输入密码或按规定操作,才可移除蒙层。 现将关键的使用代码简化贴出以供参考:public class MainActivity extends Activity { private WindowManager.Layout
2017-07-31 10:22:11 296
原创 Android:Layout_weight属性解析
Layout_weight属性只有在Linearlayout中才有效果。该属性跟android:layout_width为wrap_content和match_parent有很大关系。简单的说: 以如下布局为例: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi
2017-07-31 10:22:02 212
原创 Afinal的简单应用(二)
上篇中叙述了Afinal的finalDB和finalActivity的用法,接下来讲FinalHttp和FinalBitmap。 FinalHttp的使用方法: FinalHttp 对 HttpClient再次封装,最简洁的就是增加了许多回调的方法,对Get 和 Post 请求进行了简化。此外还有put,delete和download方法。另外一点就是FinalHttp
2017-07-31 10:21:54 334
原创 afinal的简单应用(一)
Afinal简介:Afinal 是一个android的sqlite orm 和 ioc 框架。同时封装了android中的http框架,使其更加简单易用;使用finalBitmap,无需考虑bitmap在android中加载的时候oom的问题和快速滑动的时候图片加载位置错位等问题。Afinal的宗旨是简洁,快速。约定大于配置的方式。尽量一行代码完成所有事情。Afinal包含四大
2017-07-31 10:21:45 216
原创 android webView与js交互
android中通过WebView控件可以加载网页和本地的html文件。下面是一个简单的android与js交互Demo。 主类:public class MainActivity extends Activity { WebView webview; Button btn; @SuppressLint({ "SetJavaScriptEnabled", "Javasc
2017-07-31 10:21:38 286
原创 android 按钮倒计时读秒
最近项目中有涉及到android倒计时读秒功能的实现,于是上网搜了一下,各种方式都有,但是感觉要么存在bug,要么有点复杂,于是在参考了一些他人的实现方式后,自己写了一个。代码如下:public class MainActivity extends Activity { private TimeCount timeCount; private Button btn; protec
2017-07-31 10:21:32 1433
原创 广播机制方式
安卓系统中广播可以分为两类:普通广播和有序广播。 普通广播是完全异步的,可以在同一时刻(逻辑上)被所有接收者接收到,消息传递的效率比较高,但缺点是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播,就相当于普通的收音机广播; 有序广播则可以定义接受者的优先级,可以在清单文件中配置(intent-filter元素的android:priority属性)或者代
2017-07-31 10:21:24 419
原创 关于 android service 和 thread
在安卓系统中,service是运行在主线程中的,而thread是用来创建子线程的。二者毫无关系! thread的运行时独立于activity的,当一个activity被销毁时,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。当 Activity 被 finish 之后,你不再持有该 Thread 的引用。另一方面,你没有办法在不
2017-07-31 10:21:16 423
原创 handler机制
andriod提供了Handler 和 Looper 来满足线程间的通信。handler是先进先出原则,而looper是用来轮询消息队列的。handler是存在于主线程中的,用来处理子线程通过message发来的数据信息,配合主线程更新UI页面。 handler有两个作用: 安排消息或Runnable 在某个主线程中某个地方执行; 安排一个动作在不
2017-07-31 10:21:10 237 1
原创 android项目导入eclipse最后不能点击next和finish
一般来说这个问题都是因为项目名称重复了,也就是说将要导入的这个项目的名称与eclipse中原本就存在的某一项目的名称重复了,注意是项目名称,如图中红色圈内所示。最简单的解决方法就是先将eclipse中原来的项目删除,但是如果改项目还有用,那么只需要将eclipse中的项目删除就好,之后还可以再导回来;若没有用了,删除时就可以把delete project content是on disk勾上,直接
2017-07-31 10:21:00 4568 1
原创 ofbiz安装
OFBIZ安装在官网下载ofbiz安装包。地址:http://ofbiz.apache.org/download.htmljava环境强烈推荐JDK1.6版本。虽然更高的版本也可,但是有时候需要更改一些配置文件,对新手来说很麻烦。还有ant包配置环境变量,包括:java的和 ant的之后解压ofbiz安装包。如解压到d:/OFBIZ在命令提示符窗口切换到解压ofbiz安装的文
2017-07-31 10:20:54 425
原创 Windows Installer程序包问题
有时候当安装软件时会提示“Windows Installer 程序包有问题,此安装需要的程序不能运行。请与您的支持人员或程序包开发商联系”,去‘服务’看了Windows Installer也启动了,但就是提示错误。 这时不妨试试这个解决办法:下载安装微软提供的Windows Installer CleanUp Utility,它的主要功能是清除程序的Windows Installer配置信息
2017-07-31 10:20:46 5774
原创 配置weblogic
Weblogic配置文件过程中,在“配置管理服务器”处一般来说要单独取名字与adminServer区分,并且端口也要从新选择。
2017-07-31 10:20:38 159
原创 创建用户 授权
MYSQL中创建新用户语句CREATE USER user01@'localhost' IDENTIFIED BY 'password1';mysql授权:user管理db全部权限GRANT ALL PRIVILEGES ON db.* TO user;
2017-07-31 10:20:30 193
原创 java环境配置
java环境变量配置:classpath:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;Path:%JAVA_HOME%\bin;Java_home:C:\Program Files\Java\jdk1.8.0_25
2017-07-31 10:20:22 168
原创 Java JVM解析
类加载的过程:类从被加载到虚拟机内存开始,到被卸载出内存为止,生命周期是:加载、验证、准备、解析、初始化、使用和卸载。 加载阶段:(1)通过一个类的权限定名来获取此类的二进制字节流 (2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 (3)在java堆中生成一个代表这个类的class对象,作为方法区这些数
2017-07-29 19:14:55 1168
原创 (二十二) IPC机制通讯
IPC是Inter-Process Communication的缩写。多进程简介Android对单个应用的内存做了限制,早期版本可能是16M。通过给四大组建指定Android:process属性,开启多线程模式,无其他方法。特殊情况通过jni在native层fork一个新的进程。进程以“:”开头的是当前进程的私有进程,其他组件不能和他跑在同一进程,全称是“:”前加包名;而进
2017-07-29 19:06:15 244
原创 (二十一)Android内存、性能优化
性能优化的方法布局优化:利用、以及ViewStub优化 标签只支持以android:layout开头的属性,若设置了android:layout_*属性,则必须有android:layout_width(height)属性。也可设置 id,若布局也有id,以include指定的id为准。 标签可以减少布局的层级。 ViewStub继承了View,
2017-07-29 19:04:08 274
原创 (二十)四大组件的工作过程-ContentProvider
ContentProvider是一种内容共享形组件,通过Binder向其他组件乃至其他应用提供数据,当其所在的进程启动时,CP会同时被启动并被发布到AMS中。注意:这个时候CP的onCreate方法会先于Application的onCreate方法执行。一个应用启动时,入口方法为ActivityThread的main方法,它是一个静态方法,在它内部会创建ActivityThread的实例并创建
2017-07-29 18:59:25 269
原创 (十九)四大组件的工作过程-BroadcastReceiver
广播的注册过程静态广播在程序安装时由系统自动完成注册,具体是由PMS来完成注册动态广播: 1、由ContextWrapper的registerReceiver方法开始,交给ContextImpl的registerReceiver方法来处理。 2、ContextImpl的registerReceiver方法调用自己的registerReceiverInternal方法
2017-07-29 18:57:43 249
原创 (十八)四大组件的工作过程-Service
Service的工作过程启动过程:从ContextWrapper的startService方法来看,看到由ContextImpl的mBase对象的startService方法开始,在startService方法里返回startServiceCommon方法,在该方法里,通过ActivityManagerNative.getDefault()方法启动service。该star
2017-07-29 18:55:36 525
原创 (十七)四大组件的工作过程-Activity
Activity的工作过程从startActivity()方法分析,他有多种重载方法,最终都会调用startActivityForResult(Intent intent,int requestCode,Bundle options)方法,在此方法中会判断mParent对象是否为空,为空进行启动逻辑,调用Instrumentation的execStartActivity方法,需注意mMainT
2017-07-29 18:47:11 204
原创 (十六)Bitmap的加载和Cache
Bitmap的高效加载Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位 Bitmap.Config ARGB_8888:每个像素占四位,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位Bitmap.Config RGB_565:每个像素占四位,即R=5
2017-07-29 18:40:32 263
原创 (十五)Android的线程和线程池
进程:可并发执行且具有独立功能的程序,是操作系统进行资源分配的基本单位。线程:处理器调度和运行的基本单位。Android中的线程分为主线程和子线程,主线程的作用是运行四大组件以及处理他们和用户的交互,而子线程的作用则是执行耗时任务,如网络请求、I/O操作等。从Android3.0后,,系统要求网络访问要在子线程中进行,以防出现ANR现象。 Android中的线程形态之AsyncTa
2017-07-29 18:24:27 273
原创 (十四)Android的消息机制Handler
Android的消息机制主要指的是Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。MessageQueue的中文翻译是消息队列,但其内部存储结构并非队列,而是单链表的数据结构来储存消息列表。Looper可以理解为消息循环,MessageQueue只能存储消息,不能处理 ,而Looper则可以,它会以无限循环的形式去查询讯是否有新的消息。
2017-07-29 18:13:02 197
原创 (十三)Window的创建过程
View是android中视图的呈现方式,但View不能单独存在,必须依附Window这个抽象的概念上,因此有视图的地方就有Window。 Activity的Window的创建过程 Activity的启动过程很复杂,最终会由ActivityThread中的performLaunchActivity()来完成整个启动过程,在此方法中会通过类加载器创建Activity的
2017-07-29 12:19:03 281
原创 (十二)Window和WindowManager的使用解析
Window是一个抽象类,具体实现是PhoneWindow,具体实现位于WindowManagerService中。WindowManager和WindowManagerService的交互是一个IPC的过程。 WindowManager的LayoutParams有两个参数很重要,Flags,表示Window的属性,Type,表示Window的类型。 Window有三种
2017-07-29 12:06:14 331
原创 (十一)RemoteViews的使用解析
使用场景:桌面小部件和通知栏。PendingIntent:待定的意图。 支持三种待定意图:getActivity(Context context,int requsetCode,Intent intent,int Flag)相当于Context.startActivity(intent) getService(Co
2017-07-29 12:02:07 658
原创 (十 )View的事件分发机制
点击事件的事件分发,其实就是对MotionEvent事件的分发,即当一个MotionEvent产生后,系统需要把这个事件传递给一个具体的View,而这个传递过程就是分发过程。ViewGroup包含三个方法:dispatchTouchEvevt()、onInterceptTouchEvent()(默认返回false)、onTouchEvent()View包含两个方法:
2017-07-29 09:46:30 239
原创 (九)View的滑动事件
View提供获取坐标的方法: getTop(),getLeft(),getRight()和getBottom()。 获取的是View自身到父布局上下左右的距离。MotionEvent提供的方法:getX()和getY()方法获取的是点击事件距离控件左上的距离。即视图坐标。getRawX()和getRawY()是获取的是点击事件距离整个屏幕顶边的距离,是android坐标
2017-07-29 09:42:28 373
原创 (八)Android的动画机制
实现原理:每次绘制视图时View所在的ViewGroup中的drawChild函数获取该View的Animation的Transformation值,然后调用canvas.concat(transformToApply.getMatrix()),通过矩阵运算完成动画帧,若动画未完成,就继续调用invalidate函数,启动下次动画来完成绘制。视图View动画:AlphaAnimatio
2017-07-29 09:35:32 239
原创 (七)android的绘图机制&&Drawable
首先是关于cavans的save和restore方法,save是保存状态。restore是恢复保存之前的状态, 防止save后对Canvas执行的操作对后续的绘制有影响。如:先save(状态1,坐标左上角为0,0),再调用rotate方法做操作(画线之类)(状态2 坐标系旋转90度 右上角为0,0),再调用restore方法恢复到状态1(坐标左上角为0,0 但 所画的线还在,不变).
2017-07-29 09:32:56 200
原创 (六)VIew的绘制过程-measure、layout、draw
View的measure过程由其measure方法来完成,measure是一个final类型的方法,不能重写,因此需在measure方法中调用View的onMeasure方法,在onMeasure方法中又调用setMeasuredDimension方法来设置View宽/高的测量值,该方法的参数是方法getDefaultSize(int size,int measureSpec),该方法在spe
2017-07-27 19:05:25 350
原创 (五)View的测量 MeasureSpec类
MeasureSpec类 MeasureSpec是一个32位的int值,高两位为SpecMode(测量模式),低30位为SpecSize(测量大小)。 SpecMode(测量模式)分类: EXACTLY模式:父容器已经测出了View所需要的精确大小,此时View的最终大小就是SpecSize所指定的值。对应math_parent和具体数值两种模式。
2017-07-27 19:03:50 257
原创 (四)View的控件架构
Android的控件架构 Android中控件大致分为ViewGroup控件和View控件。在Activity中使用的findViewbyId()方法,就是在控件树中以深度优先遍历查找对应元素。 android UI架构图每个Activvity都包含一
2017-07-27 19:02:17 440
原创 (三)Activity的启动模式
Activity一共四种启动模式:standard、singleTop、singleTask、singleInstance一个任务栈可以有多个实例,每个实例可以属于不同的任务栈。standard模式:标准模式,系统默认。每次启动Activity都会创建新的实例,谁启动的这个Activity,这个Ativity就运行在启动他的那个Activity所在的栈中。但非Activity类型的Cont
2017-07-27 19:01:29 173
原创 (一)activity的生命周期分析
onCreate:Activity被创建,做初始化工作。 onReStart:activity正在重新启动。如:当前activity从不可见 变为可见。 onStart: Activity已经可见,但不可与用户交互。(在后台,人看不到)。 onResume:Activity可见并且可与用户交互。 onPause:Activity正在停止,正常情况会紧
2017-07-27 18:58:25 161
原创 (二)onSaveInatanceState()和onRestoreIntanceState()
当系统只会在activity 异常终止时,会通过调用onSaveInstanceState()方法(在onStop方法之前,可在onPause之前和之后)将Activity状态保存到Bundle对象中。当Activity被重新创建后,调用onRestoreInstanceState()(在onStart方法后),把保存的Bundle对象传给onRestoreInstance()和onCreat
2017-07-27 18:56:38 544
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人