自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Veer Han

追求卓越,成功就会在不经意间追上你。

  • 博客(63)
  • 资源 (9)
  • 收藏
  • 关注

原创 Android优化_优化全时空间APK的大小

全时空间APK在未做大小优化之前的大小为52.9MB,经过优化后的大小为36.7MB。未优化前的APK结构如下:考虑到需要保证全时空间APP的稳定性,目前采用的优化步骤如下:一、开启minifyEnabled和shrinkResources经过此步骤,APK的大小减小为48.2MB,APK结构如下:对比第一张图可以很明显看出dex文件的总大小和res文件夹都减小了。二、移除未使用到...

2019-06-24 21:42:43 460

转载 Android wifi休眠策略

本文转自http://blog.csdn.net/wwwwap2008/article/details/51783138最近在项目里发现一段logcat: W/Settings: Setting wifi_sleep_policy has moved from android.provider.Settings.System to android.provider.Settings.Global,

2017-10-23 14:33:09 5279 1

原创 Android使用TextWatcher匹配email造成ANR的解决

最近QA给我报了一个bug,说是在编辑框快速输入邮箱的时候有时会导致页面无响应。 这个编辑框是专门输入邮箱的,所以监听了TextWatcher,每次字符的改变都会用正则判断是否是正确的邮箱,如果不是的话会显示错误提示。这里我没有考虑到用户快速的填写内容,会触发多次的afterTextChanged回调这个case,这样就会因为正则匹配次数太多造成ANR。下面我谈谈自己是怎样修复这个bug的:一

2017-09-09 12:51:11 1669 1

原创 Android实现EditText的富文本编辑

本文是我之前写的这边文章《Android图文混排-实现EditText图文混合插入上传》的升级版,除了在EditText实现了图片上传之外,还包含了视频上传、云盘文件上传、录音上传以及显示上传进度。目前应用于蜜蜂-集结号-任务模块。首先介绍一下该功能的实现效果: 实现思路实现思路与之前介绍的稍有不同,但是依然是使用SpannableString实现的。由于这里不仅仅支持图片上传,还支持音频、视

2017-08-01 22:07:12 4901 3

原创 Android 使用DrawerLayout快速实现侧滑菜单

一、概述 DrawerLayout是一个可以方便的实现Android侧滑菜单的组件,我最近开发的项目中也有一个侧滑菜单的功能,于是DrawerLayout就派上用场了。如果你从未使用过DrawerLayout,那么本篇博客将使用一个简单的案例带你迅速掌握DrawerLayout的用法。

2016-04-01 17:23:14 3843 1

原创 使用SwipeRefreshLayout和RecyclerView实现仿“简书”下拉刷新和上拉加载更多

一、概述 我们公司目前开发的所有Android APP都是遵循iOS风格设计的,这并不是一个好现象。我决定将Android 5.x控件引入最近开发的项目中,使用RecyclerView取代以往使用的ListView、GridView,使用SwipeRefreshLayout取代pull-to-refresh第三方库,打造更符合Material Design风格的APP。本篇博客介绍的就是如何使用Swi

2016-03-26 23:23:01 55654 36

原创 Android 通过ADB Wireless无线调试应用

使用数据线调试应用难免不方便,本篇博客介绍使用ADB Wireless工具,当手机和电脑处在同一网络下,实现无线调试应用。 ADB Wireless能够让手机用无线来取代USB连接,而使用ADB工具的前提是设备已经root。

2016-03-23 20:38:50 2954 2

原创 Andriod GridView不改变背景色实现网格线效果

项目中需要给GridView添加一个网格线,而且GridView的背景是一张完整的图片,如图所示: 常用的方法是:改变GridView的背景色设置GridView水平或竖直方向的间隔设置item的布局文件背景色上述的方法直接改变了GridView的背景色,显然是不符合项目要求的,我在网上搜索了一下没有找到解决方案,这里给出自己的解决方案:给item的布局文件添加一个边框背景即可:<shap

2016-03-22 13:56:20 3857 11

转载 Android pm命令详解

在看相关PackageManager代码时,无意中发现Android 下提供一个pm命令,通常放在/system/bin/下。这个命令与Package有关,且非常实用。所以研究之。0. Usage:usage: pm [list|path|install|uninstall] pm list packages [-f] pm list permission-group

2016-03-17 22:14:15 2981

原创 Android Gson使用入门及GsonFormat插件的使用

