
Android学习
忆江南的博客
精通iOS开发
展开
-
Android学习5--界面编程与视图(View)组件
1、使用XML布局文件控制UI界面Android推荐使用XML布局文件控制视图,不仅简单、明了,而且可以将应用的视图控制逻辑从java代码中分离出来,放入XML文件中控制,跟好地体现MVC原理。当我们在Android应用的res/layout目录下定义一个主文件名任意的XML布局文件之后(R.java会自动收录该布局资源),java代码可通过如下方法在Activity中显示该视图:转载 2014-07-20 10:35:50 · 516 阅读 · 0 评论 -
ListView中convertView和ViewHolder的工作原理
ListView和Adapter参考:http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html工作原理: 1.ListView针对List中每个item,要求adapter给我一个视图(getView) 2.一个新的视图被返回并显示 如果我们有上亿个item要显示怎么办?为每个项转载 2015-03-11 17:56:08 · 501 阅读 · 0 评论 -
Android LayoutInflater 详解
Android LayoutInflater 详解简介:在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button,TextView等等)。使用场景:①对于一个没原创 2015-03-12 17:43:14 · 481 阅读 · 0 评论 -
Android--多线程之Handler
前言 Android的消息传递机制是另外一种形式的“事件处理”,这种机制主要是为了解决Android应用中多线程的问题,在Android中不允许Activity新启动的线程访问该Activity里的UI组件,这样会导致新启动的线程无法改变UI组件的属性值。但实际开发中,很多地方需要在工作线程中改变UI组件的属性值,比如下载网络图片、动画等等。本篇博客主要介绍Handler是如何发送与处理转载 2015-05-24 14:24:32 · 413 阅读 · 0 评论 -
ListView(1)——各种Adapter的使用
ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件。在android中,由于数据来源多种多样,如从资源文件读取、从数据库中读取、从网络上其他地方读取,而最终这些数据都将被展示在ListView中,所以android就用adapter设计模式,对应每种数据来源使用对应的adapter来连接数据和视图。Adapter就转载 2015-08-24 15:58:34 · 456 阅读 · 0 评论 -
ListView中convertView和ViewHolder的工作原理
ListView和Adapter参考:http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html工作原理: 1.ListView针对List中每个item,要求adapter给我一个视图(getView) 2.一个新的视图被返回并显示 如果我们有上亿个item要显示怎么办?为每个项转载 2015-08-24 15:46:03 · 433 阅读 · 0 评论 -
ListView(2)——自定义Adapter
之前介绍了三种adapter:ArrayAdapter、SimpleAdapter和SimpleCursorAdapter。使用android提供的adapter来绘制列表的话,列表的每一项的显示都是一样的。为了实现ListView的单双行不同颜色显示,需要自定义adapter的子类。adapter的常用子类有BaseAdapter、ArrayAdapter、SimpleAdapter等,转载 2015-08-24 15:59:17 · 404 阅读 · 0 评论 -
Fragment实现底部菜单栏
网上关于使用Fragment实现底部菜单栏的方法,总结一下以备后用。1. TabHost + Activity:经典的搭配组合,从最早的TabHost + TabActivity演变而来。TabActivity灵活性很差,已经被抛弃了。2. 自定义底部选项卡 + Fragment:灵活性大,实现起来也很简单。参考: http://blog.youkuaiyun.com/yangy转载 2015-08-24 16:01:47 · 1135 阅读 · 0 评论 -
android布局------RelativeLayout(相对布局)详解
http://blog.youkuaiyun.com/coder_pig/article/details/21185659RelativeLayout(相对布局)前言和线性布局(LinearLayout)一样,RelaiveLayout相对布局也是我们用的比较多的一个布局之一好的编程建议:合理地利用好LinearLayout的weight权重属性转载 2015-08-19 16:47:35 · 507 阅读 · 0 评论 -
android:layout_gravity 和 android:gravity 的区别
gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思。android:layout_gravity 和 android:gravity 的区别从名字上可以看到,android:gravity是对元素本身说的,元素本身的文本显示在什么地方靠着换个属性设置,不过不设置默认是在左侧的。android:layout_gravity是相对与它的父元素说的,说明元素显示在父元素的什转载 2015-08-19 17:19:11 · 313 阅读 · 0 评论 -
利用dimens.xml来达到资源的重用
标题是我自己理解的。大意是:有时候我们为了维护一个工程,或者想定义一个button样式,或textView样式,这些样式中包含着文字的大小,背景图片,前置图片等一些资源。而且这个button或textView会在很多地方要用到它,原本我们可以将它的文字大小,图片样式等写在XML中或者代码中。但这样的维护性太差了;一旦要修改的时候,需要挨个文件找,挨个修改。现在我们利用dimens来维护时,只需要修转载 2015-08-20 11:00:35 · 471 阅读 · 0 评论 -
android-UI组件实例大全(七)------Adapter类One之ListView
今天要学习的这个adapter灰常重要,也是UI组件的一个难点adapter:适配器,是适配器视图与数据之间的桥梁简单地可以这样理解:将各种数据以合适的形式显示到view上,提供给用户看!!!最后有一个模仿QQ好友列表布局的实现哦!!!这里的话先说下MVC这种程序框架:举例:大型的商业程序通常由多人一同开发完成,比如有人负责操作接口的转载 2015-08-20 15:34:01 · 508 阅读 · 0 评论 -
Android 中关于 【Cursor】 类的介绍
使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生,如果你是搞.net 开发你大可以把Cursor理解成 Ado.net 中的数据集合相当于dataReader。今天特地将它单独拿出来谈,加深自己和大家对Android 中使用 Cursor 的理解。关于 Cursor在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情:转载 2015-09-16 15:16:42 · 353 阅读 · 0 评论 -
AsyncTask
简单来说,使用 AsyncTask的诀窍就是,在 doInBackground()方法中去执行具体的耗时任务,在onProgressUpdate()方法中进行UI 操作,在 onPostExecute()方法中执行一些任务的收尾工作。原创 2015-02-15 17:35:16 · 437 阅读 · 0 评论 -
解析异步消息处理机制
Android 中的异步消息处理主要由四个部分组成,Message、Handler、MessageQueue 和Looper。其中 Message 和 Handler 在上一小节中我们已经接触过了,而 MessageQueue 和 Looper对于你来说还是全新的概念,下面我就对这四个部分进行一下简要的介绍。1. MessageMessage 是在线程之间传递的消息,它可以在内部携带少量的原创 2015-02-15 17:10:54 · 487 阅读 · 0 评论 -
Android生命周期函数执行顺序
程序正常启动:onCreate()->onStart()->onResume();正常退出:onPause()->onStop()->onDestory()一个Activity启动另一个Activity: onPause()->onStop(), 再返回:onRestart()->onStart()->onResume()程序按back 退出: onPause()->onSto原创 2014-09-04 22:43:25 · 1508 阅读 · 0 评论 -
android.intent.action.MAIN 和android.intent.category.
android:icon="@drawable/icon"android:label="@string/app_name">android:name=".Activity01"android:label="@string/app_name">android:name="android.intent.action.MAIN"/>android:name="android.intent.ca转载 2014-08-10 23:34:07 · 726 阅读 · 0 评论 -
AndroidManifest.xml中声明不同包中的Activity
package="com.android.tencent" android:versionCode="1" android:versionName="1.0"> QCalendarActivity" android:label="@string/app_name" android:scree转载 2014-08-10 23:42:06 · 1185 阅读 · 0 评论 -
android:label="@string/app_name"> 的含义
label表示标签,@表示引用,@string/app_name就是从string这个文件中引用叫app_name的这个键值对的值,作用是为你当前的ViewGroup设置一个标签原创 2014-08-10 22:41:21 · 12573 阅读 · 0 评论 -
layout_width和width的区别
刚接触android,遇到xml里的android:layout_width和android:width,觉得他们类似,但是有说不出有什么区别,google后觉得说的都不太明白,遂自己试验,成果如下:概括的说,view中的layout_width形容的是本view和父容器的关系,比如button和包含它的LinearLayout;而view中的width是用来描述自己本身的。如果你原创 2015-01-26 12:59:11 · 2718 阅读 · 0 评论 -
findViewById()与Inflate()和setContentView()关系扯谈
关于findViewById()与Inflate()和setContentView()的关系我理了理,清晰多了,觉得很有必要记一记。1.findViewById()与Inflate()的关系findViewById()其实好理解,从layout上把控件找出来并转为一个对应的对象。至于Inflate()则是把layout从xml文件中实例化成一个对象。这样findViewById才能转载 2015-01-27 14:55:20 · 546 阅读 · 0 评论 -
android:layout_gravity和android:gravity的区别
1.首先来看看android:layout_gravity和android:gravity的使用区别。android:gravity:这个是针对控件里的元素来说的,用来控制元素在该控件里的显示位置。例如,在一个Button按钮控件中设置如下两个属性,android:gravity="left"和android:text="提交",这时Button上的文字“提交”将会位于Button的左转载 2014-12-18 18:07:17 · 561 阅读 · 0 评论 -
setContentView+LayoutInflater=完美切换页面
setContentView的秘密: 当activity 调用 setContentView() 时,android 才会去绘制 layout 上的各个元素,并为其分配内存。只有分配了内存以后,才能继续执行findViewById(); 才能得到引用,不然得到空引用。空引用意味着,后面使用相应变量时就会发生访问的对象不存在的问题。当Activity重新setContentView转载 2015-01-27 12:46:05 · 734 阅读 · 0 评论 -
在Fragment中进行button setonclicklistener的问题
今天项目过程中发现了一些问题,自己本身没有系统的学习过android,就是想到什么做什么的。今天在用 fragment(碎片)按钮点击的时候碰到了问题。自己是依样画葫芦的把一些代码拷贝过来看的。但是在写完之后,代码没有任何报错,但是启动的时候程序就会crash首先 当我们需要点击事件,就是要生成一个对象,和set他的click的方法代码如下:原创 2015-02-01 21:31:53 · 7178 阅读 · 2 评论 -
Fragment使用注意事项
onCreateView返回Fragment 的View,所以这个方法返回的越快越好,一般耗时的事情都放在onCreateView以后,我一般是这样的。至于findViewById啥的我一般放在onActivityCreated中。放在onCreateView里面,慢不了多少,如果是像listView要从服务器拉取数据填充这样耗时的操作,可以另开一个线程,然后notifyDataSetChan原创 2015-02-04 11:28:31 · 527 阅读 · 0 评论 -
dp 这个单位是安卓发明的么?为什么 px=dp*(dpi/160)?
1. 160dpi 为基准比较方便换算。但是仔细想的话,这个理由其实不成立。因为其他几个dpi本来就是根据基准定出来的。比如用240dpi作为基准,你可以改为360dpi(1.5)、240dpi、180dpi(0.75)、120dpi(0.5)。2. 第一款机型是160dpi。这看上去是比较靠谱的原因。但其实如@郑旺所说,第一款机型G1实际上是180dpi的。3. 我个人补原创 2015-01-20 17:21:37 · 1139 阅读 · 0 评论 -
Thread、Handler与HandlerThread、Handler使用
Handler会关联一个单独的线程和消息队列。Handler默认关联主线程,虽然要提供Runnable参数,但默认是直接调用Runnable中的run()方法。也就是默认下会在主线程执行,如果在这里面的操作会有阻塞,界面也会卡住。如果要在其他线程执行,可以使用HandlerThread。HandlerThread继承于Thread,所以它本质就是个Thread。与普通Thread的差别就在转载 2015-02-10 23:39:09 · 520 阅读 · 0 评论 -
【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性
在进行UI布局的时候,可能经常会用到 android:gravity 和 android:layout_Gravity 这两个属性。 关于这两个属性的区别,网上已经有很多人进行了说明,这边再简单说一下。 (资料来自网络) LinearLayout有两个非常相似的属性:android:gravity与android:layo转载 2015-11-11 15:25:23 · 453 阅读 · 0 评论