Android
Veer Han
这个作者很懒,什么都没留下…
展开
-
Android优化_优化全时空间APK的大小
全时空间APK在未做大小优化之前的大小为52.9MB,经过优化后的大小为36.7MB。未优化前的APK结构如下:考虑到需要保证全时空间APP的稳定性,目前采用的优化步骤如下:一、开启minifyEnabled和shrinkResources经过此步骤,APK的大小减小为48.2MB,APK结构如下:对比第一张图可以很明显看出dex文件的总大小和res文件夹都减小了。二、移除未使用到...原创 2019-06-24 21:42:43 · 500 阅读 · 0 评论 -
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 · 3016 阅读 · 0 评论 -
fragment与activity及两个fragment之间的跳转实现
在近期的练手项目中,我们使用到了Android Fragment技术。在应用的交互中,我可能需要实现:从当前的fragment跳转到另一个fragment从当前的fragment跳转到一个activity中从当前的activity跳转到一个fragment中网上提供的思路较多,这里总结了一套自己的方法。原创 2015-06-14 11:34:57 · 37629 阅读 · 5 评论 -
Android自定义dialog中的EditText无法弹出键盘的解决
最近我独立开发的项目《全医会》已经在内测当中了,很快将会上架到各大应用市场。之前开发的几个项目都因为一些原因没有上架还是比较遗憾的。所以,最近我心情格外的好。 今天在做一个新项目,专为律师和客户开发的APP,其中有一个自定义对话框的需求。这个知识点其实很简单,就是下图这个效果: 可是当我悠闲的写完以后才发现,自定义对话框里面嵌套的EditText根本无法获取焦点,无法弹出软键盘,郁闷,以前开原创 2016-01-13 22:46:19 · 14683 阅读 · 2 评论 -
使用Android Accessibility实现免Root自动批量安装功能
对于国内Android设备,应用的自动批量安装/更新一直是一个痛点,在之前,第三方应用商店通常要求设备Root,然后调用系统的PackageManagerService命令行来实现后台安装。最近,豌豆荚利用Android Accessibility(辅助功能)在业内率先实现了免Root自动批量安装功能。这个功能实现的原理是,在后台批量下载应用后,调用系统的PackageInstaller,转载 2015-12-08 14:01:03 · 2887 阅读 · 0 评论 -
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 · 7048 阅读 · 3 评论 -
AsyncTask总结
AsyncTask是android提供的轻量级的异步类,是针对子线程中更新UI,封装简化异步操作的封装好的组件。Android的耗时操作如:网络操作、读取文件等如果放在主线程中会出现ANR(Application Not Responding)错误,使用AsyncTask可以保证Android的单线程模型,也避免了ANR。构建AsyncTask子类的参数AsyncTask<Params,Progre原创 2015-06-21 21:04:52 · 1489 阅读 · 0 评论 -
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 · 1482 阅读 · 0 评论 -
activity的生命周期
1.完整生命周期 第一次启动activity 点击 2.前台生命周期 第一次启动activity 点击按钮弹出对话框后 弹出对话框关闭后 多次循环弹出和关闭对话框 点击 3.可视化生命周期 第一次启动activity 点击 此时回到主界面 再次点击进入该应用 点击原创 2015-05-27 22:45:25 · 902 阅读 · 0 评论 -
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 · 3066 阅读 · 0 评论 -
Android 使用DrawerLayout快速实现侧滑菜单
一、概述 DrawerLayout是一个可以方便的实现Android侧滑菜单的组件,我最近开发的项目中也有一个侧滑菜单的功能,于是DrawerLayout就派上用场了。如果你从未使用过DrawerLayout,那么本篇博客将使用一个简单的案例带你迅速掌握DrawerLayout的用法。原创 2016-04-01 17:23:14 · 3886 阅读 · 1 评论 -
Android图文混排-实现EditText图文混合插入上传
前段时间做了一个Android会议管理系统,项目需求涉及到EditText的图文混排,如图: 在上图的”会议详情”中,需要支持文本和图片的混合插入,下图演示输入的示例: 当会议创建完成以后,保存数据到服务器,然后查看刚刚创建好的会议,如图: 一、明确需求 首先,点击”会议详情”文本框中,正常输入文本,然后点击左下角的图片图标,进入系统的相册用来选择一张图片并插入到文本框中,你还可以将光标原创 2016-01-01 17:33:04 · 12051 阅读 · 5 评论 -
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 · 5460 阅读 · 1 评论 -
Android使用TextWatcher匹配email造成ANR的解决
最近QA给我报了一个bug,说是在编辑框快速输入邮箱的时候有时会导致页面无响应。 这个编辑框是专门输入邮箱的,所以监听了TextWatcher,每次字符的改变都会用正则判断是否是正确的邮箱,如果不是的话会显示错误提示。这里我没有考虑到用户快速的填写内容,会触发多次的afterTextChanged回调这个case,这样就会因为正则匹配次数太多造成ANR。下面我谈谈自己是怎样修复这个bug的:一原创 2017-09-09 12:51:11 · 1732 阅读 · 1 评论 -
Android实现EditText的富文本编辑
本文是我之前写的这边文章《Android图文混排-实现EditText图文混合插入上传》的升级版,除了在EditText实现了图片上传之外,还包含了视频上传、云盘文件上传、录音上传以及显示上传进度。目前应用于蜜蜂-集结号-任务模块。首先介绍一下该功能的实现效果: 实现思路实现思路与之前介绍的稍有不同,但是依然是使用SpannableString实现的。由于这里不仅仅支持图片上传,还支持音频、视原创 2017-08-01 22:07:12 · 4971 阅读 · 3 评论 -
使用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 · 55758 阅读 · 36 评论 -
Android搜索功能的案例,本地保存搜索历史记录
同事负责开发的APP有一个搜索功能,并且需要显示搜索的历史记录,我闲暇之余帮她开发了这个功能,现把该页面抽取成一个demo分享给大家。实现效果如图所示: 本案例实现起来很简单,所以可以直接拿来嵌入项目中使用,涉及到的知识点: - 数据库的增删改查操作 - ListView和ScrollView的嵌套冲突解决 - 监听软键盘回车按钮设置为搜索按钮 - 使用TextWatcher( )实时筛选原创 2016-02-18 20:11:47 · 22838 阅读 · 18 评论 -
Android Gson使用入门及GsonFormat插件的使用
Gson 是 Google 官方提供的用来在 Java 对象和 JSON 之间进行互相转换的Java类库。 我之前在使用Eclipse开发Android的时候,并没有经常使用Gson,而是使用原生的JSONObject解析,最近转用Android Studio,配合该IDE里面强大的插件,使用Gson很大程度地提高了开发效率。本篇博客将介绍Gson的基本使用方法,配合实际案例体会Gson带来的便捷原创 2016-03-14 15:20:29 · 5347 阅读 · 1 评论 -
Android 微信支付快速集成案例及有效解决返回值-1
商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。本文讲解Android微信支付快速集成案例及有效解决返回值-1。下面我们参考微信官方APP端开发步骤说明,一步一步集成微信支付功能……原创 2015-09-01 15:15:29 · 15252 阅读 · 7 评论 -
Android 使用极光推送自定义消息打造个性的消息推送效果
极光推送,是一个面向普通开发者开放的,免费的第三方消息推送服务。本篇博客将结合案例介绍极光推送自定义消息的使用方法,利用自定义消息实现项目中特定的消息推送需求。原创 2015-09-03 16:41:36 · 12111 阅读 · 6 评论 -
Android 支付宝快捷支付集成及ALI64错误的有效解决
支付宝开放平台采用了RSA安全签名机制,开发者可以通过支付宝公钥验证消息来源,同时可使用自己的私钥对信息进行加密。RSA算法及数字签名机制是支付宝开放平台与开发者网关安全通信的基础,若开发者不熟悉RSA及数字签名,请先查阅相关资料。 1、RSA私钥及公钥生成 官方提供的开发文档存在一些误导,这里简要概括为这几句话: RSA密钥生成命令 生成RSA私钥 openssl>genrsa -out原创 2015-08-23 18:46:17 · 16623 阅读 · 0 评论 -
Android 通过ADB Wireless无线调试应用
使用数据线调试应用难免不方便,本篇博客介绍使用ADB Wireless工具,当手机和电脑处在同一网络下,实现无线调试应用。 ADB Wireless能够让手机用无线来取代USB连接,而使用ADB工具的前提是设备已经root。原创 2016-03-23 20:38:50 · 3023 阅读 · 2 评论 -
Andriod GridView不改变背景色实现网格线效果
项目中需要给GridView添加一个网格线,而且GridView的背景是一张完整的图片,如图所示: 常用的方法是:改变GridView的背景色设置GridView水平或竖直方向的间隔设置item的布局文件背景色上述的方法直接改变了GridView的背景色,显然是不符合项目要求的,我在网上搜索了一下没有找到解决方案,这里给出自己的解决方案:给item的布局文件添加一个边框背景即可:<shap原创 2016-03-22 13:56:20 · 3900 阅读 · 11 评论 -
Eclipse无法导入现有项目的解决方法
最近准备复习之前写的Android代码时,发现很多项目都导入不进来。 百思不得其解,Eclipse删了重新下也没有解决,真浪费了我半天的时间。 后来我对每个不能导入的项目检查后发现,所有不能导入的项目的AndroidManifest.xml文件都是空的! 这也太奇怪了! 所以如果想让这些项目再运行起来的话,只能手动的修复AndroidManifest.xml文件咯。原创 2015-07-10 22:05:37 · 5859 阅读 · 1 评论 -
SAX解析XML文件-采用自定义布局
1.新建saxxml项目 2.Foods.xml<?xml version="1.0" encoding="UTF-8"?><foods> <food> <name>保定会馆1</name> <description>保定会馆,是一家百年老店,由chj创建。希望大家过去品尝.保定会馆,是一家百年老店,由chj创建。希望大家过去品尝.保定会馆,是一家百年老原创 2015-05-26 12:33:49 · 1142 阅读 · 0 评论 -
多选框CheckBox的使用
每个多选框都是独立的,可以通过迭代所有多选框,然后根据其状态是否被选中再获取其值。 activity_main.xml MainActivity.java原创 2015-06-08 23:01:42 · 1681 阅读 · 0 评论 -
ViewPager实现应用的欢迎界面
在前一篇博客中介绍了Animation实现应用的欢迎界面,本篇博客介绍ViewPager实现应用的欢迎引导界面,并且实现继续向左滑动最后一张图片进入新的Activity的效果。原创 2015-06-20 22:51:19 · 1948 阅读 · 0 评论 -
Animation Frame动画实现应用的欢迎界面
Android欢迎界面通常的实现可以通过Animation的Frame动画实现,ViewPager可以实现滑动效果的欢迎界面。本案例介绍Animation实现图示欢迎动画效果。原创 2015-06-16 23:12:43 · 2031 阅读 · 0 评论 -
得到新打开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 · 1153 阅读 · 0 评论 -
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 · 1250 阅读 · 0 评论 -
SQLiteDatabase的CRUD操作实现
1.新建db项目 2.MySQLiteOpenHelper.javapackage com.example.db.impl;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public clas原创 2015-05-26 23:20:12 · 1349 阅读 · 0 评论 -
Pull解析XML文件-采用自定义布局
除了可以使用 SAX和DOM解析XML文件,大家也可以使用Android内置的Pull解析器解析XML文件。 Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText(原创 2015-05-26 23:14:42 · 1175 阅读 · 0 评论 -
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 · 1745 阅读 · 0 评论 -
Pull生成XML文件
点击button按钮生成xml文件 MainActivity.javapackage com.example.pullxmls;import java.io.BufferedWriter;import java.io.IOException;import java.io.OutputStreamWriter;import org.xmlpull.v1.XmlSerializer;im原创 2015-05-26 23:16:30 · 836 阅读 · 0 评论 -
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 · 1245 阅读 · 0 评论 -
对应用进行单元测试
法一:单独创建一个AndroidTestProject对已存在项目进行测试。 1.在新建的junitdemo项目中创建待测试的业务类UserSerive 2.新建一个名为testdemo的Android TestProject并选择针对第一步创建的项目进行测试 3.在testdemo中新建一个DemoTest类对业务类进行测试 分别执行test1( )、test2( )方法:原创 2015-05-20 23:17:14 · 951 阅读 · 0 评论 -
电话拨号器的实现
新建一个Android Application Project 在Strings.xml中添加字符串资源 在布局文件activity_phone.xml中添加相应控件 Graphical Layout显示效果: 如果在Graphical Layout中显示效果出错,只需要修改为对应的API即可。 4. 在AndroidManifest.xml中添加拨打电话的权限 5. 在PhoneAct原创 2015-05-20 23:06:46 · 1190 阅读 · 1 评论 -
文件存储的实现-login登录案例1-内置存储
很多时候我们的软件需要对处理后的数据进行存储或再次访问。Android为数据存储提供了如下几种方式: 文件、SharedPreferences(参数)、SQLite数据库、内容提供者(Content provider)、网络案例1:文件保存在内置存储中 1.新建一个login项目并完成布局的搭建 2.MainActivity.java 这里封装了一个将io流转换成字符原创 2015-05-20 23:27:53 · 1361 阅读 · 0 评论 -
短信发送器的实现
1.新建名为sendsms项目 2.Activity_sms.xml原创 2015-05-22 23:07:13 · 1021 阅读 · 0 评论 -
文件存储的实现-login登录案例3-SharedPreferences
很多时候我们的软件需要对处理后的数据进行存储或再次访问。Android为数据存储提供了如下几种方式: 文件、SharedPreferences(参数)、SQLite数据库、内容提供者(Content provider)、网络案例3:使用sharedPreferences保存参数 1.修改MainActivity.java文件 2.演示效果: 应用第一次开启显示:原创 2015-05-22 23:12:09 · 1554 阅读 · 1 评论