Gson 是 Google 官方提供的用来在 Java 对象和 JSON 之间进行互相转换的Java类库。 我之前在使用Eclipse开发Android的时候,并没有经常使用Gson,而是使用原生的JSONObject解析,最近转用Android Studio,配合该IDE里面强大的插件,使用Gson很大程度地提高了开发效率。本篇博客将介绍Gson的基本使用方法,配合实际案例体会Gson带来的便捷

2016-03-14 15:20:29 5292 1

原创 Android搜索功能的案例,本地保存搜索历史记录

同事负责开发的APP有一个搜索功能,并且需要显示搜索的历史记录,我闲暇之余帮她开发了这个功能,现把该页面抽取成一个demo分享给大家。实现效果如图所示: 本案例实现起来很简单,所以可以直接拿来嵌入项目中使用,涉及到的知识点: - 数据库的增删改查操作 - ListView和ScrollView的嵌套冲突解决 - 监听软键盘回车按钮设置为搜索按钮 - 使用TextWatcher( )实时筛选

2016-02-18 20:11:47 22648 18

原创 Android自定义dialog中的EditText无法弹出键盘的解决

最近我独立开发的项目《全医会》已经在内测当中了,很快将会上架到各大应用市场。之前开发的几个项目都因为一些原因没有上架还是比较遗憾的。所以,最近我心情格外的好。 今天在做一个新项目,专为律师和客户开发的APP,其中有一个自定义对话框的需求。这个知识点其实很简单,就是下图这个效果: 可是当我悠闲的写完以后才发现,自定义对话框里面嵌套的EditText根本无法获取焦点,无法弹出软键盘,郁闷,以前开

2016-01-13 22:46:19 14632 2

原创 Android图文混排-实现EditText图文混合插入上传

前段时间做了一个Android会议管理系统,项目需求涉及到EditText的图文混排,如图: 在上图的”会议详情”中,需要支持文本和图片的混合插入,下图演示输入的示例: 当会议创建完成以后,保存数据到服务器,然后查看刚刚创建好的会议,如图: 一、明确需求 首先,点击”会议详情”文本框中,正常输入文本,然后点击左下角的图片图标,进入系统的相册用来选择一张图片并插入到文本框中,你还可以将光标

2016-01-01 17:33:04 11963 5

原创 Mac安装Genymotion出现unable to load virtualbox engine的解决

Mac上安装genymotion后,运行该程序弹出该错误: 原因是我的Mac上没有安装VirtualBox,通过以下链接下载安装VirtualBox后即可正常运行该软件。 VirtualBox for Mac最新版下载地址 注意:VirtualBox版本过旧也有可能报错。 下面Genymotion模拟器可以正常运行了,enjoy it.

2015-12-27 22:47:50 7015 3

转载 使用Android Accessibility实现免Root自动批量安装功能

对于国内Android设备,应用的自动批量安装/更新一直是一个痛点,在之前,第三方应用商店通常要求设备Root,然后调用系统的PackageManagerService命令行来实现后台安装。最近,豌豆荚利用Android Accessibility(辅助功能)在业内率先实现了免Root自动批量安装功能。这个功能实现的原理是,在后台批量下载应用后,调用系统的PackageInstaller,

2015-12-08 14:01:03 2857

原创 Android签名打包出现Export aborted because fatal lint errors were found的解决

前些天重现安装了Eclipse,在签名打包APK时出现了如下错误: Export aborted because fatal lint errors were found. These are listed in the Lint View. Either fix these before running Export again,or turn off”Run full error check

2015-09-28 11:11:30 1449

原创 Android 使用极光推送自定义消息打造个性的消息推送效果

极光推送,是一个面向普通开发者开放的,免费的第三方消息推送服务。本篇博客将结合案例介绍极光推送自定义消息的使用方法,利用自定义消息实现项目中特定的消息推送需求。

2015-09-03 16:41:36 12042 6

原创 Android 微信支付快速集成案例及有效解决返回值-1

商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。本文讲解Android微信支付快速集成案例及有效解决返回值-1。下面我们参考微信官方APP端开发步骤说明,一步一步集成微信支付功能……

2015-09-01 15:15:29 15204 7

原创 Android 支付宝快捷支付集成及ALI64错误的有效解决

支付宝开放平台采用了RSA安全签名机制,开发者可以通过支付宝公钥验证消息来源,同时可使用自己的私钥对信息进行加密。RSA算法及数字签名机制是支付宝开放平台与开发者网关安全通信的基础,若开发者不熟悉RSA及数字签名,请先查阅相关资料。 1、RSA私钥及公钥生成 官方提供的开发文档存在一些误导,这里简要概括为这几句话: RSA密钥生成命令 生成RSA私钥 openssl>genrsa -out

