- 博客(51)
- 资源 (1)
- 收藏
- 关注
原创 Protocol buffer配置-生成jar包和java文件
Protocol Buffer是谷歌开源的一种序列化和反序列化机制,类似于XML,JSON 解析,但是Protocol Buffer 更灵活、更高效、更简单。 具体在实际开发中,Protocal Buffer表现怎么样,我也不知道,因为我很少用它,至于为什么会学习它,完全是因为Android Launcher3里面的backup.proto把我牵引了过去,Protocol buffer的
2016-08-12 18:22:19
9887
原创 Android-Android studio加载9.png图片报错
在用AS写代码,加入9.png图片以后,AS报错了,错误大致如下: : button_bg.9.png malformedAAPT err(Facade for 2075694): Frame pixels must be either solid or transparent : Found at pixel #1 along
2016-03-21 18:34:51
14307
原创 Android-Andriod studio自定义那些事
在经常使用一款IDE的时候,总会习惯性的去自定义一些东西,让自己更喜欢,更顺手。当然只是个人习惯。下面就自定义一些东西玩玩.一、改变android studio界面主题: android studio 本身界面是接近于白色,算是亮色,常时间对着亮色,会增加眼睛疲劳。所以就根据自己选择了一套自己喜欢的风格,在编辑器方面,我个人比较喜欢Sumbline Text3风格,所以在androi
2016-01-22 10:20:28
1096
原创 Android-语言设置流程分析
Android手机语言切换行为,是通过设置-语言和输入法-语言来改变手机的语言,其实这个功能很少被用户使用。 以Android5.1工程源码为基础,从设置app入手来分析和学习语言切换的过程: 一、语言设置界面: 首先在设置app中找到语言设置这个Preference,目前设置中界面大多都是Fragment,先找到语言和输入法的PreferenceScreen,与其对
2016-01-21 15:20:10
9183
原创 Android-Volley解析中文乱码
用Volley解析数据的时候,出现中文全部为乱码,出现乱码的问题,通常都是编码问题,那如果数据被加密了,是否也会乱码呢?应该也会乱码吧,不过这种情况下,就不光是中文乱码了。当然并不是解析所有的中文都是乱码 在Android-HttpClient连接网络获取数据中使用HttpURLConnection 的时候,就手动去设置了编码格式: public String getSt
2016-01-21 14:13:18
2351
原创 Android-Property 动画自定义TypeEvaluator
如果想根据某个属性TYPE来实现动画,但是这个Type又不是Android系统内置的,这个时候就需要创建一个自己的evaluator来实现了,并且新创建的type必须实现接口TypeEvaluator。Android系统内置的type有int,float和color,他们对应的evaluator是IntEvaluator、FloatEvaluator和ArgbEvaluator。接口TypeEva
2015-12-02 21:29:46
2892
原创 Android-Property Animation(属性动画)
一、Property动画简介: Property动画系统是一个很强大的框架,几乎可以让任何东西产生动画效果。可以定义一个动画随着时间的推移来改变任何对象的属性,无论它被绘制到屏幕上与否。其主要的Animator有:ValueAnimator、ObjectAnimator和AnimatorSet。 Property动画系统允许定义一个动画的下列属性: 1)Duration:
2015-12-01 23:47:11
730
原创 Android-View Animation(视图动画)
Android系统提供了两种动画框架:property动画(属性动画)和View动画(视图动画)。这两个动画系统都是可行的方案,但在一般情况下,属性动画系统被优先使用,因为它更灵活,并且提供了更多的功能,除了两个动画系统之外,也可以利用Drawable动画,它允许加载Drawable资源,一帧一帧的显示这些Drawable资源。 这里先学习View动画,Android View Ani
2015-12-01 23:18:23
818
原创 Android-Android解析JSON
在Android-使用Volley 连接网络中学习了Volley发送JsonRequest并获得返回的结果(JSONObject类型)。今天就来练习一下解析JSON。 一、先了解一下JSON的基本知识(详情请参考:http://www.json.org.cn/): JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它使得人们很容易的进行阅
2015-11-19 23:47:16
631
原创 Android-Volley源码分析
在上一篇文章Android-使用Volley 连接网络中,学习了简单使用Volley连接网络并获取数据,今天就来学习一下Volley的源码。毕竟刚开始接触Volley的时候,谁都难免会对其实现过程有所迷惑,我以自己刚接触Volley时心中的几点疑惑为例:1)Volley 是靠什么去连接网络的?2)Volley要连接网络,就需要异步类的操作,Volley是如何处理这步的?3)Voll
2015-11-19 23:27:57
485
原创 Android-使用Volley 连接网络
Volley是Android开源的一个框架,于2013年在Google大会上发布。 Volley是一个Http库,它Android Apps执行网络操作更加方便,并且更加高效。在Android 开源项目仓库中可以获得Volley源码: git clone https://android.googlesource.com/platform/framework
2015-11-19 22:54:46
999
原创 Androidd-XmlPullParser解析XML
在上一篇文章Android-HttpClient连接网络获取数据中,简单使用了HttpURLConnection来获取网络数据,然而并没有对获取的数据做任何操作,比如解析从网络得到的数据。这篇文章,就来练习一下使用XmlPullParser解析XML。 XmlPullParser在Android源码中是使用的最多的一种XML解析器,当然还有其他的解析方式,比如:SAX解析器。对于这些解析
2015-11-14 22:48:23
3427
原创 Android-HttpClient连接网络获取数据
大部分Android App都使用HttpURLConnection 和 Apache HTTP Client来发送和接收网络数据(不包括第三方开源项目),这两者都支持HTTPS,流上传和下载,可配置超时,IPv6和连接池。 1)关于Apache HTTP Client: DefaultHttpClient(android5.1\external\apache-http\s
2015-11-14 22:32:48
2337
转载 Android-内存优化之OOM
Android的内存优化是性能优化中很重要的一部分,而避免OOM又是内存优化中比较核心的一点,这是一篇关于内存优化中如何避免OOM的总结性概要文章,内容大多都是和OOM有关的实践总结概要。理解错误或是偏差的地方,还请多包涵指正,谢谢!(一)Android的内存管理机制Google在Android的官网上有这样一篇文章,初步介绍了Android是如何管理应用的进程与内存分配:http
2015-11-10 21:14:01
662
转载 Android-性能优化之运算篇
Google近期在Udacity上发布了Android性能优化的在线课程,分别从渲染,运算与内存,电量几个方面介绍了如何去优化性能,这些课程是Google之前在Youtube上发布的Android性能优化典范专题课程的细化与补充。下面是运算篇章的学习笔记,部分内容与前面的性能优化典范有重合,欢迎大家一起学习交流!1)Intro to Compute and Memory Probl
2015-11-10 11:24:47
583
转载 Android-性能优化之内存篇
3)Memory Leaks内存泄漏表示的是不再用到的对象因为被错误引用而无法进行回收。发生内存泄漏会导致Memory Generation中的剩余可用Heap Size越来越小,这样会导致频繁触发GC,更进一步引起性能问题。举例内存泄漏,下面init()方法来自某个自定义View:1234private void i
2015-11-10 11:21:02
576
转载 Android-性能优化之电量篇
转自:http://hukai.me/android-performance-battery/Google近期在Udacity上发布了Android性能优化的在线课程,分别从渲染,运算与内存,电量几个方面介绍了如何去优化性能,这些课程是Google之前在Youtube上发布的Android性能优化典范专题课程的细化与补充。下面是电量篇章的学习笔记,部分内容与前面的性能优化典
2015-11-10 11:14:12
732
转载 Android-性能优化典范(第三季)
Android性能优化典范的课程最近更新到第三季了,这次一共12个短视频课程,包括的内容大致有:更高效的ArrayMap容器,使用Android系统提供的特殊容器来避免自动装箱,避免使用枚举类型,注意onLowMemory与onTrimMemory的回调,避免内存泄漏,高效的位置更新操作,重复layout操作的性能影响,以及使用Batching,Prefetching优化网络请求,压缩传输数据等等
2015-11-10 11:09:22
491
转载 Android-性能优化典范(第二季)
Google前几天刚发布了Android性能优化典范第2季的课程,一共20个短视频,包括的内容大致有:电量优化,网络优化,Wear上如何做优化,使用对象池来提高效率,LRU Cache,Bitmap的缩放,缓存,重用,PNG压缩,自定义View的性能,提升设置alpha之后View的渲染性能,以及Lint,StictMode等等工具的使用技巧。 下面是对这些课程的总结摘要,认知有限,理解偏差的
2015-11-10 11:00:39
587
原创 Android-Android5.1屏幕固定功能(screen pinning)分析
一、设置中开启屏幕固定: 此功能在设置-安全中开启,不清楚以往的版本中是否支持就有已经有了此功能,但是Android4.4设置中到时没有发现此项。在Android 5.0发现了此项设置。刚一看到此项设置,就心想:“这是什么鬼!”。设置中的代码在SecuritySettings.java和ScreenPinningSettings.java中,代码量不多,Preference XML文
2015-11-09 17:36:27
9492
原创 Android5.1 -Recents分析
Android使用RecentsActivity来展示最近使用过的app。至于此界面,不同品牌的Android智能手机,可能界面都会有所不一样。以Android 5.1的RecentsActivity界面为例,原始风格也跟以往的版本有一些不一样(如图),似乎比以往的界面都要炫酷一些。不过从Android 5.0开始,Recents就有了诸多变化,比如:Android4.4 在SystemUI中
2015-11-06 18:34:01
7925
原创 Android-使用SoundPool实现语音计算器
Android计算器的代码直接使用Android系统里面的Calculator。先找到Android 工程源码中的Calculator(./package/app/Calculator)。导入到Eclipse或者AS。 一、Eclipse导入Android系统自带的Calculator。 在找到Calculator代码以后,在Eclipse中执行:file->
2015-11-02 18:02:22
2904
原创 Android-MediaPlayer 和 SoundPool
在学习Android源码的过程中,跟MediaPlayer 和 SoundPool都有过碰面,所以稍微整理一下这两个跟播放音频有关的类。 这两个类都在属于android.media(源码目录:.\frameworks\base\media\java\android\media)。MediaPlayer 在Apk Music中得到广泛使用,所以通过Android源码中的App-Music可
2015-10-27 13:20:58
3527
原创 Android-ActionBar扩展
一、关于ActionBar的item: 1)动态修改item的title和icon: 有时候ActionBar上的Item需要根据某种状态来显示不同title和icon,比如一些收音机上ActionBar上有控制其是否外放的Item,就要根据收音机是否处于外放状态来显示不同的状态的titel和icon,甚至控制Item是显示还是被折叠。这个就要重写函数onPrepareOptio
2015-10-25 22:22:47
920
原创 Android-ActionBar
一,ActionBar简介: ActionBar是Android系统window的导航栏,从Android3.1(API-11)开始加入到Android系统中。通俗的说,ActionBar让用户在进入指定界面以后,通过ActionBar的描述可以知道在指定界面能做哪些操作。ActionBar提供了几个关键功能: 1)提供一个专门的空间,给你的app增加一个特性,并且指示
2015-10-20 15:23:51
580
原创 Android 5.1 Keyguard初识
Android5.1锁屏和以往的版本有了很大的变化,也增加了一个新的特性:在锁屏上可以显示通知(Notification)。Keyguard的本身也不再是一个独立的APK,跟SystemUI 合并,并作为SystemUI的lib。这点在SystemUI的Android.mk文件中就有体现。对比Android5.1 和 Android4.4 SystemUI 的mk文件一目了然:Androi
2015-10-14 11:12:52
8283
原创 Android 5.1-手电筒应用小思路(三)
前面记录了两篇关于Android 4.4开发 Android手电筒小应用的一些心得,当然只是从上层来做一些简单的处理。 然而随着Android的发展和更新,Android Camera类已被标识为过时的类,官方建议开发者使用Camera2。在Android官方文档中也提到过(Android官方开发指南-Camera(相机)。在Android5.1之前版本的SDK中,看不到androi
2015-10-12 17:10:01
2518
原创 Android-编译环境搭建(多版本JDK切换)
由于在Android L 开始的版本 要编译Android源码,都需要安装openJDK1.7,而编译之前的4.4版本,用的是甲骨文的JDK1.6。所以在分开编译的时候就有必要切换相应的JDK。 为此记录下来,编译环境的详细过程,可参见Android官网:http://source.android.com/source/initializing.html如果是Ubuntu 1
2015-07-14 19:07:01
3779
翻译 Android官方文档-App Widgets
应用程序的窗口小部件是微型应用程序视图,可以嵌入到其他应用程序中(如主屏幕),并收接收定期更新。这些视图在用户界面被称为小工具,你可以用一个App的Widget提供者发布一个。一个能够容纳其他应用程序的窗口小部件的应用程序组件被称为一个应用程序窗口小部件的宿主。下面的截图显示了音乐应用程序的Widget。本文介绍如何使用应用程序的Widget provider发布一个应用程序窗口小部件
2015-06-23 16:46:52
1315
翻译 Android官方文档-Bound Services(绑定服务)
绑定服务绑定服务是在客户端 - 服务器接口中的服务器。绑定服务允许组件(如activity)绑定到该服务,发送请求,接收响应,甚至进行进程间通信(IPC)。绑定服务通常只活动在它服务于其他应用程序组件时,并不会一直在后台运行。本文向您介绍如何创建一个绑定服务,包括如何从其他应用程序组件绑定到该服务上。然而,你也应该参考Services文档,了解更多关于普通情况下服务的额外信息,比如
2015-06-11 11:03:09
990
翻译 Android官方文档-Services(服务)
一个Service是应用程序的一个组件,可以在后台执行长时间运行操作,并且不提供用户界面。另一个应用程序组件可以启动一个服务,即使用户切换到另一个应用程序后它也继续在后台运行。此外,一个组件可以绑定到一个服务上与其交互,甚至进行进程间通信(IPC)。例如,一个服务可以处理网络交易,播放音乐,执行文件流I / O,或与内容提供者进行交互,所有这些都在后台执行操作。服务基本上可以采取两种形
2015-06-11 10:59:08
624
原创 Android Studio部分快捷键记录
1.Ctrl+E,可以显示最近编辑的文件列表 2.Shift+Click:关闭文件 3.Ctrl+[或]:跳到大括号的开头结尾 4.Ctrl+Shift+Backspace:跳转到上次编辑的地方 5.Ctrl+F12:显示当前文件的结构 6.Ctrl+F7:查询当前元素在当前文件中的引用,
2015-06-07 23:39:11
431
原创 Andriod-手电筒应用小思路(二)
在上一篇文章Android-手电筒应用小思路(一)中提到的是独立手电筒App应用,然而第三方的手电筒应用是有缺陷的。因为如果让第三方手电筒app在后台亮,然后进入照相机,照相机是不能开启的。因为Camera是共享的硬件,但是不支持多个应用同时使用Camera,最起码,Android设计这块的初衷是这样的。 所以就想针对这点做点什么,当然不能像小米系统自带的手电筒那么叼。但是我的做
2015-05-25 15:32:01
698
原创 Android-手电筒应用小思路(一)
Android 手电筒应用应该算是一个非常简单的应用。所以就不做太多说明。手电筒应用主要知识点就是Camera(硬件)的使用,控制闪光灯来达到手电筒的效果。本人不才,前面有翻译过关于Camera的官方文档,虽然翻译的比较粗糙,但是还是能明白大概意思--- Android官方开发指南-Camera(相机)。很显然,手电筒应用的主要控制代码如下:protected void openTorch
2015-05-18 22:40:31
915
翻译 Android官方开发指南-Camera(相机)
相机Android核心框架包括各种摄像机和照相机功能,在应用程序中允许你拍照和录像。本文讨论了一个快速,简单的拍照和摄影的方法,并概述为用户创建自定义相机的高级体验方法。注意事项在Android设备上的应用程序使用相机之前,你应该考虑您的应用程序打算如何使用这些硬件功能的几个问题。相机需求 -对于你的应用程序来说是很重要的,你不希望你的应用安装在一个
2015-03-25 15:18:22
4708
翻译 Android官方开发指南-Tasks and Back Stack
任务和栈一个应用程序通常包含多个activities。每一个activities都应该被设计成围绕一个特定的动作,这些动作用户可以执行,可以启动其他activity。例如,电子邮件应用程序可能有一个activity,以显示新的消息的列表。当用户选择一个信息,一个新的activity界面打开,以查看该消息。一个activity甚至可以启动存在于设备上的其他应用程序的activit
2015-03-17 18:36:37
458
翻译 Android官方开发指南-Loaders
Loaders(加载器)在Android 3.0的推出,Loaders可以很容易在一个activity或fragment中异步加载数据。Loaders具有以下特点:它们对每一个Activity和Fragment都是有效的。它们提供数据的异步加载。它们监控其数据的来源,并在内容变化的时候传递新的结果。在一个配置改变时,他们自动的重新连接到最后loader的光标。因此,
2015-03-16 15:10:52
620
翻译 Android官方开发指南-Activity
活动(Activity)一个Activity 是一个应用程序组件,它提供了一个屏幕,与用户交互,用户可以通过它做一些事情。如拨打电话,拍照,发送电子邮件或查看地图。每个活动都有一个窗口,在其中绘制它的用户界面。窗口通常充满屏幕,也可以是小于屏幕和浮于其他窗口之上。一个应用程序通常包括多个彼此松散结合在一起的Activity。通常情况下,在应用程序中一个Activity被指定为“
2015-03-04 16:39:14
715
翻译 Android官方开发指南-常见的意图(Common Intents)
常见的意图(Common Intents)Intent允许你通过描述一个你想执行(如“查看地图”或“拍照”)的简单的action,在另一个应用程序中启动一个Activity。这种类型的Intent被称为隐式意图,因为它没有指定的应用程序要启动的组件,而是指定一个action,并提供了一些 数据,用来执行这个action。当你调用 startActivity()或 startAc
2015-02-28 16:58:39
3110
翻译 Android官方开发指南-意图和意图过滤器(Intents and Intent Filters)
Intent是一个消息对象,你可以用来请求一个来自其他应用组件的操作。在几种方式中,Intent有利于组件之间的通信,有三个基本的用例:启动一个Activity:一个Activity代表了应用程序中的一个界面。通过传递一个Intent给startActivity(),你可以启动Activity的一个新的实例。这个Intent描述了Activity的启动,并携带任何必要的数据。
2015-02-26 14:30:48
1288
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人