自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WILLIAM-HUAN 个人技术博客

Just The Way You Are

  • 博客(90)
  • 资源 (6)
  • 收藏
  • 关注

原创 Android7.0新特性,及Android N适配

新特性部分Android 7.0 Nougat 提供新功能以提升性能、生产效率和安全性,主要新增了以下的新特性和优化:一、新的NotificationAndroid N 增加了许多新的notifications API,进行了重新的设计,引入了新的风格。模板更新: 开发者将能够充分利用新模板,只需进行少量的代码调整。消息样式自定义: 新增自定义样式、消息回复、消息分组等更加灵活。

2017-03-01 17:11:30 9477 1

原创 Android 静默安装(自动安装)和静默卸载的实现方法

目前很多应用市场,做了静默安装的功能,静默安装就是无声无息的在后台安装apk,没有任何界面提示。智能安装就是有安装界面,但全部是自动的,不需要用户去点击。首先强调两点:静默安装必须要root权限 智能安装必须要用户手动开启无障碍服务。

2017-02-22 16:35:20 19620 6

原创 判断Listview滑动到了最底部(且最后一个item完整显示)

记录下代码:listView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public

2016-09-13 14:57:34 8762 1

原创 Android判断应用在前台还是后台运行(判断应用前后台切换)

我们的应用要获取后台运行的app的包名,主要是getRunningTasks()方法的调用,经过测试在android 2.2 到 4.4的版本都运行的很好,但是在Android 5.0 Lollipop. 中获得不到,无法得到真实的后台运行app名称,在Android 5.0 Lollipop中获得的名称是 'Launcher3',我使用过的模拟器是  Genymotion Emulato

2015-06-03 16:53:46 14839 11

原创 Android studio中正确引入so文件的方法

相信很多朋友在使用Android studio开发中,遇到过如何引入第三方so文件的问题,然而第三方官方仅仅给出了ADT环境下的集成方式。Android studio中默认使用的是gradle编译方式,与ADT编辑方式不一样,那么so文件应当如何引入呢?其实很简单。这里以集成JPUSH为例,看一下so文件如何引入到编译环境,最终到JNI直接可以调用该so文件。首先,在我

2015-03-23 18:23:42 173362 44

原创 伪锁

伪锁-微信隐私锁,伪装趣味解锁,隐形保护微信,优雅解决个人隐私保护问题

2015-02-05 10:05:05 4617

原创 伪锁-微信隐私锁

伪锁,帮助亿万微信用户解决隐私安全问题,优秀的界面设计,卓越的用户体验,有趣的微信伪装锁,谁动谁知道,看了只有好奇和纳闷,不仅仅是保护隐私哦,最重要的是,我们做到保护过程更自然,用伪装的方式让对方不觉的是密码锁,还避免了尴尬呢,来动动试试?保护微信隐私,我最行!应用场景:" 你干嘛看我微信内容,被偷翻微信了?" 亲朋好友的小朋友无意把你微信内容转发?" 同学聚会总有人拿你手机窥微信隐私?以上这些问题,伪锁会帮你漂亮的解决!

2015-02-04 18:04:39 5256 2

原创 关于在TextView中设置DrawableLeft不显示的问题

xml中的textView:<TextView android:id="@+id/bookTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android

2014-12-03 17:39:36 9879 1

原创 Android省市区三级联动滚轮选择(真实项目中提取出来的组件)

最近项目要做一个,类似淘宝手机客户端的,选择收货地址的三级联动滚动选择组件,下面是它的大致界面截图:在IOS中有个叫UIPickerView的选择器,并且在dataSource中定义了UIPickerView的数据源和定制内容,所以用只要熟悉它的基本用法,要实现这么个三级联动滑动选择是挺简单的。 言归正传,今天讨论的是在Android里面如何来实现这么个效果,那么如何实现呢

2014-11-27 18:22:08 120469 139

原创 ViewGroup源码分析

本文是对ViewGroup的源码分析,先来看看代码结构

2014-11-12 18:06:20 9108

原创 招财进宝手势锁,Android手势密码的实现

这几个月都是在做招财进宝项目,一个理财下载地址:http://8.shengpay.com/。招财进宝手势锁,Android手势密码的实现。

2014-11-03 17:01:18 23635 42

原创 setCompoundDrawables与setCompoundDrawablesWithIntrinsicBounds的区别