2015-08-23 18:46:17 16560

原创 Eclipse无法导入现有项目的解决方法

最近准备复习之前写的Android代码时,发现很多项目都导入不进来。 百思不得其解,Eclipse删了重新下也没有解决,真浪费了我半天的时间。 后来我对每个不能导入的项目检查后发现,所有不能导入的项目的AndroidManifest.xml文件都是空的! 这也太奇怪了! 所以如果想让这些项目再运行起来的话,只能手动的修复AndroidManifest.xml文件咯。

2015-07-10 22:05:37 5818 1

原创 在Android程序中使用已有的SQLite数据库

在之前做的联系人项目中,应用安装完以后需要显示数据库中预存的数据,这时需要导入已有的数据库contact.db。这也是一个面试题,那么如何实现呢? 首先在res中新建raw文件夹,res\raw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。那么如何把raw文件下面的数据库文件contact.db导入到Android程序中的database目录下呢? 下面提供一个导入现有数据库的工具类:

2015-06-27 23:25:53 3082

原创 AsyncTask总结

AsyncTask是android提供的轻量级的异步类,是针对子线程中更新UI,封装简化异步操作的封装好的组件。Android的耗时操作如:网络操作、读取文件等如果放在主线程中会出现ANR(Application Not Responding)错误,使用AsyncTask可以保证Android的单线程模型,也避免了ANR。构建AsyncTask子类的参数AsyncTask<Params,Progre

2015-06-21 21:04:52 1467

原创 ViewPager实现应用的欢迎界面

在前一篇博客中介绍了Animation实现应用的欢迎界面,本篇博客介绍ViewPager实现应用的欢迎引导界面,并且实现继续向左滑动最后一张图片进入新的Activity的效果。

2015-06-20 22:51:19 1899

原创 Animation Frame动画实现应用的欢迎界面

Android欢迎界面通常的实现可以通过Animation的Frame动画实现,ViewPager可以实现滑动效果的欢迎界面。本案例介绍Animation实现图示欢迎动画效果。

2015-06-16 23:12:43 1974

原创 fragment与activity及两个fragment之间的跳转实现

在近期的练手项目中,我们使用到了Android Fragment技术。在应用的交互中,我可能需要实现:从当前的fragment跳转到另一个fragment从当前的fragment跳转到一个activity中从当前的activity跳转到一个fragment中网上提供的思路较多,这里总结了一套自己的方法。

2015-06-14 11:34:57 37528 5

原创 使用ContentProvider共享数据

当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读写数据;采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据。而使用ContentProvider共享数据的好处

2015-06-09 23:13:40 1193

原创 下拉列表框Spinner-采用自定义布局文件作为Spinner样式

效果图,下拉列表显示的是name。 1.在activity_main.xml中添加Spinner控件 2.在layout文件夹中新建item_spinner.xml布局文件。 3.在MainActivity中添加一个内部类class User{} 4.完成MainActivity代码的编写 如果User的toString方法改为return phone,其他代码不变,

2015-06-08 23:17:34 3133

原创 下拉列表框Spinner-采用javabean作为Adapter元素

