自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 一个小问题——宽,高和图片大小。

打开相册查看一张图片数据如下:JPG格式宽度:1920px高度:2560px文件大小:1.85MB现在手机上一般采用32位ARG_8888格式保存像素,也就是说一个像素点占用32位,4byte。所以这张图片的原始数据所占内存大小为1920x2560x4/1024/1024 = 18.75MB这里的文件大小为1.85MB是因为JPG格式的图片是压缩之后得到的,有一

2014-07-26 12:19:40 1807

原创 INSTALL_FAILED_MISSING_SHARED_LIBRARY

install FMRadio.apk的时候一直报这个错。原因是高通的FMRadio的jni库和apk是分开的,也就是说直接编译生成的apk中是不包含这个库的,因此install的时候会提示没有共享库。对这个apk的办法是采用push的方式。

2014-06-27 16:02:07 903

转载 Timer和TimerTask详解

http://blog.csdn.net/ahxu/article/details/2496101.概览Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。简单的一个例程:import java.util.Timer;i

2014-04-26 15:38:24 780

转载 ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType)

1 imageView.setScaleType(ImageView.ScaleType.FIT_XY );  1 这里我们重点理解ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType)。android:scaleType是控制图片如何resized/moved来匹对ImageVie

2014-04-26 15:11:53 758

转载 Android动画之translate(位移动画)

Android动画之translate(位移动画)上一篇文章讲了 Android的左右滑动切换,实现过程是非常简单,一些新手可能会向深入了了解Activity切换的原理,下面主要对左右滑动进行深入的探讨,并以项目中的一个切换效果来进一步了解。Activity的切换效果使用的是Android的动画效果,Android的动画在官方有相关资料:http://developer.a

2014-04-25 19:15:39 801

原创 Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(2)

配置了configChange属性之后,横竖屏切换时不用再杀死和重新启动Activity了,想想Android系统设置这个属性的初衷,横竖屏切换时需要加装不同的变量信息,因此杀死当前Activity启动切屏后的Activity是一个理所应当的过程,但是不够灵活,有些状态下,我们不希望横竖屏切换时Activity被杀死,因此configChange这个属性就能发挥一些作用了,我们只需要在onConf

2014-04-19 14:17:17 2550

原创 Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(1)

研究这个问题的初衷在于项目中碰到了一个问题:横屏的时候灭屏再亮屏,亮屏的时候用户可以清晰的看到先启动竖屏(过程1)再切换到横屏的过程,由于灭屏的时候onSaveInstanceState()保存的时横屏时的状态信息,因此过程1竖屏会使用到横屏的状态参数而且这一过程用户是可见的,因此会导致一些意想不到的Bug的出现。探究使用的实例中我用了屏幕的横竖屏和宽这两个配置信息来说明生命周期中此时系统所知

2014-04-19 09:10:45 6488

转载 可能产生内存泄露的原因

http://blog.sina.com.cn/s/blog_75016706010149zl.html1.资源对象没关闭造成的内存泄漏描述:资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们,以便它们的缓冲及时回收内存。它们的缓冲不仅存在于java虚拟机内,还存在于java虚拟机外。如果我们仅仅是把它的引用设置为null,而不关

2014-04-11 16:56:00 1111

转载 深入理解Java的Finalize

基本预备相关知识 对象的销毁过程 对象重生的例子 对象的finalize的执行顺序 何时及如何使用finalize 参考 基本预备相关知识 1 java的GC只负责内存相关的清理,所有其它资源的清理必须由程序员手工完成。要不然会引起资源泄露,有可能导致程序崩溃。 2 调用GC并不保证GC实际执行。 3 finalize抛出的未捕获异常只会导致该对

2014-04-10 15:51:48 720

转载 linux上svn解决冲突的办法

linux上SVN解决冲突的办法工程师A修改了a.txt的第一行,提交了。工程师B也修改了a.txt的第一行,然后执行svn up,这时SVN提示了:(以下,你开始扮演工程师B的角色了)$ svn up在 “a.txt” 中发现冲突。选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,(mc) 我的版本, (tc) 他人的版本,(s) 显示全部选

2014-04-02 10:35:24 878

原创 onActivityResult()得到的值为null可能的情况分析

1. 是否正确的调用了setResult()。2. 是否是在Activity的finish()调用之前调用的setResult()。3. 如果是按返回键返回的看是否自主消化掉了onBackPressed()函数,这个函数里调用了finish()函数,因此我们需要自主消化掉这个函数。既然如此,也别再复写的函数中调用super.onBackPressed()。4. 是否使用的Intent.

2014-03-24 09:30:47 2460

原创 Java启动新线程的额外开销

在启动一个新线程的时候会有一定时间的额外开销,因此并不是所有情况下都应使用多线程。如下的代码段进行简单实验探讨:

2014-03-19 21:26:10 2560

转载 如何成为Android开发高手

