Android开发之道
本专栏展示Android开发方面的各种技术应用实现,通过实例代码的演示。浓缩Android开发的精华,展示最新Android技术!由浅入深,由易到难,一步一步总结开发中的技术点。
张腾元-Ternence
Github: https://github.com/Ternence
Baidu Mobile Security Group
移动安全 高级软件开发工程师
IoT安全
算法研究者, AI, 数学建模
展开
-
Android开发_AsyncTask
在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。在单线程模型中始终要记住两条法则: 1. 不要阻塞UI线程 2. 确保只在UI线程中访问Android UI工具包 当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:原创 2013-09-01 00:15:48 · 1810 阅读 · 0 评论 -
Android开发_Gson解析
//转换器 GsonBuilder builder = new GsonBuilder(); // 不转换没有 @Expose 注解的字段 builder.excludeFieldsWithoutExposeAnnotation(); Gson gson = builder.create();原创 2013-08-31 01:06:13 · 2380 阅读 · 0 评论 -
Android开发_字符串处理类-TextUtils类
对于字符串处理Android为我们提供了一个简单实用的TextUtils类,如果处理比较简单的内容不用去思考正则表达式不妨试试这个在android.text.TextUtils的类,主要的功能如下: 是否为空字符 static boolean isEmpty(CharSequence str) 拆分字符串 public static String[]原创 2013-08-31 00:48:38 · 4035 阅读 · 0 评论 -
Android开发_Android数据的四种存储方式
Android系统一共提供了四种数据存储方式。分别是:SharePreference、SQLite、Content Provider和File。由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Provider。 SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采原创 2013-08-31 00:43:10 · 17834 阅读 · 2 评论 -
Android开发_SharedPreferences
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存,它是什么样的处理方式呢?SharedPreferences类似过去W原创 2013-08-31 00:20:44 · 3126 阅读 · 0 评论 -
Android开发_后台任务task管理_allowTaskReparenting alwaysRetainTaskState clearTaskOn
1.android:allowTaskReparenting 这个属性用来标记一个Activity实例在当前应用退居后台后,是否能从启动它的那个task移动到有共同affinity的task,“true”表示可以移动,“false”表示它必须呆在当前应用的task中,默认值为false。如果一个这个Activity的元素没有设定此属性,设定在上的此属性会对此Activity起作用。例如在一个应原创 2013-08-31 00:16:29 · 9015 阅读 · 0 评论 -
Android开发_控制硬加速hardwareAccelerated
控制硬加速 hardwareAccelerated 也是一种优化的手段从Android3.0 (API level11)开始,Android的2D显示管道被被设计得更加支持硬加速了.硬加速使用GPU承担了所有在View的canvas上执行的绘制操作. 启用硬加速最简单的的方法是对整个应用启用硬件速.如果你的应用只使用标准的view和Drawable,全局启用硬加速将不会带来任原创 2013-08-30 23:52:51 · 2091 阅读 · 0 评论 -
Android开发_判断网络连接是否可用
获取网络信息需要在AndroidManifest.xml文件中加入相应的权限。 1)判断是否有网络连接 复制代码代码如下:public boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager mConnectivityManager =原创 2013-08-24 22:43:01 · 2254 阅读 · 1 评论 -
Android开发_分享一个的bug解决方案R.java was modified manually! Reverting to generated version!
R.java was modified manually! Reverting to generated version!进入 eclipse后,菜单 --> Project --> clean,这样的操作就相当于把R文件删了,然后再自动生成R文件。如果没有自动生成R文件,那么就是程序中有错误,一般情况下是命名问题。我遇到的情况是:(1)layout文件夹中,不原创 2013-08-11 14:18:32 · 3551 阅读 · 0 评论 -
Android开发_网络编程之Http通信
Android中提供的HttpURLConnection和HttpClient接口可以用来开发HTTP程序。以下是本人在学习中的总结与归纳。1. HttpURLConnection接口 首先需要明确的是,Http通信中的POST和GET请求方式的不同。GET可以获得静态页面,也可以把参数放在URL字符串后面,传递给服务器。而POST方法的参数是放在Http请求中。因此,在编程之前,应原创 2013-07-22 16:07:10 · 1511 阅读 · 0 评论 -
Java_java多线程下载-断点下载-超详细
基本原理:利用URLConnection获取要下载文件的长度、头部等相关信息,并设置响应的头部信息。并且通过URLConnection获取输入流,将文件分成指定的块,每一块单独开辟一个线程完成数据的读取、写入。通过输入流读取下载文件的信息,然后将读取的信息用RandomAccessFile随机写入到本地文件中。同时,每个线程写入的数据都文件指针也就是写入数据的长度,需要保存在一个临时文件中。这样当原创 2013-07-22 13:16:06 · 1985 阅读 · 0 评论 -
Android开发_SQLite使用方法技巧
SQLite介绍SQLite是轻量级的、嵌入式的、关系型数据库,目前已经在iPhone、Android等手机系统中使用,SQLite可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。在android中当需要操作SQLite数原创 2013-07-22 12:58:21 · 2601 阅读 · 0 评论 -
Android开发_Activity打成jar包
最近有一个需要,我们公司做了一个apk客户端,然后其他的公司可以根据自己的需要来替换里面的资源图片,文字等一些资源文件问题,我本来想这个简单,用两个工程直接替换里面的资源文件就行,老大说,这样子不好,如果要改需要改两个客户端,而且还麻烦,叫我将所有的Activity打成Jar包的形式,这样子我们改了里面的内容就直接发布Jar包出去,其他公司直接下载Jar来使用,这样子他们自己公司也能更好的维护。原创 2013-07-20 12:25:03 · 1802 阅读 · 0 评论 -
Android开发_android权限
访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米 获取精确位置 android.permi原创 2013-07-20 12:21:36 · 1684 阅读 · 0 评论 -
Android开发_拖动效果,旋转效果,两点放大缩小的实现
最近在做一个项目,需要用到拖动图片,旋转效果,两点放大缩小。首先拖动图片布局,主要就是一个button做测试<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent原创 2013-07-20 12:15:50 · 5111 阅读 · 0 评论 -
Android开发_推荐一些顶级Android书
这两天在网上看到的一些perfect android books , 那就分享给大家,没兴趣买的可以下载下电子版的书看看本帖对Android开发菜鸟和中级老兵同样适用,因为本帖重点列出了那些最常用的Android开发资源。 推荐书籍你或许觉得,都2013年了,再去看个什么书来学习Android开发,这方法应该早就过时了。没错,或原创 2013-07-19 23:00:04 · 2364 阅读 · 0 评论 -
android开发_MotionEvent与其他事件处理_手势_键盘_鼠标
MotionEvent对象当用户触摸屏幕时将创建一个MotionEvent对象。MotionEvent包含关于发生触摸的位置和时间等细节信息。MotionEvent对象被传递到程序中合适的方法比如View对象的onTouchEvent()方法中。在这些方法中我们可以分析MotionEvent对象那个,以决定要执行的操作。MotionEvent对象是与用户触摸相关的时间序列,该序列从原创 2013-07-19 21:09:18 · 2813 阅读 · 0 评论 -
Android开发_代码中设置全屏和notitle
在实际的应用程序开发中,我们有时需要把 Activity 设置成全屏显示,一般情况下,可以通过两种方式来设置全屏显示效果。其一,通过在代码中可以设置,其二,通过manifest配置文件来设置全屏。 其一:在代码中设置(如下)[c-sharp] view plaincopypublic void onCreate(Bundle原创 2013-07-17 19:38:49 · 6445 阅读 · 0 评论 -
Android开发_Jsoup抓取网页信息
想要抓取别的网页的信息,比较好的方法就是jsoup抓取,保存html为 documents 解析有用信息就可以!http://www.open-open.com/jsoup/一般情况下jsoup多用于JAVA方面的开发,可以利用jQuery,DOM一同使用。可以达到抓取其它网站的信息。好了开始介绍如何使用jsoup在android中解析html的使用原创 2013-07-17 12:50:39 · 5501 阅读 · 4 评论 -
Android开发_混淆器防止反编译-原始proguard.cfg文件
使用Android混淆器proguard.cfg来防止程序被反编译,也其实就是将变量的名称混淆一下,降低程序的可读性使用步骤:1.default.properties文件中添加一行proguard.config=proguard.cfg, 例如以下是我的default.properties的源文件# This file is automatically generate原创 2013-07-15 13:51:30 · 1931 阅读 · 0 评论 -
Android开发_下拉刷新
最近项目中需要用到ListView下拉刷新的功能,一开始想图省事,在网上直接找一个现成的,可是尝试了网上多个版本的下拉刷新之后发现效果都不怎么理想。有些是因为功能不完整或有Bug,有些是因为使用起来太复杂,十全十美的还真没找到。因此我也是放弃了在网上找现成代码的想法,自己花功夫编写了一种非常简单的下拉刷新实现方案,现在拿出来和大家分享一下。相信在阅读完本篇文章之后,大家都可以在自己的项目中一分钟引原创 2013-07-15 11:59:46 · 1774 阅读 · 2 评论 -
Android开发_判断手机网络是否可用
/** * 判断手机网络是否可用 * * @param context * @return */ private boolean isNetworkAvailable() { ConnectivityManager mgr = (ConnectivityManager) getApplicationContext() .getSystemService(Cont原创 2013-07-12 14:12:01 · 1975 阅读 · 1 评论 -
Android开发_ViewPager制作欢迎界面
ViewPager需要android-support-v4.jar这个包的支持,来自google提供的一个附加包。大家搜下即可。ViewPager主要用来组织一组数据,并且通过左右滑动的方式来展示。现在的大多数应用都会有一个欢迎引导页面,如图所示,通过左右滑动来告知用户一些功能特性。这个引导图效果用ViewPager可以很轻松的实现。正如前面所说,Vie原创 2013-06-17 21:15:18 · 2228 阅读 · 1 评论 -
Android开发_viewpager作为header加入到listview
需要将viewpager作为header加入到listview里,但是一直显示不出来,或者报异常,其实,关键点有3点:1.需要在代码中设置控件的高与宽2.设置viewpager的时候,绝对不能用WRAP_CONTENT,需要直接指定大小3.设置长宽是,需要指定他的subclass,如setLayoutParams(new ListView.LayoutParams(List原创 2013-06-17 20:58:56 · 3935 阅读 · 0 评论 -
Android开发_修改listview中信息
开发的时候使用listview来列出个人资料,或者好友资料 如果修改了其中的一项,好像又找不到对应的view,进行更新,当然如果 你不使用listview,而使用textview+imageview罗列,这个问题就不会出现了 现在情况是使用listview,又要更新怎么办? 这是一个Adapter,用于将数据转换显示在listview原创 2013-06-17 20:43:23 · 1623 阅读 · 0 评论 -
Android开发_Tab
Tab的学习和使用public void setDefaultTab (String tag) 这两个函数很易懂,就是设置默认的Tab public void setDefaultTab (int index) 通过tab名——tag或者index(从0开始) protected void onRestoreInstanceState (Bun原创 2013-06-16 14:04:20 · 1144 阅读 · 0 评论 -
Android开发_滑动菜单框架
转载请注明出处:http://blog.csdn.net/sinyu890807/article/details/8744400之前我向大家介绍了史上最简单的滑动菜单的实现方式,相信大家都还记得。如果忘记了其中的实现原理或者还没看过的朋友,请先去看一遍之前的文章 Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现 ,因为我们今天要实现的滑动菜单框架也是基于同样的原理原创 2013-06-15 21:34:25 · 1761 阅读 · 1 评论 -
Android开发_通过ExitManager关闭所有activity
package cn.com.util;import java.util.LinkedList;import java.util.List;import android.app.Activity;import android.app.Application;public class ExitManager extends Application{ private List act原创 2013-06-15 21:24:07 · 1328 阅读 · 0 评论 -
Android开发_打开系统设置界面
打开系统设置或信息界面,来设置相关系统项或查看系统的相关信息 Intent intent = new Intent("/"); ComponentName cm = new ComponentName("com.android.settings","com.android.settings.WirelessSettings"); intent.setComponen原创 2013-06-09 22:12:26 · 2357 阅读 · 2 评论 -
Android开发_Notification
一、显示进度的通知 通知可以包括一个动画进度指示器以显示用户正在运行的操作的进度状态。如果你能估计这种操作需要花费多长时间,可以使用“determinate”形式的指示器(一个progress bar)。如果你不能估计花费的时间,那就使用“indeterminate”形式的指示器。1.显示一个固定的时间进度指示器(1).技术要点调用setProgress()方法添原创 2013-06-09 21:13:26 · 1349 阅读 · 0 评论 -
Android开发_Socket通信
应用软件的网络通信无非就是Socket和HTTP,其中Socket又可以用TCP和UDP,HTTP的话就衍生出很多方式,基础的HTTP GET和POST请求,然后就是WebService的SOAP。在这些方式中,Socket当然是最基础的。因此先从Socket开始。服务端就不需要过多的说明了,无论采用什么语言什么平台都可以,只要遵循基本的Socket监听模式就行。实际上An原创 2013-05-30 18:28:08 · 2095 阅读 · 0 评论 -
Android开发_Adapter用法总结
Android之Adapter用法总结1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系:Android中所有的Adapter一览: 由图可原创 2013-05-25 18:03:36 · 1527 阅读 · 0 评论 -
Android_开发--土豆API播放在线视频
★土豆的视频API:获取视频排行榜搜索视频的APIhttp://api.tudou.com/v3/gw?method=item.search&appKey=★去api.tudou.com申请过来的API key★&format=xml&kw=★关键字★&pageNo=★页码★&pageSize=★单页条目数量★&channelId=★被搜索的分类★&sort=v然后,土豆会送回一个原创 2013-05-15 16:08:40 · 3339 阅读 · 0 评论 -
Android开发_八款开源 Android 游戏引擎
初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引擎可供使用,一边自暴自弃的抱怨Android平台游戏开发难度太高,又连个像样的游 戏引擎也没有,甚至误以为使用Java语言开发游戏是一件费力不讨好且没有出路的事情。事实上,这种想法完全是没原创 2013-05-08 17:31:43 · 1766 阅读 · 0 评论 -
Android开发_内存溢出_out of memory
1. verbosegc 一般Java虚拟机要求支持verbosegc选项,输出详细的垃圾收集调试信息。dalvik虚拟机很安静的接受verbosegc选项,然后什么都不做。dalvik虚拟机使用自己的一套LOG机制来输出调试信息。 如果在Linux下运行adb logcat命令,可以看到如下的输出: D/dalvikvm( 745): GC_CONCURRENT fre转载 2013-04-28 14:58:33 · 1048 阅读 · 0 评论 -
Android 加载大图片时内存溢出的问题
尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的原创 2013-04-28 10:48:51 · 1592 阅读 · 0 评论 -
Android_开发 Gallery实现异步加载网络图片 并只加载当前停止页面图
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;impor原创 2013-04-28 10:07:37 · 2084 阅读 · 0 评论 -
Android开发之多线程处理、Handler详解
Android开发过程中为什么要多线程我们创建的Service、Activity以及Broadcast均是一个主线程处理,这里我们可以理解为UI线程。但是在操作一些耗时操作时,比如I/O读写的大文件读写,数据库操作以及网络下载需要很长时间,为了不阻塞用户界面,出现ANR的响应提示窗口,这个时候我们可以考虑使用Thread线程来解决。 Android中使用Thread线程会遇到哪些原创 2013-04-28 09:46:56 · 1712 阅读 · 0 评论 -
Android开发_Android获取屏幕大小
取得画面的大小,以下这段代码就能帮你在android平台中取得画面的大小,代码如下:1. Display display = getWindowManager().getDefaultDisplay(); 2. Log.i("view" , "height:" +display.getHeight()); 3. Log.i("view" , "width:" +display.ge原创 2013-04-28 08:41:49 · 1093 阅读 · 0 评论 -
Android开发_android gallery相干操作
android gallery相关操作1,android调用gallery获取图片Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType("image/*");startActivityForResult(intent,GET_PHOTO_WITH_GALLARY);然后在protected voi原创 2013-04-27 22:11:38 · 1926 阅读 · 0 评论