更换radiobutton中的图片在xml中很好设置,但对于初学者如何在代码中设置还是不容易找的。没法子,通过看原版api找到两个方法,setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds。下面交给大家方法。第一个方法:setCompoundDrawablesWithIntrinsicBounds(Drawable

2014-04-24 16:30:52 63026 10

原创 Android程序的签名保护及绕过方法

随着Android 市场的扩大,各类盗版、破解、打包党纷纷涌现,其使用的手法无非是apk _> smali ->修改代码 ->重打包签名,为对抗此类技术,广大程序员挖掘了Android平台特有的保护技术:签名校验  1、JAVA代码本地签名校验Android要求安装到手机上的APK文件必须有签名,而理论上开发者的签名他人是无法得到的(证书保护是另外一回事),所以

2014-03-29 15:55:49 22833 5

原创 Android内存优化

一、 Android的内存机制    Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似。程序员通过new为对象分配内存,所有对象在java堆内分配空间;然而对象的释放是由垃圾回收器来完成的。C/C++中的内存机制是“谁污染,谁治理”,java的就比较人性化了,给我们请了一个专门的清洁工(GC)。    那么GC怎么能够确认某一个对象是不是

2014-02-27 19:34:49 4121

原创 APK安装过程及原理详解

PackageInstaller 原理简述 应用安装是智能机的主要特点,即用户可以把各种应用(如游戏等)安装到手机上,并可以对其进行卸载等管理操作。APK是Android Package的缩写,即Android安装包。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。 Androi

2014-02-21 14:00:51 3610 2

原创 android获取APK签名信息及MD5指纹

1.获取APK的签名信息private String showUninstallAPKSignatures(String apkPath) { String PATH_PackageParser = "android.content.pm.PackageParser"; try { // apk包的文件路径

2014-01-17 09:53:27 72130 13

原创 smali文件语法

Dalvik opcodes表中的VX值表示的Dalvik寄存器。根据不同的指令,16,256或64K寄存器可以访问。对long和double值的操作使用两个寄存器,例如在V0的注册解决占地V0和V1的寄存器双重价值。布尔值存储真正的为1和0为假。被翻译成整数运算的布尔操作。HIG-endian格式中所有的例子,如0F00 0A00 0F,00,0A,00顺序编码。

2014-01-03 19:26:58 3942

原创 listView多个viewType,listView多个类型的item

最近在项目中需要对listview中的数据进行分组,我构思的基本原理就是,在适配器Adapter的getView()方法中,根据当前item类型,分别加载不同的布局,这样是很容易实现的,想必大家都很清楚这个小东西。但是问题是,这样的代码写下来listview在数据很多时,上下滑动会很卡,于是乎就想到了用viewHolder来进行缓存, 难度就在对不同的item进行不同的缓存。下面是我实现的效果

2013-11-25 22:31:44 6584 7

原创 对应多个viewType的listView,BaseAdapter的ArrayIndexOutOfBoundsException

最近写一个listView中多个listItem布局时,convertView缓存及使用,类似微信的聊天界面的listView,报了一个异常:11-25 15:51:49.076: E/InputEventReceiver(22971): Exception dispatching input event.11-25 15:51:49.128: E/AndroidRuntime(2

2013-11-25 16:14:02 9963 26

原创 ListView:长按弹出上下文菜单(ContextMenu)

有两种方法实现长按弹出上下文菜单:方法一:1)注册上下文菜单/** * 上下文菜单演示Demo * * @author CodingMyWorld 2011-8-27 下午03:22:39 */publicclass SampleContextMenuActivity extends ListActivity { privatestaticfin

2013-11-04 14:45:20 16066 2

原创 Android源代码分析(三) MediaScanner源码分析(下)

MediaScanner位置在frameworks\base\media\下,包括jni和java文件,在Android的SDK里面是看不到这个类的,因为被google隐藏了。通过Android的源码我们可以看到MediaScanner的类注解多了一个@hide的标注。所以对于一般应用开发者,此文意义不是很大,大家可以绕道。在前两篇文章中,最后我们都了解了Android的媒体文件的扫描是在Me

2013-10-04 19:25:22 4286 1

原创 Android源代码分析(二) MediaScanner源码分析(上)

本人负责公司手机文件管理器模块的开发,经常跟MediaScanner打交道,本篇跟大家一起讨论一下MediaScanner的整体结构、MediaScanner的扫描流程、如何使用MediaScanner进行自定义扫描。 MediaScanner是Android系统Media的基础,系统启动之初,就扫描出Media文件供后续使用,有新媒体加入或者删除掉媒体文件,也需要更新相应的媒体库。Andro

2013-10-04 18:10:14 5659

原创 Android源代码分析(一) 目录结构分析

Google提供的Android包含了原始Android的目标机代码,主机编译工具、仿真环境,下载的代码包经过解压后(这里是Android2.2的源码包),源代码的第一层目录结构如下:|-- Makefile|-- bionic               (bionic C库)|-- bootable            (启动引导相关代码)|-- build

2013-10-04 16:27:44 17033

原创 Android out of memory 彻底解决Android因加载多个大图引起的OutOfMemoryError,内存溢出的问题

最近因为项目里需求是选择或者拍摄多张照片后,提供滑动预览和上传,很多照片是好几MB一张,因为目前的Android系统对运行的程序都有一定的内存限制,一般是16MB或24MB(视平台而定),不做处理直接加载的话必然会报OOM (Out Of Memmory)。网上有很多解决android加载bitmap内存溢出的方法,我总结了一个通用的方法,下面是我从的开发案例抽取出来的代码:我在项目中

2013-09-11 01:08:23 39749 35

原创 sqlite字段类型

改了点东西,因为想着要把项目优化,但是每条数据如果都存到单一数据库中,会造成以后的数据越来越大,怎么办?于是我想到了,可以考虑将单类数据存储到sqlite中,既可以备份,又可以用作缓存和其他作用。所以就想到了sqlite的一些特性,当然,花了大量的时间测试代码,即,一份代码自动生成不同的数据库,可以自由控制读取哪个库哪个表。基于YII而已。写的有点挫,但现在这样的好处是可以不改动原有任何一

2013-09-06 10:31:12 10367 1

原创 检测Activity是否在当前Task的栈顶

Android系统内部状态信息的相关api:得到ActivityManager :ActivityManager activityManager = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE)这个位查到底是什么信息:   ConfigurationInfo configur

2013-08-17 15:10:38 3312

翻译 Keeping Your App Responsive

It's possible to write code that wins every performance test in the world, but still feels sluggish, hang or freeze for significant periods, or take too long to process input. The worst thing that can

2013-06-23 20:41:13 1183

原创 关于android使用dexjar反编译后的classes.dex.dex2jar.jar为什么jd gui打不开?

运行 dex2jar.bat classes.dex ,生成classes.dex.dex2jar.jar然后运行JD-GUI工具,打开jar文件,看不到源代码,窗口是空白的……怎么破??在网上搜了一些办法,有些说换个反编译工具,或者其他的其实解决这个问题很简单,问题就是因为生成jar的时候就失败了, dex2jar.bat classes.dex 这一步没有成功,那是因为我的de

2013-06-06 16:26:08 8723 3

原创 Handler Looper Message源码研究

概述 Looper是消费者,Handler是生产者(同时Looper消费后,也会通知Handler),MessageQueue是消息队列,队列的实现方式是链表,Message是链表的一个节点。 我们的程序基本上之和Handler打交道。线程Thread的线程变量ThreadLocal中,存放着这个线程的Looper; Looper在初始化时,会新建一个消息队列Message

2013-06-04 15:28:49 2245 1

原创 仿iPhone的AssistiveTouch 悬浮辅助球工具

用过iphone的朋友都知道,iPhone有个圆球辅助工具,它漂浮在你的手机屏幕(在任何APP之上),你可以将它移动到任何地方,它叫做AssistiveTouch,本篇模拟该软件实现一个小案例,主要是实现它的界面,首先来看看实现的效果吧:拖动小圆球:点击弹出pop窗口:为了让辅助工具一直悬浮在窗口之上,这里使用的机制是通过在程序初始化是,

2013-05-12 23:16:40 11834 14

原创 Android MMS 数据存取数据表

MMS模块总共包含17张表:addr、android_metadata、attachments、canonical_addresses、drm、part、pdu、pending_msgs、rate、raw、sms、sr_pending、threads、words、words_content、words_segdir、words_segments。其中,pending_msgs表用于存储待发送或

2013-05-09 10:56:34 2925

原创 Android providers 解析之telephony

Android providers的源代码结构如下:android-2.2-froyo/com/android/providers:[applications][calendar][contacts][downloads][drm][media][settings][telephony][userdictionary]本篇来解析一下telephony这个provider中的代码,首

2013-05-08 21:21:50 10716 1

原创 ContentProvider内容提供者(二)

本篇学习一下监听ContentProvider的数据变化:如果ContentProvider的访问者需要知道ContentProvider中的数据发生变化,可以在ContentProvider发生数据变化时调用getContentResolver().notifyChange(uri,null)来通知注册在此URI上的访问者,如果ContentProvider的访问者需要得到数据变化通知,必须

2013-05-07 22:24:14 2390

原创 仿ZAKER的windows phone风格主界面

使用了ZAKER到最新版本,其主界面采用windows phone的风格,感觉还蛮好看的,挺喜欢的,就模仿写了一下,实现到界面截图如下:第一版面:第二版面:在实现了它到九宫格菜单,还实现了背景图片到缓慢移动效果。首先来分析一下它到整个布局架构,我们肯定知道它必须是采用到FrameLayout布局,最下面到是背景图片视图,上面的是线性布局来装下左右两个面板,左边到是一

2013-05-06 20:51:22 9380 15

原创 ContentProvider内容提供者(一)

作为四大组件之一的ContentProvider,其作用是对外共享数据,相对文件和数据库存储来说,它的好处是统一了数据访问方式。先来看看基本的介绍:Class OverviewContent providers are one of the primary building blocks of Android applications, providing cont

2013-05-05 21:55:52 2770

原创 android 获取屏幕高度和宽度 的方法

我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸    下面的代码即可获取屏幕的尺寸。    在一个Activity的onCreate方法中,写入如下代码:        DisplayMetrics metric = new DisplayMetrics();        getWindowM

2013-04-27 01:41:47 2690

原创 Android 接收和发送短信

1.android发送短信                android API 中提供了smsManager类处理短信。其中的sendTextMessage(num, null, content, pend, null)函数就是发送        短信的方法。第一个参数为目标者手机号、第二个参数为短信中心地址 null为默认地址、        第三个参数短信的文本内容、第四个参

2013-04-26 23:03:19 2126

原创 Android MMS 源码流程

概述MMS的收发操作借助于手机的短信机制,实际收发过程需要网络的APN支持,使用特定的APN接入点实现MMS数据的真实发送和接收;源码流程1) Telephpony.java getOrCreateThreadId()函数:目录:\frameworks\base\core\java\android\provider\说明:这个函数根据接收者列表和未保存的消息返回一个线程ID,如

2013-04-26 19:03:50 2724

原创 Android之UI学习篇十三:Gallery控件学习

Gallery组件主要用于横向显示图像列表,不过按常规做法。Gallery组件只能有限地显示指定的图像。也就是说,如果为Gallery组件指定了9张图像,那么当Gallery组件显示到第9张时,就不会再继续显示了。这虽然在大多数时候没有什么关系,但在某些情况下,我们希望图像显示到最后一张时再重第1张开始显示,也就是循环显示。要实现这种风格的Gallery组件,就需要对Gallery的Adapter

2013-03-10 11:25:43 3519

原创 如何使用代码动态的获取和设置ImageView的宽度和高度?

国内某金融企业的一道面试题:如何在代码中获得一个ImageVIew的高度和宽度?相信很大一部分人,会直接想到用imageview.getWidth() 和 imageview.getHeight() 来获得,其实不然。我们可以自己写个程序来跑一下,当我们放置一张图片在imageView中,并且设置了它的高度和宽度,我们不妨在日志控制台输出看一下,Log.i("MainActivity"

2013-03-06 21:45:52 54762 13

Android省市区三级联动滚轮选择——Cascade_Master

从真实项目中提取出来的,Android省市区三级联动滚轮选择组件,基于开源组件Android-wheel来实现,效果非常不错,可以直接拿去用。

2014-11-27

Android手势密码实现(招财进宝项目)

Android招财进宝手势密码锁,是本人从项目中分享出来的模块代码,可以直接运行使用,有什么问题或者建议,可以直接在博客留言或者Email给我([email protected]),我会尽快回复你.

2014-11-03

Android招财进宝手势密码锁-源码下载

Android招财进宝手势密码锁,是本人从项目中分享出来的模块代码,可以直接运行使用,有什么问题或者建议,可以直接在博客留言或者Email给我([email protected]),我会尽快回复你.

2014-11-03

使用TabHost仿微博客户端界面

使用TabHost仿微博客户端界面,实现底部多个菜单,点击不同菜单显示不同的content,类似新浪微博主界面。

2013-05-12

仿ZAKER界面,背景滚动、Win phone菜单、拖动滚屏

仿ZAKER的最新版界面,实现了背景滚动、Win phone菜单、拖动滚屏等效果,本资源是完整工程,可以直接拿去运行。

2013-05-07

Android之百度地图开发实例源代码_by_wulianghuan

根据百度地图的API实现地图的建筑物显示、公交线路查询、附近餐馆搜索等相关实现,本代码具有代表性。

2013-02-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除