android
成年老猿
国内TOP10学校研究生毕业
8+年大厂经验
很高兴在这里和大家进行技术交流
展开
-
android Handler总结
一、Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button, Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,例如转载 2013-11-22 21:56:02 · 462 阅读 · 0 评论 -
Android中Bitmap和Drawable
文章链接:http://dyh7077063.iteye.com/blog/970672一、相关概念1、Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的可画对象2、Canvas画布,绘图的目的区域,用于绘图3、Bi转载 2013-12-15 20:54:44 · 337 阅读 · 0 评论 -
android中Invalidate和postInvalidate的区别
Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。 Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。 An转载 2013-12-09 17:10:40 · 399 阅读 · 0 评论 -
Android 开发之旅:view的几种布局方式及实践
引言通过前面两篇:Android 开发之旅:又见Hello World!Android 开发之旅:深入分析布局文件&又是“Hello World!”我们对Android应用程序运行原理及布局文件可谓有了比较深刻的认识和理解,并且用“Hello World!”程序来实践证明了。在继续深入Android开发之旅之前,有必要解决前两篇中没有介绍的遗留问题:View的几种布局显示方法,转载 2013-12-20 19:49:41 · 576 阅读 · 0 评论 -
在ListView上面动态显示控件
列表的显示需要三个元素:1.ListVeiw 用来展示列表的View。2.适配器 用来把数据映射到ListView上的中介。3.数据 具体的将被映射的字符串,图片,或者基本组件。有时候我们需要修改已经生成的列表,添加或者修改数据,notifyDataSetChanged()可以在修改适配器绑定的数组后,不用重新刷新Activity,通知Activity更新Li转载 2014-02-25 20:53:12 · 662 阅读 · 0 评论 -
Toast和Looper。Handler消息循环机制。
(1) Looper类别用来为一个线程开启一个消息循环。默认情况下Android中新诞生的线程是没有开启消息循环的。(主线程除外,主线程系统会自动为其创建Looper对象,开启消息循环)Looper对象通过MessageQueue来存放消息和事件。一个线程只能有一个Looper,对应一个MessageQueue。(2) 通常是通过Handler对象来与Looper交互的转载 2014-03-01 21:39:19 · 473 阅读 · 0 评论 -
编程中遇到的Handler问题
一个小问题,困扰了一晚上。。详细的关于Handler机制就不介绍了,问题出在 主线程(UI线程)与子线程之间的通信。。直接上代码吧。。MainActivitypublic class MainActivity extends Activity { Handler mHandler = new Handler() { public void handleMessage(Mess原创 2014-03-02 00:10:14 · 574 阅读 · 0 评论 -
android中handler用法总结
一、Handler的定义: Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用。比如可以用handler发送一个message,然后在handler的线程中来接收、处理该消息,以避免直接在UI主线程中处理事务导致影响UI主线程的其他处理工作,Android提供了Handler作为主线程和子线程的纽带;也可以将handler对象传给其他进程,转载 2014-03-02 13:19:00 · 835 阅读 · 0 评论 -
eclipse汉字太小问题
window – preferences – general – appearance – colors and fonts – basic – text font – edit 把弹出页面中的“西欧语言”改成“中欧字符”,即可解决。原创 2014-03-03 17:07:52 · 617 阅读 · 0 评论 -
LayoutInflater的inflate函数用法详解
LayoutInflater作用是将layout的xml布局文件实例化为View类对象。获取LayoutInflater的方法有如下三种:?LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);转载 2014-02-25 19:50:57 · 514 阅读 · 0 评论 -
Android 关于inflate
通俗的说,inflate就相当于将一个xml中定义的布局找出来. 即,inflate就是将找到layout文件下面的xml文件。 因为在一个Activity里如果直接用findViewById()的话,对应的是setConentView()的那个layout里的组件.findViewById就是获取布局文件下面的控件 convertView = inflater.inflate(R.l转载 2014-03-04 16:58:41 · 396 阅读 · 0 评论 -
Android_UI_实现TabHost的两种方法
实现TabHost有两种方式:一、1.不继承TabActivity2.在布局文件中定义TabHost1.图文解意:在布局文件tabhostdemo1.xml里怎么定义tabhost,大家看下面的图片(部分代码)即可,文章最后都会贴出完整代码【注意】这里需要强调的是TabWidget的id必须是@android:id/tab转载 2014-03-06 20:31:48 · 519 阅读 · 0 评论 -
Android底部菜单栏(用TabHost一次性加载耗内存)
上一个项目已经做完了,这周基本上没事,所以整理了下以前的项目,想把一些通用的部分封装起来,这样以后遇到相似的项目就不用重复发明轮子了,也节省了开发效率。今天把demo贴出来一是方便以后自己查询,二是希望同时也能帮到大家。 底部菜单栏很重要,我看了一下很多应用软件都是用了底部菜单栏做。我这里使用了tabhost做了一种通用的(就是可以像微信那样显示未读消息数量的,虽然之前转载 2014-03-06 15:27:05 · 624 阅读 · 0 评论 -
android 广播的使用
在Activity中,注册广播的一个Demo。总共分3步第一步:定义一个BroadcastReceiver广播接收类:[java] view plaincopyprivate BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver(){ @Over转载 2014-03-14 16:26:54 · 406 阅读 · 0 评论 -
关于android的好的博客栏目(持续更新。。。)
http://www.cnblogs.com/zhangdongzi/category/280527.html转载 2014-03-14 16:30:17 · 417 阅读 · 0 评论 -
设置监听器的几种方式
因为前面一个项目,纠结于获取屏幕坐标纠结了好久,突然发觉竟然是因为然发觉竟然是因为如果在Activity的OnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到数字。下面引用下别人博客里面获取绝对坐标(当前窗口,整个屏幕)的方式:getLocationOnScreen 计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是包括了通知栏的高度原创 2013-11-25 17:08:40 · 1694 阅读 · 0 评论 -
Android 初识SurfaceView
当我们需要开发一个复杂的游戏的时候,而且对程序的执行效率要求很高时,View类就不能满足需求了,这时必须用SurfaceView类进行开发。例如,对速度要求很高的游戏时,View类就不能满足需求了,这时必须使用SurfaceView类进行开发。例如,对速度要求很高的游戏,可以使用双缓冲来显示。游戏中的背景、人物、动画等都需要绘制在一个画布(Canvas)上,而SurfaceView可以直接访问一个转载 2013-12-11 15:54:26 · 486 阅读 · 0 评论 -
Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File
作为一个完成的应用程序,数据存储操作是必不可少的。因此,Android系统一共提供了四种数据存储方式。分别是:SharePreference、SQLite、Content Provider和File。由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Provider。 SQLite: SQLit转载 2013-11-14 11:09:00 · 685 阅读 · 0 评论 -
Android Handler的机制和原理(二)
在android中提供了一种异步回调机制Handler,使用它,我们可以在完成一个很长时间的任务后做出相应的通知 handler基本使用: 在主线程中,使用handler很简单,new一个Handler对象实现其handleMessage方法,在handleMessage中提供收到消息后相应的处理方法即可,这里不对handler使用进行详细说明,在看本博文前转载 2013-11-23 10:56:27 · 502 阅读 · 0 评论 -
Android View坐标getLeft, getRight, getTop, getBottom
1 引起疑惑 分析视图invalidate流程的过程中发现view的left, right, top, bottom跟自己理解的不一样,现在想分析一下这几个值具体的含义。 2 理解坐标,位置概念 这里涉及坐标系的概念:坐标系在二维视图中通过X轴和Y轴两个数字为组合表示某个点的绝对坐标。 例如(30, 100) 通常表示X轴30转载 2013-11-23 15:18:41 · 593 阅读 · 0 评论 -
java ArrayList
Java中ArrayList类的用法(转)1、什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和IList接口 灵活的设置数组的大小2、如何使用ArrayList 最简单的例子: ArrayList List = new转载 2013-11-22 19:53:23 · 408 阅读 · 0 评论 -
android Bundle类(键值对)
今天发现自己连Bundle类都没有搞清楚,于是花时间研究了一下。根据google官方的文档(http://developer.android.com/reference/android/os/Bundle.html)Bundle类是一个key-value对,“A mapping from String values to various Parcelable types.”类继承关转载 2013-11-22 20:54:03 · 1334 阅读 · 0 评论 -
android Matrix类得详解
在Android中,对图片的处理需要使用到Matrix类,Matrix是一个3 x 3的矩阵,他对图片的处理分为四个基本类型:1、Translate————平移变换2、Scale————缩放变换3、Rotate————旋转变换4、Skew————错切变换在Android的API里对于每一种变换都提供了三种操作方式:set(用于设置Matrix中的值)、post(后乘,根据矩阵的转载 2013-11-22 20:58:08 · 525 阅读 · 0 评论 -
Android Handler的机制和原理(一)
在Android中谈到Handler,我们首先来讲一下Handler的机制和原理 1、Handler机制原理 Handler:主要是用来处理发送和接收消息的,作用是把消息加入特定的(Looper)消息队列中,并分发和处理该消息队列中的消息。构造Handler的时候可以指定一个Looper对象,通过Handler对象我们可以封装Message对象,然后转载 2013-11-23 10:24:52 · 1260 阅读 · 0 评论 -
Android 屏幕坐标/视图坐标/布局坐标三者间的关系
屏幕坐标:以屏幕左上方为(0,0)的坐标体系,X/Y轴的最大值即为物理屏幕分辨率的宽和高;触摸消息中MotionEvent.getX/getY取到的就是屏幕坐标值;视图坐标:视图坐标是完全由视图内容的宽高决定的坐标体系,理论上他是没有边界的,不受物理屏幕大小限制;比如1000行的文本限定宽度为100px,每行高度为5px,那对应的X/Y最大坐标值为(100,5000);布局坐标:子视图相对转载 2013-11-23 15:26:05 · 2137 阅读 · 0 评论 -
Android MotionEvent 坐标获取
Android MotionEvent中getX()与getRawX()都是获取屏幕坐标(横),但二者又有区别getX() : 是获取相对当前控件(View)的坐标getRawX() : 是获取相对显示屏幕左上角的坐标演示示例代码Java代码:public class MainActivity extends Activity imp转载 2013-11-23 15:30:22 · 618 阅读 · 0 评论 -
BitmapFactory.Options
加载和显示图片是很消耗内存的一件事,BitmapFactory.Options 类, 允许我们定义图片以何种方式如何读到内存,[java] view plaincopyBitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options(); bmpFactoryOptions.inSampleSiz转载 2013-11-10 15:50:49 · 341 阅读 · 0 评论 -
Android 设计模式 之 观察者模式
/* * 观察者模式 * 定义对象间的一种一个(Subject)对多(Observer)的依赖关系,当一个对象的状态发送改变时,所以依赖于它的 * 对象都得到通知并被自动更新 * * 当然,MVC只是Observer模式的一个实例。Observer模式要解决的问题为: * 建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候, * 依转载 2013-11-10 21:51:12 · 586 阅读 · 0 评论 -
Gallery的简单应用
Gallery是一个水平的列表选择框,它允许用户通过拖动来查看上一个、下一个列表选项。下面是控件Gallery的额外的属性:要使用一个Gallery非常的简单,只需要设置填充它内容的Adapter即可。从Adapter的体系上来看(可以看看:Android中的Adapter),显然使用BaseAdapter是最好的选择,当然SimpleAdapter也可以,不过,实现起来,没有Ba转载 2013-11-11 17:35:13 · 449 阅读 · 0 评论 -
Gallery组件基本用法以及实现循环显示图像
Gallery组件主要用于横向显示图像列表,不过按常规做法。Gallery组件只能有限地显示指定的图像。也就是说,如果为Gallery组件指定了10张图像,那么当Gallery组件显示到第10张时,就不会再继续显示了。这虽然在大多数时候没有什么关系,但在某些情况下,我们希望图像显示到最后一张时再重第1张开始显示,也就是循环显示。要实现这种风格的Gallery组件,就需要对Gallery的Adapt转载 2013-11-11 20:11:50 · 602 阅读 · 0 评论 -
ViewGroup深入简出
文章目录[隐藏]一、ViewGroup是什么?二、ViewGroup这个容器2.1 添加View的算法 2.1.1 我们先来分析addViewInner方法:2.1.2 addInArray2.2 移除View2.3 查询三、onFinishInflate四、测量组件五、onLayout六、ViewGroup的绘制。七、效果图片:转载 2013-11-13 14:47:32 · 797 阅读 · 0 评论 -
Android的五大布局
Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦。组件按照布局的要求依次排列,就组成了用户所看见的界面。Android的五大布局分别是LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)和TableLayout(表格布局)。 LinearLa转载 2013-11-14 10:59:40 · 610 阅读 · 0 评论 -
android listview继承BaseAdapter,自定义的适配器,getView方法执行多组循环解决方式
1.如果Activity继承ListActivity,不自定义布局文件,直接使用android默认的ListView布局文件.不会出现getView()方法执行多组循环. android默认的ListView布局文件如下: android:layout_width="fill_parent" android:layout_height="fill_parent" /转载 2014-03-16 19:08:16 · 781 阅读 · 0 评论