Android
文章平均质量分 69
伊凤行天下
一直白痴
展开
-
一个小问题——宽,高和图片大小。
打开相册查看一张图片数据如下:JPG格式宽度:1920px高度:2560px文件大小:1.85MB现在手机上一般采用32位ARG_8888格式保存像素,也就是说一个像素点占用32位,4byte。所以这张图片的原始数据所占内存大小为1920x2560x4/1024/1024 = 18.75MB这里的文件大小为1.85MB是因为JPG格式的图片是压缩之后得到的,有一原创 2014-07-26 12:19:40 · 1842 阅读 · 0 评论 -
Android事件处理之MotionEvent
我们不讨论按键,滚动球,鼠标事件,我们这里事件特指触摸事件。在Android中,谈到事件,有两个需要考虑的地方,一个就是事件本身,这是一个什么事件,这个事件有哪些信息等,这就是我们本节讨论的内容,事件的所有属性都存储在MotionEvent这一个类的对象中,另一个需要考虑的是事件的处理,怎么对不同的事件进行不同的处理,在什么地方处理事件等,这部分内容参照之前的博客:手势检测GestureDet原创 2014-01-06 15:41:57 · 2227 阅读 · 0 评论 -
简话设计模式之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 · 898 阅读 · 0 评论 -
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 · 2297 阅读 · 0 评论 -
视图动画实现类的分工
视图动画的实现是不停的刷新绘制区域,而绘制区域是根据刷新时的时间动态变化的,这样就形成了动画。视图动画的实现与三个类密切相关,一个就是视图本身View.java,一个是Animation.java,还有一个是Transformation.java。本文分析这三个类在视图动画框架中的分工。首先我们分析View.java,回到区域刷新绘制的地方,drawAnimation()函数。 priv原创 2014-01-02 12:16:54 · 1100 阅读 · 0 评论 -
源码分析视图动画是如何实现的
我们知道视图动画的启动方式如下: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 · 1165 阅读 · 0 评论 -
从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 · 1231 阅读 · 0 评论 -
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 · 1006 阅读 · 0 评论 -
View视图的根视图到底是什么
如上图所示,几乎所有的Activity的视图树都是从PhoneWindow$DecorView——>LinearLayout——>FrameLayout(id/content)开始的,接下来的内容才是我们在layout中定义的视图的开始,现在从源码中看看这样的结构是怎么形成的。Activity视图加载总是从setContentView()开始的: public void setCon原创 2013-12-11 17:23:43 · 3460 阅读 · 0 评论 -
onMeasure实例分析
上面这个两个视图是Android API中没有给出来的但在来电接听和闹钟被使用到的一个widget视图——GlowPadView.java我们通过源码来看看这个View的大小是怎么通过onMeasure来控制的。 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {原创 2013-12-03 17:29:55 · 2565 阅读 · 0 评论 -
自定义View之onMeasure()
可以说重载onMeasure(),onLayout(),onDraw()三个函数构建了自定义View的外观形象。再加上onTouchEvent()等重载视图的行为,可以构建任何我们需要的可感知到的自定义View。本节我们探索自定义View中onMeasure()起到了什么样的作用,题外要插的一句是,Activity框架,View框架中大量的on函数基本上都应用到了Template模式,掌握这一原创 2013-12-03 15:55:10 · 7681 阅读 · 4 评论 -
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 · 6140 阅读 · 0 评论 -
浅谈对Window的理解
学习Surface系统之前对于窗口(Window),视图(View)这两个概念的理解非常模糊,对于它们所扮演的角色也总是弄混淆,而上面这幅图则清楚的明确了这两个概念。我以为对于Android系统而言,窗口这个概念等效于View视图,或者说并没有窗口这个东西的存在。至于我之前所以为的View视图附着在窗口上不过是view附着在DecorView上罢了。那么系统中的Window.java这个类呢?这是原创 2013-12-10 18:09:05 · 1415 阅读 · 0 评论 -
简话设计模式之Proxy模式
Proxy设计模式在Android中的应用,以及如何使用Binder机制实现Java层的夸进程调用。原创 2014-01-09 16:39:57 · 1504 阅读 · 1 评论 -
简话设计模式之Proxy-Stub模式
从Proxy设计模式到Proxy-Stub原创 2014-01-10 10:07:28 · 4431 阅读 · 0 评论 -
从Proxy-Stub到aidl
从Proxy-Stub设计模式到aidl工具原创 2014-01-10 10:21:28 · 2312 阅读 · 0 评论 -
INSTALL_FAILED_MISSING_SHARED_LIBRARY
install FMRadio.apk的时候一直报这个错。原因是高通的FMRadio的jni库和apk是分开的,也就是说直接编译生成的apk中是不包含这个库的,因此install的时候会提示没有共享库。对这个apk的办法是采用push的方式。原创 2014-06-27 16:02:07 · 908 阅读 · 0 评论 -
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 · 761 阅读 · 0 评论 -
可能产生内存泄露的原因
http://blog.sina.com.cn/s/blog_75016706010149zl.html1.资源对象没关闭造成的内存泄漏描述:资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们,以便它们的缓冲及时回收内存。它们的缓冲不仅存在于java虚拟机内,还存在于java虚拟机外。如果我们仅仅是把它的引用设置为null,而不关转载 2014-04-11 16:56:00 · 1115 阅读 · 0 评论 -
Android动画之translate(位移动画)
Android动画之translate(位移动画)上一篇文章讲了 Android的左右滑动切换,实现过程是非常简单,一些新手可能会向深入了了解Activity切换的原理,下面主要对左右滑动进行深入的探讨,并以项目中的一个切换效果来进一步了解。Activity的切换效果使用的是Android的动画效果,Android的动画在官方有相关资料:http://developer.a转载 2014-04-25 19:15:39 · 809 阅读 · 0 评论 -
Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(2)
配置了configChange属性之后,横竖屏切换时不用再杀死和重新启动Activity了,想想Android系统设置这个属性的初衷,横竖屏切换时需要加装不同的变量信息,因此杀死当前Activity启动切屏后的Activity是一个理所应当的过程,但是不够灵活,有些状态下,我们不希望横竖屏切换时Activity被杀死,因此configChange这个属性就能发挥一些作用了,我们只需要在onConf原创 2014-04-19 14:17:17 · 2557 阅读 · 0 评论 -
Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(1)
研究这个问题的初衷在于项目中碰到了一个问题:横屏的时候灭屏再亮屏,亮屏的时候用户可以清晰的看到先启动竖屏(过程1)再切换到横屏的过程,由于灭屏的时候onSaveInstanceState()保存的时横屏时的状态信息,因此过程1竖屏会使用到横屏的状态参数而且这一过程用户是可见的,因此会导致一些意想不到的Bug的出现。探究使用的实例中我用了屏幕的横竖屏和宽这两个配置信息来说明生命周期中此时系统所知原创 2014-04-19 09:10:45 · 6496 阅读 · 0 评论 -
onActivityResult()得到的值为null可能的情况分析
1. 是否正确的调用了setResult()。2. 是否是在Activity的finish()调用之前调用的setResult()。3. 如果是按返回键返回的看是否自主消化掉了onBackPressed()函数,这个函数里调用了finish()函数,因此我们需要自主消化掉这个函数。既然如此,也别再复写的函数中调用super.onBackPressed()。4. 是否使用的Intent.原创 2014-03-24 09:30:47 · 2468 阅读 · 0 评论 -
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 · 881 阅读 · 0 评论 -
如何成为Android开发高手
如何成为Android开发高手 很多Android开发者已经度过了初级、中级,如何成为一个Android高手呢? Android123就各个级别的程序员应该掌握哪些内容作为下面分类。 一、初级 1. 拥有娴熟的Java基础,理解设计模式,比如OOP语言的工厂模式要懂得。 2. 掌握Android UI控件、Android Java层AP转载 2014-02-19 22:49:13 · 880 阅读 · 0 评论 -
如何成为JAVA高级程序员
觉得讲得很有道理,和大家一起分享,有什么好的意见,大家也可以表达哈.转载: http://hi.baidu.com/%D3%EA%B7%D7%B7%C9_happy/blog/item/b2a6ea66d1672323ab184cb7.html或许您已经读过我的那篇小文《如何成为java初级程序员》,那里面只介绍了成为一个JAVA程序员应该具备的一些知识。我转载 2014-02-19 22:47:51 · 1073 阅读 · 0 评论 -
自定义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 · 5621 阅读 · 0 评论 -
电量统计之一:PowerProfile.java与power_profile.xml
http://blog.csdn.net/sjz_iron/article/details/8726661现在诸多关于电池管理的应用做的极其绚烂,可实现如耗电应用排行、剩余时间计算、关闭耗电程序以节省电量等功能,这两天对此模块进行了研究,总结如下。 首先解释下各软硬件耗电量的计算。假设设备(如WIFI)单位时间内消耗的电量为w,运行时间为t,则其在这段时间内的耗电量为W=转载 2014-01-15 15:18:14 · 1519 阅读 · 0 评论 -
Android视图动画框架详解
Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果,本文将向读者阐述 Android 的动画框架是如何实现的。任何一个框架都有其优势和局限性,只有明白了其实现原理,开发者才能知道哪些功能可以利用框架来实现,哪些功能须用其他途径实现。Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换 ( 平移、缩放、旋转 ) 产生动画效果转载 2013-12-09 15:07:09 · 1050 阅读 · 0 评论 -
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 · 1267 阅读 · 0 评论 -
Android4.2.2 Gallery2源码分析(4)——GLCanvas.java
首先申明,找到这个类是在GLRootView.java中发现的线索。这是一个接口,源码中对该接口作了详细的说明://// GLCanvas gives a convenient interface to draw using OpenGL.//// When a rectangle is specified in this interface, it means the region原创 2013-10-31 14:07:23 · 4204 阅读 · 1 评论 -
Android4.2.2 Gallery2源码分析(3)——分析Gallery.java
我现在的目的是找出那个相册视图为什么是空的,也就是(1)中提到的第三个疑点。下图的这个视图是在什么地方形成的。1.继承关系public final class Gallery extends AbstractGalleryActivity implements OnCancelListener 重点是父类AbstractGalleryActivity做了哪些通用的事情,原创 2013-10-31 13:58:19 · 3959 阅读 · 3 评论 -
Android4.2.2 Gallery2源码分析(2)——发现Gallery.java
上文中,main.xml是我直接提出来的,并没有说明是怎么找到它的,现在说明发现它的理由:一般我们分析界面布局会用到hierarchyviewer这个工具,从工具中,我们对应到视图,最主要的视图id我们找到了"gl_root_view",这一点在上一节中有说明。在Source insight中搜索这个id,我们找到了layout/Gl_root_group.xml: <com.原创 2013-10-30 15:52:02 · 5251 阅读 · 3 评论 -
Android4.2.2 Gallery2源码分析(1)——从布局入手
使用的是现有的项目的源码进行分析,它在Android原生源码之上有一些修改,主要是添加了一些功能,但整体部分仍然是原生的架构。从零开始,逐步分析。点开Gallery,进入该程序查看图片,在手机上看到的主视图如下,(图1)使用Hierarchy Viewer工具查看UI布局,此时看到的布局就是Gallery框架的主界面:(图2)PhoneWindow$DecorView—原创 2013-10-30 12:01:13 · 8092 阅读 · 4 评论 -
Android图形图画学习(9)——探索SurfaceView的框架结构
上图是实现SurfaceView绘图的框架。我们需要实现的是长横线以下的部分。对这个框架作一个说明:回调的典型作用是实现控制反转,即事先预定好框架,在SurfaceView.java的updateWindow()函数中,根据实际情况,系统会调用SurfaceHolder.Callback.surfaceCreated(mSurfaceHolder)等。这只是一个框架,在没有实现的Surfa原创 2013-10-29 16:16:47 · 1290 阅读 · 0 评论 -
Android图形图画学习(7)——drawBitmapMesh
public void drawBitmapMesh (Bitmap bitmap, int meshWidth, int meshHeight, float[] verts, int vertOffset, int[] colors, int colorOffset, Paint paint)这是Canvas中定义的一个绘图函数,我们先介绍一下这个函数的用处和参数意义:它表示将图像绘制在原创 2013-10-29 14:17:49 · 1245 阅读 · 0 评论 -
Android图形图画学习(8)——SurfaceView
SurfaceView继承自View类。我们知道在UI主线程中进行耗时操作超过5秒就会出现ANR问题,而绘图往往就是一个耗时操作。因此Android系统专门开辟了一个SurfaceView进行绘图操作。不得不提的是我们以往所知的View(Button等)控件都是单线程的,即只允许主线程操作控件代码。而SurfaceView是多线程的,它允许多个线程操作其中的代码。这个视图里专门嵌套了一个用原创 2013-10-29 15:06:26 · 1270 阅读 · 0 评论 -
Android图形图画学习(6)——Movie
Movie是用来解析gif图片的类,它的用法很简单。static MoviedecodeByteArray(byte[] data, int offset, int length)static MoviedecodeFile(String pathName)static MoviedecodeStream(Inpu原创 2013-10-29 13:56:06 · 1513 阅读 · 0 评论 -
Android图形图画学习(5)——解码图片
Android API提供了两种解码图片的类:BitmapFactory解码jpg.png等静态图片,Movie类解码gif动态图片。对图片解码,数据源可以是byte 数组,InputStream ,资源ID,或者指定文件名。对于BitmapFactory来说,还可以通过BitmapFactory.Options 指定解码时的一些设置。下面代码指定opts.inJustDeco原创 2013-10-29 10:29:20 · 1958 阅读 · 0 评论 -
Android图形图画学习(4)——Paint
Paint是画笔类,它定义了各种绘制时的样式。在Android应用中,2D图形有两种,一种是我们常见的jpg图形,一种则是通过画笔画出的图形,文字(例如矩形,圆等)。前者通过Drawable等类经常使用,后者则是通过Paint类画出的,但是基本很少用到。它应用最多的是drawText()辅助在位图上绘制文字,这一点很重要。原创 2013-10-29 10:02:10 · 896 阅读 · 0 评论