如何成为Android开发高手 很多Android开发者已经度过了初级、中级,如何成为一个Android高手呢? Android123就各个级别的程序员应该掌握哪些内容作为下面分类。   一、初级   1. 拥有娴熟的Java基础,理解设计模式,比如OOP语言的工厂模式要懂得。    2. 掌握Android UI控件、Android Java层AP

2014-02-19 22:49:13 878

转载 如何成为JAVA高级程序员

觉得讲得很有道理,和大家一起分享,有什么好的意见,大家也可以表达哈.转载: http://hi.baidu.com/%D3%EA%B7%D7%B7%C9_happy/blog/item/b2a6ea66d1672323ab184cb7.html或许您已经读过我的那篇小文《如何成为java初级程序员》,那里面只介绍了成为一个JAVA程序员应该具备的一些知识。我

2014-02-19 22:47:51 1070

转载 二进制表示

二进制表示(转) 一 11111111   =   -1     10000000   =   -128         现在证明   10000000   表示的是   -128而不是-0     10000000   +   00000001   =   10000001   =   -127         显然   -128   +   1   =   -1

2014-02-14 10:26:36 1065

原创 自定义preference onBindView易犯的错误

public class PowerInformationPreference extends Preference { private TextView firstName;    public PowerInformationPreference(Context context, AttributeSet attr, int defStyle) {        su

2014-01-16 17:19:45 5596

转载 电量统计之一:PowerProfile.java与power_profile.xml

http://blog.csdn.net/sjz_iron/article/details/8726661现在诸多关于电池管理的应用做的极其绚烂,可实现如耗电应用排行、剩余时间计算、关闭耗电程序以节省电量等功能,这两天对此模块进行了研究,总结如下。        首先解释下各软硬件耗电量的计算。假设设备(如WIFI)单位时间内消耗的电量为w,运行时间为t,则其在这段时间内的耗电量为W=

2014-01-15 15:18:14 1499

原创 从Proxy-Stub到aidl

从Proxy-Stub设计模式到aidl工具

2014-01-10 10:21:28 2310

原创 简话设计模式之Proxy-Stub模式

从Proxy设计模式到Proxy-Stub

2014-01-10 10:07:28 4411

原创 简话设计模式之Proxy模式

Proxy设计模式在Android中的应用,以及如何使用Binder机制实现Java层的夸进程调用。

2014-01-09 16:39:57 1498 1

原创 Android事件处理之MotionEvent

我们不讨论按键,滚动球,鼠标事件,我们这里事件特指触摸事件。在Android中,谈到事件,有两个需要考虑的地方,一个就是事件本身,这是一个什么事件,这个事件有哪些信息等,这就是我们本节讨论的内容,事件的所有属性都存储在MotionEvent这一个类的对象中,另一个需要考虑的是事件的处理,怎么对不同的事件进行不同的处理,在什么地方处理事件等,这部分内容参照之前的博客:手势检测GestureDet

2014-01-06 15:41:57 2215

原创 简话设计模式之Observer(观察者)模式

考虑如下情境:class A{ functionA(){ 1; }}1,我们想要拓展functionA()的功能;2,我们希望在不同的情况下functionA()有不同的实现(多态)。想到多态,我们可以想到用继承实现:class childA extends A{ functionA(){ 1; 2; }}class childB extends A{ fun

2014-01-06 15:22:20 897

原创 Android4.2源码View.draw(Canvas canvas)中canvas分析

ViewGroup.java中绘制从dispatchDraw()开始,这里的Canvas由ViewRootImpl.java中传入,此时Canvas是屏幕大小的画布。@Override protected void dispatchDraw(Canvas canvas) {... more |= drawChild(canvas, chil

2014-01-03 10:51:20 2289

原创 视图动画实现类的分工

视图动画的实现是不停的刷新绘制区域,而绘制区域是根据刷新时的时间动态变化的,这样就形成了动画。视图动画的实现与三个类密切相关,一个就是视图本身View.java,一个是Animation.java,还有一个是Transformation.java。本文分析这三个类在视图动画框架中的分工。首先我们分析View.java,回到区域刷新绘制的地方,drawAnimation()函数。 priv

2014-01-02 12:16:54 1095

原创 源码分析视图动画是如何实现的

我们知道视图动画的启动方式如下:ImageView image = (ImageView) findViewById(R.id.image);Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);image.startAnimation(hyperspaceJump);

2014-01-02 12:16:44 1162

原创 View视图的根视图到底是什么

如上图所示,几乎所有的Activity的视图树都是从PhoneWindow$DecorView——>LinearLayout——>FrameLayout(id/content)开始的,接下来的内容才是我们在layout中定义的视图的开始,现在从源码中看看这样的结构是怎么形成的。Activity视图加载总是从setContentView()开始的: public void setCon

2013-12-11 17:23:43 3440

原创 浅谈对Window的理解

学习Surface系统之前对于窗口(Window),视图(View)这两个概念的理解非常模糊,对于它们所扮演的角色也总是弄混淆,而上面这幅图则清楚的明确了这两个概念。我以为对于Android系统而言,窗口这个概念等效于View视图,或者说并没有窗口这个东西的存在。至于我之前所以为的View视图附着在窗口上不过是view附着在DecorView上罢了。那么系统中的Window.java这个类呢?这是

2013-12-10 18:09:05 1411

原创 WindowManager和Window添加View的区别

WindowManager中有个添加View的函数:public void addView(View view, ViewGroup.LayoutParams params)Window中有个添加View的函数:public void addContentView(View view, ViewGroup.LayoutParams params)弄清楚这两个类和这两个函数的作用设计

2013-12-10 17:49:46 6129

转载 Android视图动画框架详解

Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果,本文将向读者阐述 Android 的动画框架是如何实现的。任何一个框架都有其优势和局限性,只有明白了其实现原理,开发者才能知道哪些功能可以利用框架来实现,哪些功能须用其他途径实现。Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换 ( 平移、缩放、旋转 ) 产生动画效果

2013-12-09 15:07:09 1049

原创 从BouncingBall.java中学习使用属性动画记录

/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * Yo

2013-12-06 16:17:33 1218

原创 Animation总结

Android提供了两类的Animation:1. Property Animation——相关类在包android.animation中2. View Animation——相关类在android.view.animation中,也即它是与视图相关的View Animation又分了两类:(1)Frame Animation——它相关的使用类是AnimationDrawa

2013-12-05 16:34:49 1005

原创 onMeasure实例分析

上面这个两个视图是Android API中没有给出来的但在来电接听和闹钟被使用到的一个widget视图——GlowPadView.java我们通过源码来看看这个View的大小是怎么通过onMeasure来控制的。 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

2013-12-03 17:29:55 2554

原创 自定义View之onMeasure()

可以说重载onMeasure(),onLayout(),onDraw()三个函数构建了自定义View的外观形象。再加上onTouchEvent()等重载视图的行为,可以构建任何我们需要的可感知到的自定义View。本节我们探索自定义View中onMeasure()起到了什么样的作用,题外要插的一句是,Activity框架,View框架中大量的on函数基本上都应用到了Template模式,掌握这一

2013-12-03 15:55:10 7673 4

原创 TouchDelegate分析

在View.java中,使用TouchDelegate的代码很少,它的实现机制也非常的简单。先看看它在View.java中的代码: /** * The delegate to handle touch events that are physically in this view * but should be handled by another view.

2013-12-02 12:22:56 1261

转载 View的状态属性简介

android:drawable 放一个drawable资源android:state_pressed 是否按下,如一个按钮触摸或者点击。android:state_focused 是否取得焦点,比如用户选择了一个文本框。android:state_hovered 光标是否悬停,通常与focused state相同,它是4.0的新特性android:state_selected 被

2013-12-01 12:30:32 1095

原创 ViewGroup中的触摸消息派发dispatchTouchEvent

@Override public boolean dispatchTouchEvent(MotionEvent ev) { if (mInputEventConsistencyVerifier != null) { mInputEventConsistencyVerifier.onTouchEvent(ev, 1);//Eng版本中会对输入事件进行一

2013-12-01 10:37:57 1643

原创 触摸消息的整体派发流程

先简单说明下在客户端中,消息的总体派发机制:在ViewRootImpl.java的handleMessage()是处理所有消息的地方,其中MSG_PROCESS_INPUT_EVENTS对应于按键消息,触摸消息,滚轮消息和摇杆消息。接收到这个消息后,调用doProcessInputEvents(),这个函数再调用deliverInputEvent()分发具体消息,其中触摸消息对应于delive

2013-11-29 15:38:02 1464

原创 GestureDetector应用实例

MotionEvent中定义了基本事件,View中定义了一些简单事件的处理接口,GestureDetector拓展了View中的事件接口,提供了一些复杂事件的接口。框架接口(API)的好处是框架已经帮我们定义好了为什么onDoubleClick表示双击事件,而我们只需要直接使用即可。下面通过实例说明如何使用GestureDetector类实现复杂事件。package com.sean.gest

2013-11-28 15:14:11 1110

原创 手势检测GestureDetector的实现原理

首先简单说明一下触摸屏事件的实现过程:触摸屏驱动检测到MotionEvent——>MotionEvent被

2013-11-28 14:04:07 2461

原创 Android4.2.2 Gallery2源码分析(11)——Gallery的层次结构图

总结前文的内容,画出Gallery的基本架构层次图如下:这里我省略了ActionBar等内容,只说主要界面。Activity主界面对应于GLRootView(继承自GLSurfaceView)。由于Gallery的Activity使用了ActivityState这一类来保存不同的页面对象,在Activity中根据需求加载不同的ActivityState对象。ActivityState中

2013-11-15 16:43:32 6545 3

空空如也

空空如也

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

TA关注的人

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