Android
A一剑飞鸿
书山有路勤为径,学海无涯苦作舟。
展开
-
Android 多Dex分包机制
问题引入随着项目工程越来越庞大,代码的方法数不断增长到一定程度,就出现Android 低版本系统应用无法安装的情况。那么这是哪里出错了?Android系统对安装包有哪些限制? 前一阵子,我们发现公司的某一个业务,在Android 2.3及系统安装不了。此时,我们该业务的Android客户端开发已经有50个人。一般外面公司的Android开发也就2~3个,代码的体量也很难增长到像我们这样的...原创 2018-08-31 11:33:55 · 1074 阅读 · 1 评论 -
android Handle机制(一)
今天介绍一下 android Handle机制,这在开发是必然会用到的,很重要!Handler基本概念: Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。原创 2012-03-09 11:57:38 · 4904 阅读 · 1 评论 -
Gradle for Android(三)
第三篇( 依赖管理 )依赖管理依赖管理是Gradle最闪耀的地方,最好的情景是,你仅仅只需添加一行代码在你的build文件,Gradle会自动从远程仓库为你下载相关的jar包,并且保证你能够正确使用它们。Gradle甚至可以为你做的更多,包括当你在你的工程里添加了多个相同的依赖,gradle会为你排除掉相同的jar包。在这一章我们将学习以下内容:仓库本地依赖详解依赖这一概念...原创 2017-09-22 13:49:03 · 627 阅读 · 0 评论 -
Gradle for Android(四)
## 第四篇( 构建变体 ) 当你在开发一个app,通常你会有几个版本。大多数情况是你需要一个开发版本,用来测试app和弄清它的质量,然后还需要一个生产版本。这些版本通常有不同的设置,例如不同的URL地址。更可能的是你可能需要一个免费版和收费版本。基于上述情况,你需要处理不同的版本:开发免费版,开发付费版本,生产免费版,生产付费版,而针对不同的版本不同的配置,这极大增加的管理难度。Gradl...原创 2017-09-22 13:50:03 · 747 阅读 · 0 评论 -
Gradle for Android(二)
第二篇( Build.gradle入门 )在这一章,我们将学习以下内容:理解Gradle文件编写简单的构建任务自制构建脚本理解Gradle脚本当然我们现在讨论的所有内容都是基于Android studio的,所以请先行下载相关工具。当我们创建一个新的工程,Android studio会默认为我们创建三个gradle文件,两个build.gradle,一个settings...原创 2017-09-22 13:48:08 · 730 阅读 · 0 评论 -
Gradle for Android(一)
第一篇( 从 Gradle 和 AS 开始 )如果你是名Android开发新手,或者是名从eclipse切换到Android studio的新手,那么我强烈建议您follow我的文章,正如封面所见,利用gradle构建工具来自动构建你的Android项目。废话不多说,我们直接开始吧。今天主要介绍Android studio工具的使用,以及cradle基础入门,使用cradle wrap...原创 2017-09-22 13:46:53 · 739 阅读 · 0 评论 -
Android设计模式之工厂模式 Factory
一.概述平时做项目跟使用第三方类库的时候经常会用到工厂模式.什么是工厂模式,简单来说就是他的字面意思.给外部批量提供相同或者不同的产品,而外部不需要关心工厂是如何创建一个复杂产品的过程.所以工厂模式可以降低模块间的耦合,同时可以提高扩展性(当有新的产品出现时,只需要扩展工厂就行了,上层模块不敏感). 工厂模式根据抽象的角度和层级的不同可以分为两种模式: 1.工厂方法模式 (Factory M原创 2017-09-30 15:28:01 · 403 阅读 · 0 评论 -
Android设计模式之观察者模式
观察者模式(Observer Pattern)定义对象间的一种一个(Observable)对多(Observer)的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新。当然,MVC只是Observer模式的一个实例。Observer模式要解决的问题为:建立一个一(Observable)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多转载 2017-09-30 11:35:39 · 640 阅读 · 0 评论 -
Android Live Wallpaper
Android Live Wallpaper,这篇教程讲解android透明屏幕的实现方式。它以eclipse4.2、java 1.6、android4.1位基础。1. 提前预习 下面的教程假设您已经掌握了android开发的基本知识 Android development。Android开发教程,学习基本知识,可以参考这个教程:http://www.vogella.co翻译 2017-09-12 18:53:14 · 2440 阅读 · 0 评论 -
Android图文混排实现方式详解
在使用TextView的时候,我们经常需要在TextView中进行图文混排,比如在QQ中聊天的消息中的表情,底部tab图标等。一、场景二、实现方式Android官方对TextView的图文混排提供了支持,我们可以从以下三种方式实现TextView的图文混排:1.在TextView中使用Compound Drawable属性; 2.在TextView中使用Spannable多样式显示; 3.在T原创 2017-09-12 16:40:44 · 635 阅读 · 0 评论 -
应用内切换主题有哪些方案可以实现
应用内切换主题有哪些方案可以实现这里讨论的只是白天、夜晚主题切换这种场景,不涉及外部资源加载。现在要给App添加夜晚主题,所以就需要选择一种应用内部更换主题的实现方案,目前来说,比较常见的几种方式如下:Theme设置Theme来切换不同主题。优点:利用系统自带的机制实现,根据标志位setTheme()即可。缺点:在主题切换界面不重启的情况下,不能自动完成界面主题的刷新。遍历View对主题的更换,使用原创 2017-08-31 10:43:32 · 1291 阅读 · 0 评论 -
android 调用js中的方法
Android中可以使用WebView加载网页,同时Android端的java代码可以与网页上的javascript代码之间相互调用。一 Android部分: 布局代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/to原创 2018-01-11 16:23:05 · 380 阅读 · 0 评论 -
Android设计模式之策略模式
看下策略模式的定义: 策略模式定义了一些列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变换。乍一看,也没看出个所以然来。举个栗子吧。 假设我们要出去旅游,而去旅游出行的方式有很多,有步行,有坐火车,有坐飞机等等。而如果不使用任何模式,我们的代码可能就是这样子的。public class TravelStrategy { enum S原创 2018-01-12 15:47:30 · 789 阅读 · 0 评论 -
Android Studio 打包时 Signature Version 选择 V1 V2 说明
问题描述(v1和v2)Android 7.0中引入了APK Signature Scheme v2,v1是jar Signature来自JDK V1:应该是通过ZIP条目进行验证,这样APK 签署后可进行许多修改 - 可以移动甚至重新压缩文件。 V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更改(包括 zipalign)。正因如此,现在在编译过程中,我们将...原创 2018-06-28 16:34:49 · 448 阅读 · 0 评论 -
androidstudio 拆包时设置dex方法个数
前言Android应用程序,最终发布成一个apk,安装到手机上。 apk文件随便用一个解压缩文件打开,可以看到里面有一个classes.dex文件,这就是之前工程中所有的代码,以及所有依赖的jar包全部合并在一起生成的一个dex文件。关于dex文件是什么,可以自己去科普一下。google当初在设计dex文件的时候,限制了dex文件中最大的函数个数为65536(unsigned short)...原创 2018-03-05 19:29:53 · 2301 阅读 · 1 评论 -
Android彻底组件化
得到Android组件化方案已经开源,参见Android组件化方案开源。方案的解读文章是一个小的系列,这是系列的第二篇文章: 1、Android彻底组件化方案实践 2、Android彻底组件化demo发布 3、Android彻底组件化-代码和资源隔离 4、Android彻底组件化—UI跳转升级改造 5、Android彻底组件化—如何使用Arouter今年6月份开始,我开始负责对“得到app原创 2018-02-08 18:52:14 · 404 阅读 · 0 评论 -
Android Activity卡顿原因总结
内存泄漏导致内存占用较高,导致JVM频繁触发GC。解决办法:尽可能的减少生命周期长的对象引用生命周期短的对象。导致内存泄漏的原因有一下几个: 1.查询数据库后没有关闭游标cursor,各种资源文件没有close。 2.构造Adapter时,没有使用convertView重用 3.Bitmap对象不再使用时没有调用recycle释放内存 4.静态变量引用对象原创 2018-01-10 18:27:45 · 2764 阅读 · 0 评论 -
Android 线程优先级
1.Android线程的优先级和设置方法Android线程的优先级和设置方法。Android线程大方向上来说,可以分为UI线程和background线程,如果从UI线程启动,则该线程优先级默认为Default,归于defaultgroup,会平等的和UI线程争夺CPU资源。这一点尤其需要注意,在对UI性能要求高的场景下建议将线程设置为background线程:Process.setThreadPri原创 2018-01-10 14:33:12 · 4641 阅读 · 1 评论 -
Android中Service和Thread的区别
首先我们要弄明白Service和Thread分别是怎么定义的:Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。Service是Android的四大组件之一,被用来执行长时间的后台任务。默认情况下Service是运行在主线程中的。二者的使用上的区别1.在Android中,Thread只是一个用来执行后台任务的工原创 2018-01-26 17:32:56 · 282 阅读 · 0 评论 -
Android之Merge与ViewStub布局标签
1 MergeMerge作为A布局根标签,其他布局文件B通过include引用A时,Merge标签会被去掉,在include里存放的是merge的子标签,以此减少布局文件的层次。<merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/too原创 2018-01-10 11:42:50 · 246 阅读 · 0 评论 -
Android文件下载资料整理
[Android快速实现文件下载(只有4行代码)(https://www.jianshu.com/p/46fd1c253701)原创 2018-01-10 11:30:31 · 178 阅读 · 0 评论 -
音视频知识整理
本文介绍一些音频开发的基础常识,非常重要,因为不了解这些常识,很多Android API或者第三方库的参数,你都不知道该怎么配置。1. 音频开发的主要应用有哪些?音频播放器,录音机,语音电话,音视频监控应用,音视频直播应用,音频编辑/处理软件,蓝牙耳机/音箱,等等。2. 音频开发的具体内容有哪些?(1)音频采集/播放 (2)音频算法处理(去噪、静音检测、回声消除、音效处理、功放/增强、混音/分离,原创 2018-01-23 14:35:09 · 406 阅读 · 0 评论 -
Android上SQLite的性能优化问题
1.利用android提高的的insert,query,update,deleteAPI与execSql,rawQuery函数执行原生的插入,查询,更新,删除语句操作花费时间的对比结果 在相同的环境(adnroid4.0)和相同的机器下执行相同的动作,记录条数也一样的情况下的对比,多次验证的如下: (1)如果批量执行的记录数在1000条,则Android S原创 2018-01-30 17:59:22 · 899 阅读 · 0 评论 -
RoboSpice:android异步网络库
android的开源网络库 RoboSpice, RoboSpice是一个使你建立异步的长时间的运行任务异常轻松的一个网络库,在网络请求,缓存支持,和提供开箱即用的rest请求方面尤为强大,想在30秒内快速学习,请访问this infographics。主要特性:supports Android starting from SDK version 8 (Froyo / 2.2.x)支持 SDK版原创 2018-01-15 09:49:46 · 456 阅读 · 0 评论 -
Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递?
Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递?Bundle内部是由ArrayMap实现的,ArrayMap的内部实现是两个数组,一个int数组是存储对象数据对应下标,一个对象数组保存key和value,内部使用二分法对key进行排序,所以在添加、删除、查找数据的时候,都会使用二分法查找,只适合于小数据量操作,如果在数据量比较大的情况下,那么它的性能将退化。而H原创 2017-08-31 09:54:58 · 311 阅读 · 0 评论 -
谈谈你对Activity生命周期的理解
谈谈你对Activity生命周期的理解首先,为什么Activity要有生命周期呢?我觉得这是移动设备的硬件特性和交互特性决定的。首先从硬件上来说,移动设备不像是PC平台,它的CPU、内存、电量都受到了限制,特别是电量,你必须要保证开发出的App既能够满足用户需求,又不能很随意的去使用CPU进行高密度计算工作,所以如果用户临时不使用App的时候,要有一个机制来告诉我们开发的App:用户现在暂时不用了,原创 2017-08-31 09:04:10 · 648 阅读 · 0 评论 -
谈谈对Application类的理解
谈谈对Application类的理解其实说对什么的理解,就是考察你对这个东西会不会用,重点是有没有什么坑!首先,Application在一个Dalvik虚拟机里面只会存在一个实例,所以你不要傻傻的去弄什么单例模式,来静态获取Application了,你把Application构造函数设置成privete都不可能实现(我初学阶段的时候就这么傻傻的试过,想着如果可以通过Singleton.getInst原创 2017-08-30 09:26:40 · 422 阅读 · 0 评论 -
android 日历源码
android 源码 日历原创 2015-12-29 20:51:13 · 2216 阅读 · 0 评论 -
Android开发原创集
内容:1、手把手教你实现有道云笔记(一) http://www.apkbus.com/android-121101-1-1.html2、手把手教你实现有道云笔记(二) http://www.apkbus.com/android-121203-1-1.html3、手把手教你实现有道云笔记(三) http://www.apkbus.com/and转载 2013-06-09 12:08:29 · 946 阅读 · 1 评论 -
android webview
android是对移动式互联网的产物,必然离不开互联网,今天主要介绍下webview的用法,之前项目中也用到了这种技术。废话少说。1.建立工程文件WebViewDemo。2.在布局文件,只有一个webview控件。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"原创 2012-03-19 10:28:20 · 1431 阅读 · 2 评论 -
android 焦点事件
今天介绍下android中的焦点事件,之前在项目有用到过。这块不是很难,大家跟着过一遍吧,用到的时候直接把我下面这段代码拷贝过去就ok了。1.建一个工程,名为TestFocus。2.在布局文件中,主要有2个文本输入组件和一个文本显示组件。如下。3.接下来,就是今天的核心知识,大家请注意,焦点事件,OnFocusChangeListener。直接贴代码了。原创 2012-03-15 19:32:58 · 10420 阅读 · 0 评论 -
android 触摸事件
继续介绍android中触摸事件,这在android游戏开发中肯定会用到的。1.工程文件如下。TouchDemo2.布局文件。 android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"原创 2012-03-15 20:32:33 · 1176 阅读 · 0 评论 -
android 绘图、自定义组件
我们在开发当中很多时候都需要自定义组件,通过自定义组件,可以随心所欲定制酷炫的效果。下面将演示自定义绘图组件。我们要绘制一个红色的线条。1.建立工程文件,名为TouchDemo。2.布局文件 android:orientation="vertical" android:layout_width="fill_parent" and原创 2012-03-15 21:36:34 · 6798 阅读 · 1 评论 -
android Handle机制(二)
为了充分理解Handle机制,下面再为大家介绍一个例子。这是使用handler原理加载一个进度条的。可以用于软件登陆时的进度指南。1.首先建立一个工程文件,名为HandlerDemo2.2. 在布局文件中添加一个progressBar和一个Button,并为其设置属性和值 。 android:orientation="vertical" android:原创 2012-03-10 11:31:43 · 2869 阅读 · 0 评论 -
Android 一键分享功能
之前在做项目时遇到这么个需求,就是用户点击Menu或者一个按钮可以把文字分享到各大微博例如新浪微博、腾讯、人人、开心、校内等。现在我给大家演示一下。(一)、先建一个工程文件ShareDemo。(二)接下来是布局文件:只有一个textview和一个Button。很简单。(三)Mainfest.xml文件(四)核心代码packag原创 2012-03-06 23:01:57 · 9223 阅读 · 13 评论 -
android ViewFlipper屏幕切换
大家好,今天给我将介绍ViewFlipper屏幕切换,屏幕切换指的是在同一个Activity内屏幕间的切换,最常见的切换例如一个系统设置页面;一个个性化设置页面等。不说废话,直接看代码。1.建立工程文件,命名TestviewfillerActivity。 2.布局文件main.xml 如下:android:orientation="vertical" android原创 2012-03-07 22:20:00 · 4643 阅读 · 0 评论 -
android 文件读取(assets)
做android开发近半年了,东西越学越多,硬盘容量越来越小。很多东西找起来也不方便,为此,我打算从今天起把工作中学到的东西整理起来,写成日记。也希望与广大网友分享我的经验。一同进步。今天主要介绍文件读取。下面讲讲原理。如果大家不感兴趣,可以直接跳过。 assets文件夹资源的访问 assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManage原创 2012-03-06 22:06:59 · 5463 阅读 · 0 评论 -
Android DrawerLayout 高仿QQ5.2双向侧滑菜单
android 自定义控件 QQ侧滑效果 android 开发 DrawerLayout转载 2015-12-30 10:43:21 · 680 阅读 · 0 评论 -
android listview单击事件
今天我们来学习下listview 单击事件,这在开发中是经常用的组件之一。1.新建一个项目,名为ListViewDemo。2.布置布局文件main.xmlandroid:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent">原创 2012-03-13 23:02:28 · 49528 阅读 · 7 评论 -
Intellij IDEA Android Studios 修改包名
1.首先将AndroidManifest的Package Name重命名(快捷键shift+F6或者右键Refctor然后Rename)这时Package Name就改变了,但是Src的文件名还没变2.如果修改Src文件名,可以用同样的方法修改AndroidManifest中activity的命名。具体过程下面示范:修改前<manifest xmlns:android="h原创 2016-01-01 13:13:35 · 1973 阅读 · 1 评论