Android
文章平均质量分 67
L_YQing
这个作者很懒,什么都没留下…
展开
-
Android学习札记46:在TextView使用SpannableString设置复合文本
TextView 通常用来显示普通文本,但是有时候需要对其中某些文本进行样式、事件方面的设置。Android 系统通过 SpannableString 类来对指定文本进行相关处理,具体有以下功能: 1、BackgroundColorSpan 背景色 2、ClickableSpan 文本可点击,有点击事件 3、ForegroundColorSpan 文本颜色(前景色)转载 2012-08-22 22:15:45 · 2197 阅读 · 0 评论 -
Android学习札记38:关于安全退出已创建多个Activity的应用(1)
最初看到这个问题,是在一道面试题上。 不同与其他面试题,我觉得这道题很具有实际意义。所以先实际操作下,解决这个问题。 在此,我也啰嗦一下,大概说说解决这个问题的几种方案: 1、借助系统的 API 首先,2.2 以前和 2.2 以后采用的方法是不同的。但都是针对系统级别的东西进行操作。从进程和包的角度来达到此效果。 所以需要添加授权,但是遗憾的是,这些方法涉及底层,而且在转载 2012-08-01 10:00:49 · 770 阅读 · 0 评论 -
Android学习札记44:解读APK反编译后得到的布局文件
通常情况下,我们使用 dex2jar 工具反编译 Android APK文件之后,会得到如下这些文件:其中,res 文件夹下都是我们在 Android 工程下常见的资源文件:如果我们对这个应用犀利美观的布局很感兴趣的话,可以进一步反编译它的布局文件:可以看到,这些布局文件都是 .xml 文件,默认情况下打开之后都是乱码,下图是用 Notepad++ 打开之后的效果:原创 2012-08-09 17:53:37 · 6867 阅读 · 2 评论 -
Android学习札记43:TraceView实战篇
本篇文章中记录了使用 TraceView 对 ListView 进行性能优化的完整过程首先啥都不做:public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub LinearLayout layout = (LinearLayo转载 2012-08-08 22:05:16 · 1027 阅读 · 0 评论 -
Android学习札记31:收集到的一些关于Handler和Runnable的问题(2)
问题大意: Acticity.runOnUiThread(Runnable action) 和 Handler.post(Runnable r)的区别?问题出处:http://stackoverflow.com/questions/1839625/whats-the-difference-between-activity-runonuithreadrunnable-act原创 2012-07-22 21:20:12 · 769 阅读 · 0 评论 -
Android学习札记34:看到的一种对Activity间使用Parcel传递数据的解释
Parcel,翻译过来就是“打包”的意思。打包干什么呢?是为了序列化。如果要在进程之间传递一个整数,很简单,直接传就行了;如果要传递一个字符串,就稍微复杂了点:需先分配一块可以容纳字符串的内存,然后将字符串复制到内存中,再传递。新手可能问:为啥不直接把字符串的引用传过去呢?学过C/C++的地球人都知道,进程都有自己的内存地址空间,一个进程中的1000地址可能在另一个进程中是转载 2012-07-24 17:08:08 · 711 阅读 · 0 评论 -
Android学习札记33:对ActivityGroup源代码的一些分析
在Android中,提供了一个ActivityGroup类,该类是Activity的容器,可以包含多个嵌套进来的Activity,我们接下来将采用源码分析的方式来了解该类的内部实现。 首先,从SDK中和源码中都可以获知,ActivityGroup类的父类是Activity,也就是说二者具有相同的接口和生命周期,同Activity一样,也有onCreate()、onPause()等函数可供转载 2012-07-23 20:04:06 · 1042 阅读 · 0 评论 -
Android学习札记32:SurfaceView和View的联系和区别
在网上看到的一些解释: SurfaceView:基于View进行拓展的视图类,是View类的子类,可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图视图。它的特性是:可以在主线程之外的线程中向屏幕上绘图。这样可以避免绘图任务繁重的时候造成主线程阻塞,从而提高了程序的反应速度。在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等尽量在Canvas画布中画出。原创 2012-07-23 17:10:16 · 727 阅读 · 0 评论 -
Android学习札记31:收集到的一些关于Handler和Runnable的问题(1)
提问者的大意如下: 在一个非UI线程中,如果连续给Handler对象post两个Runnable对象,那么第二个Runnable对象是不是需要等到第一个Runnable对象执行完之后才开始执行。答案: 是的,第二个Runnable对象需要等到第一个Runnable对象执行完成之后才能开始执行。问题出处:http://stackoverflow.c原创 2012-07-22 20:34:25 · 2283 阅读 · 0 评论 -
Android学习札记29:对线程更新UI界面的一些理解(2)
来自国外网站的一篇博客,英文都看得懂,就不翻译了。Android – Multithreading in a UI environmentWhy do we need multithreading in Android applications?Let’s say you want to do a very long operation when the use转载 2012-07-22 10:56:33 · 1019 阅读 · 0 评论 -
Android学习札记26:深入理解Android中的消息处理机制——Thread、Looper、MessageQueue和Handler(1)
熟悉Windows编程的朋友可能知道Windows程序是消息驱动的,并且有全局的消息循环系统。而Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制。实际上谷歌参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制。Android通过Looper、Handler来实现消息循环机制,Android消息循环是针对线程的(每个线程都可以有自己的消息队列和消息循环转载 2012-07-21 17:03:06 · 2067 阅读 · 0 评论 -
Android学习札记27:对线程更新UI界面的一些理解(1)
当第一次启动一个Android程序时,Android会自动创建一个被称为“main”主线程的线程。这个主线程(也称为UI线程)很重要,因为它负责把事件分派到相应的控件,其中就包括屏幕绘图事件,它同样是用户与Andriod控件交互的线程。比如,当你在屏幕上按下一个按钮后,UI线程会把这个事件分发给刚才按得那个按钮,紧接着按钮设置它自身为被按下状态并向事件队列发送一个无效(invalidate)请求。转载 2012-07-21 18:10:06 · 1882 阅读 · 0 评论 -
Android学习札记37:onSaveInstanceState () and onRestoreInstanceState ()
问题出处:http://stackoverflow.com/questions/4096169/onsaveinstancestate-and-onrestoreinstancestate转载 2012-07-31 17:51:30 · 677 阅读 · 0 评论 -
Android学习札记35:onSaveInstanceState (Bundle outState)方法
PART 1:首先看下官方文档的解释:稍微翻一下:在 Activity 被销毁之前被调用来保存每个实例的状态,这样就可以保证该状态能够从 onCreate(Bundle) 或者onRestoreInstanceState(Bundle)恢复过来。本方法在 Activity 可能被销毁前调用,这样当该 Activity 在将来某个时刻重新回来时原创 2012-07-31 16:43:01 · 2521 阅读 · 1 评论 -
Android学习札记36:一个关于onSaveInstanceState ()方法的例子
package cn.com.sxp;import android.app.Activity;import android.os.Bundle;import android.util.Log;public class OnrestoreActivity extends Activity { private static final String TAG = OnrestoreActi转载 2012-07-31 17:34:17 · 892 阅读 · 0 评论 -
Android学习札记51:在TextView显示插入的图片
Android 系统默认给 TextView 插入图片提供了三种方式: 1、ImageSpan 2、Html.ImageGetter 3、TextView.setCompoundDrawables(left, top, right, bottom)1、在 TextView 使用 ImageSpan 显示图片ImageSpan span转载 2012-09-03 17:19:24 · 1857 阅读 · 0 评论 -
Android学习札记53:详解Android中的进程间通信机制Binder系列文章(1)
在 Android 系统中,每一个应用程序都是由一些 Activity 和 Service 组成的,一般 Service 运行在独立的进程中,而 Activity 有可能运行在同一个进程中,也有可能运行在不同的进程中。那么,不在同一个进程的 Activity 或者 Service 是如何通信的呢?这就是本文中要介绍的 Binder 进程间通信机制了。 我们知道,Android 系转载 2012-09-04 10:56:57 · 1428 阅读 · 0 评论 -
Android学习札记52:广播(Broadcast)基础篇
什么是广播? 在 Android 中,Broadcast 是一种广泛运用的在应用程序之间传输信息的机制。我们拿广播电台来做个比方,我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特定的频率来发送他们的内容,而我们用户只需要将频率调成和广播电台的一样就可以收听他们的内容了。Android 中的广播机制就和这个差不多的道理。 ① 电台发送的内容是语音,而在转载 2012-09-04 09:47:55 · 1646 阅读 · 0 评论 -
Android学习札记48:将TextView中的指定文字转换为表情显示
import android.content.Context; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.style.ImageSpan; import android.util.Log; import java.util.Hash转载 2012-08-23 00:47:20 · 1731 阅读 · 0 评论 -
Android学习札记50:在Android中自定义捕获Application全局异常
大家都知道,现在安装 Android 系统的手机和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的 BUG 修复帮助极大,所以今天就来介绍一下如何在程序崩溃的情况下收集相关的设备参数信息和具体的异常信息,并发送这些信息到服务器转载 2012-09-03 14:34:16 · 3288 阅读 · 0 评论 -
Android学习札记49:在Android中使用Application保存全局变量
最近在项目中,遇到了 Application 这个类,开始不知道有什么用,经过学习后才知道它的用途也蛮大的,举个例子,如果想在整个应用中使用全局变量,在 Java 中一般是使用静态变量,public类型;而在 Android 中如果使用这样的全局变量就不符合 Android 的框架架构,但是可以使用一种更优雅的方式,就是使用 Application Context。我们先来看看一下这段转载 2012-09-01 11:19:54 · 1529 阅读 · 0 评论 -
Android学习札记45:在TextView中设置超链接
1、实现文本超链接/*** 设置超链接* 在 layout /*.xml 中设置 TextView 属性 android:autoLink="all" 即可* 支持:web/phone/email/map/all/none*/hyperlinkTextView = (TextView)findViewById(R.id.hyperlinkTextView);hyperlinkTex原创 2012-08-22 21:15:05 · 1657 阅读 · 0 评论 -
Android学习札记47:TextView显示Html类解析的网页和图片及自定义标签
1、TextView 显示 Html 类解析的网页CharSequence richText = Html.fromHtml("萝卜白菜的博客--http://orgcent.com");mTVText.setText(richText);// 此行必须,否则超链接无法点击,ScrollingMovementMethod 实现滚动条mTVText.setMovementMethod转载 2012-08-22 23:50:41 · 2538 阅读 · 0 评论 -
Android学习札记39:关于安全退出已创建多个Activity的应用(2)
谷歌百度一下,Android 中退出多个 Activity 的方法,大家讨论的很多。在实习的时候,看到公司的项目退出多个 Activity,是采用 LinkedList 方法,毕业设计的时候,也参照了那种方法。完成之时,无意在网上看到的可以使用广播机制退出Activity。看了一部分人的博客、文章等教程,发现也是摘抄的“很随便”,说的不详细,或不能实现。看了他们的意思,写了转载 2012-08-01 10:35:49 · 796 阅读 · 0 评论 -
Android学习札记41:你真的有必要退出吗?——再说Android程序的退出功能
搞 Android 开发有一段时间了,相信很多从 Windows 开发过来的 Android 程序员都习惯性地会跟我一样遇到过同一个问题:如何彻底退出程序?这里说下我自己的经验,并不权威,仅供参考。 一开始我也上网到处找退出的资料,网上这方面的文章也是很多,总结下来退出Android程序的方法大概有以下几种: 1、直接调 System.exit(0) 或转载 2012-08-02 09:54:02 · 765 阅读 · 0 评论 -
Android学习札记40:关于安全退出已创建多个Activity的应用(3)
在一个项目中,要退出 Android 程序,试了 restartPackage、 killBackgroundProcesses 、通过异常并在Application 的子类中重新注册 Thread 的 Thread.UncaughtExceptionHandler 接口+异常方式,等等,都没有效果。最后发现其实只要在从一个 Activity A 跳到另一个 Activity B 时,转载 2012-08-01 14:35:56 · 1106 阅读 · 0 评论 -
Android学习札记30:线程更新UI界面的4种方法
方法一:View.post(Runnable action)public void onClick( View v ) { new Thread( new Runnable() { public void run() { // 耗时操作 doLongOperation(); myText.post(new Runnable() { myText.set原创 2012-07-22 19:38:43 · 862 阅读 · 0 评论 -
Android学习札记28:深入理解Android中的消息处理机制——Thread、Looper、MessageQueue和Handler(2)
前几天,和同事探讨了一下Android中的消息处理机制,探究了消息的发送和接收过程以及与线程之间的关系。虽然我们经常使用这些基础的东西,但对于其内部原理的了解,能使我们更加容易、合理地架构系统,并避免一些低级错误。对于这部分的内容,将分成4小节来描述: 1、职责与关系 2、消息循环 3、线程与更新 4、几点小结1、接下来,我们转载 2012-07-21 20:37:10 · 1299 阅读 · 0 评论 -
Android学习札记13:为什么更推荐使用Parcelable来在Activity间传递数据,而不是Serializable?
关于这个问题,StackOverflow的一种解释是这样的:大概翻译下:鉴于 Parcelable可能会引起这个争议,为什么Android不使用Java中内置的序列化机制呢?这是因为Android团队意识到,Java的序列化无法满足Android中进程间通信的要求,所以Android团队用Parcelable来解决这个问题。Parcelable实现了类成员中明确的序列化需求原创 2012-04-29 13:53:47 · 1505 阅读 · 0 评论 -
Android学习札记12:对Parcelable中describeContents()函数的一种理解
参考资料:http://stackoverflow.com/questions/4076946/parcelable-where-when-is-describecontents-used/4914799#4914799原创 2012-04-29 12:45:38 · 4566 阅读 · 0 评论 -
Android学习札记10:用SAX解析XML文件时,当标签中出现换行符时可能出现读取内容为空的解决方法
当标签中出现换行时,使用传统的读取方法可能出现为空的情况:像截图中的title标签使用下面的方法时读取到的内容就可能为空: @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method原创 2012-04-24 17:54:51 · 2227 阅读 · 0 评论 -
Android学习札记5:利用Pattern和SpannableString实现高亮关键字效果
在这篇文章里,用微博中常见的#话题#来做这个高亮关键字的效果。1、Pattern private static Pattern getSharpPattern() { if(sharp_Pattern == null) { sharp_Pattern = Pattern.compile("#[^#]+?#"); } return sharp_Pattern;原创 2012-04-17 17:29:49 · 1489 阅读 · 0 评论 -
Android学习札记4:PopupWindow在设置setFocusable后监听返回键盘事件
PopupWindow在设置了焦点之后,那么这个弹出窗口就是当前操作的窗口,如果想要在此时响应按键事件,就需要在PopupWindow上注册键盘事件来响应。但是PopupWindow好像只有一个OnDismissListener,怎么来注册键盘事件监听呢?可以利用PopupWindow里的最外层View,对该子View监听键盘事件setOnKeyListener即可。popup原创 2012-04-11 15:59:59 · 2913 阅读 · 1 评论 -
Android学习札记3:对View.MeaureSpec的一些理解
MeasureSpec封装了从父控件传给子控件的布局要求。每个MeasureSpec都描述了包括宽度和高度的要求。MeasureSpec由大小(size)和模式(mode)组成,这里有三种可能的模式(mode): UNSPECIFIED(未指定): 父控件没有对子控件进行任何的限制,子控件可以是任意大小。 EXACTLY(指定): 父控件已原创 2012-03-19 10:37:20 · 1165 阅读 · 0 评论 -
Android学习札记6:ProgressBar圆形进度条的颜色设置
1、布局文件代码: <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminateDrawable="@drawable/progressbar_red" />2、在drawab原创 2012-04-18 14:18:55 · 993 阅读 · 0 评论 -
Android学习札记7:ProgressBar水平进度条的颜色设置
1、在drawable目录下新建XML文件progressbar_horizontal_red: <!-- Copyright (C) 2008 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this f原创 2012-04-18 14:27:58 · 3400 阅读 · 0 评论 -
Android学习札记8:对TextView中的文字中间加上横线
1、在文字中间加上横线:textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG);2、在文字底部加上横线:textview.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG);原创 2012-04-19 15:42:00 · 1413 阅读 · 0 评论 -
Android学习札记9:对URL链接中中文汉字的编码处理
String url = null;try { url = new String("http://open.client.lashou.com/api/detail/city/" + URLEncoder.encode(city.getName(), "utf8") + "/p/1");} catch(Exception e) { e.printStackTrace();}return原创 2012-04-24 16:16:45 · 1780 阅读 · 0 评论 -
Android学习札记1:让ListView记住上次滑动到的位置
最近在应用开发中为了做到更好的用户体验,需要让ListView记住上次滑动到的位置,使用getScrollY()方法总是返回0,到最后也没搞懂是为啥。最后在谷歌上找到了这个,实验了一下,还真可以~参考资料:http://stackoverflow.com/questions/3014089/scroll-to-a-position-in-a-listview原创 2011-12-16 16:22:56 · 1332 阅读 · 0 评论 -
Android学习札记14:利用Parcelable在Activity间传递复杂的嵌套ArrayList对象参数
public class Menu implements Parcelable { private int id; private String name; public Menu() { } public Menu(Parcel source) { id = source.readInt(); name = source.readString(); }原创 2012-04-29 14:10:12 · 2733 阅读 · 2 评论