很多时候显示在下拉列表框的值并不是希望得到的值,如果要做一个联系人下拉列表框,列表框列出的是联系人的姓名,因为姓名有可能相同,所以我们希望得到的值应该为该联系人的id,要实现这种需求我们需要自定义Adapter,当然自定义Adapter需要我们编写一小段代码,如果我们不想编写Adapter,又能实现我们的需求,那是最好不过的了。通过观察ArrayAdapter中getView(int positio

2015-06-08 23:13:38 1454

原创 下拉列表框Spinner的使用

效果图: activity_main.xml <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="tru

2015-06-08 23:10:29 1137

原创 多选框CheckBox的使用

每个多选框都是独立的,可以通过迭代所有多选框,然后根据其状态是否被选中再获取其值。 activity_main.xml MainActivity.java

2015-06-08 23:01:42 1660

原创 单选框RadioButton的使用

要完成单选框(RadioButton)显示,我们需要使用到RadioGroup和RadioButton(单选框),RadioGroup用于对单选框进行分组,相同组内的单选框只有一个单选框能被选中。 activity_main.xml MainActivity.java

2015-06-08 22:59:37 2042

原创 Dialog-普通对话框-列表对话框

final String items[] = { “Java”, “Android”, “PHP”, “iOS”, “.NET”, “Sql” }; 1.普通对话框 2.列表对话框 3.单选列表对话框 4.复选列表对话框

2015-06-08 22:56:52 1460

原创 Activity的四种加载模式

配置Activity时可指定android:launchMode属性,该属性用于配置该Activity的加载模式,其属性值有: standard 标准模式,默认加载模式 singleTop Task顶单例模式 singleTask Task内单例模式 singleInstance 全局单例模式 android采用Task来管理多个Activity,当我们启动一个应用时,android就会为

2015-06-08 22:47:27 1216

原创 Notification基本通知的两种写法

private void newNotify() { // 1.创建通知的Builder对象 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder( this); //2.设置参数 对象链式操作 mBuilder.set

2015-06-08 22:25:38 1386

原创 activity的生命周期

1.完整生命周期 第一次启动activity 点击 2.前台生命周期 第一次启动activity 点击按钮弹出对话框后 弹出对话框关闭后 多次循环弹出和关闭对话框 点击 3.可视化生命周期 第一次启动activity 点击 此时回到主界面 再次点击进入该应用 点击

2015-05-27 22:45:25 893

原创 得到新打开Activity 关闭后返回的数据

MainActivity.javapackage com.example.actdemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Toast;public class Mai

2015-05-27 22:33:05 1140

原创 sqlitedabase提供的CRUD方法

1.MySQLiteOpenHelper.javapublic class MySQLiteOpenHelper extends SQLiteOpenHelper { private static String name = "hytc.db"; private static int version = 1; public MySQLiteOpenHelper(Context co

2015-05-27 22:22:09 1237

原创 Android-PullToRefresh开源项目的使用

本案例基于上一个案例 PullToRefresh开源项目导入eclipse的方法 1.将activity_main.xml中的ListView控件换成开源项目中的PullToRefreshListView控件<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="htt

2015-05-27 12:34:56 1235

原创 ListView显示数据库的数据-采用自定义布局-向上滑动可以加载更多数据

本案例使用自定义布局实现在ListView中显示数据库的数据(用户名、手机号)的功能,ListView向上滑动可以加载更多数据。 1.user_item.xml <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

2015-05-26 23:28:58 3005

原创 ListView显示数据库的数据-SimpleCursorAdapter的使用

1.新建dbhytcs项目 2.HytcSQLiteOpenHelper.javapackage com.example.dbhytcs.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.Cu

2015-05-26 23:23:27 1721

使用SwipeRefreshLayout和RecyclerView实现仿“简书”下拉刷新和上拉加载更多

使用SwipeRefreshLayout和RecyclerView实现仿“简书”下拉刷新和上拉加载更多 对应博客地址:http://blog.csdn.net/leoleohan/article/details/50989549 对应Github地址:https://github.com/leoleohan/RefreshDemo

2016-03-26

一个案例解析DiskLruCache的基本用法

一个案例解析DiskLruCache的基本用法 对应博客地址http://blog.csdn.net/leoleohan/article/details/50847209

2016-03-18

Gson使用入门

一个例子快速掌握Gson的基本使用方法 an example showing how to use Gson to accelerate development 对应的博客地址:http://blog.csdn.net/leoleohan/article/details/50886707

2016-03-18

网络数据缓存的一种快速实现方式

网络数据缓存的一种快速实现方式 博客地址:http://blog.csdn.net/leoleohan/article/details/50896351

2016-03-18

Android canvas.save()和canvas.restore()的理解

讲解使用canvas.save()和canvas.restore()的demo

2016-03-08

Android搜索功能的案例,本地保存搜索历史记录。

本案例实现起来很简单,所以可以直接拿来嵌入项目中使用,涉及到的知识点: - 数据库的增删改查操作 - ListView和ScrollView的嵌套冲突解决 - 监听软键盘回车按钮设置为搜索按钮 - 使用TextWatcher( )实时筛选 - 已搜索的关键字再次搜索不重复添加到数据库 - 刚进入页面设置软键盘不因为EditText而自动弹出

2016-02-18

openssl生成RSA私钥公钥

openssl生成RSA私钥公钥,该压缩包包含详细的使用说明及DEMO

2015-08-23

activity的四种加载模式分析

通过案例深度解析activity的四种加载模式,深度分析Task栈。

2015-06-08

Android-PullToRefresh开源项目的使用方法及案例

内含三篇文档,详细介绍了ListView和GridView利用pull-to-rerfesh 实现下拉刷新和上拉加载更多的使用。

2015-05-27

空空如也

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

TA关注的人

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