Android
文章平均质量分 65
AI 开发者
支付宝软件工程师
展开
-
android的context使用,工具类context
一个工具类里的某个方法,或者View里需要调用Context.但是工具类还有View里没有这个上下文怎么办?为了解决大家的疑问,为了解决大家的疑问,我今天写一个简单的Demo.让大家如何学好自如的用Context.想什么时候有Context,什么时候就有Context.这里大致可以分为两种:一是传递Context参数,二是调用全局的Context.其实我们应用启动的时候会启动App转载 2016-03-05 21:09:10 · 2075 阅读 · 0 评论 -
支付宝 Android 版使用的开源组件
【来源】:简书--支付宝Android版使用的开源组件【作者】:didikee【链接】:http://www.jianshu.com/p/844e338319af 支付宝 Android 版使用的开源组件前言:花了点时间整理了 支付宝 Android 客户端使用的开源组件,给需要的同学.在你不知道用什么开源框架的时候可以作下参考,毕竟支付宝是阿里的重量级产品,产品的稳定性是...转载 2017-02-04 19:40:09 · 1782 阅读 · 0 评论 -
写给Android开发者的混淆使用手册
【转载自】:简书--写给Android开发者的混淆使用手册【作者】:光源_Android【链接】:http://www.jianshu.com/p/158aa484da13 综述 毫无疑问,混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆。首先,这里说的的混淆其实是包括了代码压缩、代码混淆以及资源压缩等的优化过程。依靠 ProGua...转载 2017-02-04 19:14:42 · 11070 阅读 · 0 评论 -
Android新布局ConstraintLayout解析
转载自鸿洋大神的博客一、概述ConstraintLayout出现有一段时间了,不过一直没有特别去关注,也多多少少看了一些文字介绍,多数都是对使用可视化布局拖拽,个人对拖拽一直不看好,直到前段时间看到该文:解析ConstraintLayout的性能优势非常详尽的介绍了ConstraintLayout的性能优势,于是乎开始学习了一下ConstraintLayout。本文的重点不在与可...转载 2018-01-25 17:55:00 · 1401 阅读 · 0 评论 -
仿Android开发者选项,点七下显示调试界面
private int clickCount = 0;private long clickTime = 0;sevenClickView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (clickTime == 0) {...原创 2018-02-02 21:59:00 · 1988 阅读 · 0 评论 -
二维码扫描框架zxing的使用
目前二维码扫描功能在app上已经非常成熟了,google的zxing项目也是目前可以说是最流行的二维码扫描框架。但是它本身功能太多,这里我提取出一些基本的扫码功能,重新封装成库。github:https://github.com/Sun-Shuai/zxing-demo使用方法: compile 'com.sunshuai:android-zxing:1.0.0'新建一个Z...原创 2018-01-29 11:20:00 · 3370 阅读 · 0 评论 -
AndroidStudio发布项目到JCenter及常见错误
如果我们想让自己的开源项目被别人使用,对于Android平台,一个很好的方式就是上传到jcenter,然后使用时通过添加compile引用即可。关于上传插件网上很多教程都采用 gradle-bintray-plugin ,根据研究,这个插件配置及其复杂,各种意想不到的错误层出不穷。于是采用另一个 bintray-release ,据说是鸿洋大神推荐的,实测也简单稳定许多。1、注册Bin...原创 2018-01-24 10:13:00 · 2052 阅读 · 0 评论 -
Android 数据库框架litepal的使用
来源:郭霖大神http://blog.csdn.net/guolin_blog/article/details/38461239要想熟练地操作任何一个数据库,最最基本的要求就是要懂SQL语言,这也是每个程序员都应该掌握的技能。虽说SQL博大精深,要想精通确实很难,但最基本的一些建表命令,增删改查,大家还是必须要学会的。SQL(Structured Query Language)是一种标...转载 2018-01-21 11:08:00 · 1882 阅读 · 1 评论 -
android多次点击button只弹一次toast
android中我们有时候多次点击button,toast会出现多次,下面代码可实现当前toast消失之前点击button无效public class ToastUtil { private static final boolean DEBUG = BuildConfig.DEBUG; private static Toast toast = null; pu...原创 2016-12-14 23:19:52 · 1915 阅读 · 0 评论 -
关于Android软键盘遮挡的问题
在开发登录界面时,点击某个EditText准备输入,弹出的软键盘遮挡了按钮或者下面的输入框,在完成这个文本框的输入后,想要继续下面的操作,需要先隐藏软键盘。这会影响用户操作的流畅感,所以需要解决。问题如下:image.png解决方法监听布局变化,当软键盘弹出时,滚动布局使显示出来。下面直接放代码。activity_login.xml<?xml version="...原创 2018-01-20 20:23:00 · 1549 阅读 · 0 评论 -
Android手机存储路径
手机存储手机分为内部存储和外部存储1、内部存储主要方法 路径 Environment.getDataDirectory() /data Environment.getDownloadCacheDirectory() /cache Environment.getRootDirectory() /system 这里的内部存储对应的就是手机QQ的手机内...原创 2018-01-18 16:38:00 · 5288 阅读 · 0 评论 -
升级Android Gradle Plugin 至3.0.0后遇到的问题解决
新的插件和最新的Butterknife插件8.7+版本会冲突,编译时会报错Error:Unable to find method 'com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;'.Possible causes for this unexpected error include:Gradle's...原创 2018-01-16 14:51:00 · 3381 阅读 · 0 评论 -
在BaseActivity中绑定ButterKnife
由于每次在Acitivity中都要进行ButterKnife的bind操作,为了方便,将bind操作写到BaseActivity中,绑定Activity 必须在setContentView之后,代码如下:public class BaseActivity extends AppCompatActivity { protected Unbinder mBinder; @Ov...原创 2018-01-16 16:03:00 · 2965 阅读 · 0 评论 -
ButterKnife绑定include布局失败
问题: Caused by: java.lang.RuntimeException: Unable to bind views for cc.haoduoyu.umaru.ui.activities.ChatActivity at butterknife...原创 2018-01-17 14:32:00 · 3643 阅读 · 0 评论 -
Android Review清单
清理操作1.页面退出时,是否完成必要的清理操作1. 是否调用Handler的removeCallbacksAndMessages(null)来清空Handler里的消息2. 是否取消了还没完成的请求3. 在页面里注册的监听等,是否取消注册 2.数据库的游标是否已经关闭这个点一般人都知道,出问题一般在于,没有考虑到多线程并发时的情况下,Cursor没有被释放。 所以数据库的操作需要加...原创 2017-03-05 20:57:55 · 1481 阅读 · 0 评论 -
Android:使用Service还是Thread
Service是Android的四大组件之一,被用来执行长时间的后台任务,同样,线程也可以实现在后台执行任务,它们的区别在哪呢?何时使用Service何时使用Thread呢?今天我也来说说我的理解和总结。首先,需要了解Service的几个特点。(1) 默认情况下,Service其实是运行在主线程中的,如果需要执行复杂耗时的操作,必须在Service中再创建一个Thread来执行任务转载 2016-03-05 21:12:02 · 10310 阅读 · 0 评论 -
java字符串和byte数组间转换
Java与其他语言编写的程序进行tcp/ip socket通讯时,通讯内容一般都转换成byte数组型,java在字符与数组转换也是非常方便的; 1、将字符转换成byte数组 String str = "罗长"; byte[] sb = str.getBytes(); 2、将byte数组转换成字符 byte[] b={(byte)0xB8,(byt...转载 2016-03-05 21:15:51 · 1653 阅读 · 0 评论 -
java数组的使用
下面是stackoverflow中关于数组方法的相关问题中,获得最多票数的12个数组操作方法。 1. 声明一个数组 Java代码 String[] aArray = new String[5]; String[] bArray = {"a","b","c", "d", "e"}; String[] cArray = new String[]{"转载 2016-03-05 21:19:57 · 1595 阅读 · 0 评论 -
android使用自定义标题时提示“you cannot combine custom titles with other  ”
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);转载 2016-02-23 10:39:24 · 1724 阅读 · 0 评论 -
Android App AllowBackup配置带来的风险
前言笔者在使用自己编写的 Drozer 模块对国内流行的安卓手机应用进行自动化扫描后发现有大量涉及用户财产和隐私的流行安卓应用存在 Android AllowBackup 漏洞,已测试成功受到漏洞影响的应用包括:新浪微博,百度云网盘,美团,大众点评,去哪儿等等。漏洞案例先来看一个情景案例,某IT男一直暗恋部门某女神,一天女神手机太卡了找IT男帮助清理手机空间,IT 男高转载 2016-02-24 10:23:05 · 2010 阅读 · 0 评论 -
Android Seekbar间隔和自定义
最近在项目中使用到了seekbar和progressbar,且必须按照设计要求来进行设置,如下图。要实现这个效果就必须对这两个控件进行自定义。 一,SeekBar 一开始要实现这个效果参考网上的自定义方法根本无法达到这个效果,没办法只能投机取巧了。 1,背景刻度的图片我是用了一个ImageView,然后在ImageView上放一个SeekBar。因为是个定制的平板应用,分辨率...原创 2016-02-24 12:20:58 · 15851 阅读 · 0 评论 -
android提示Field can be converted to a local varible
有时候会在定义变量时提示Field can be converted to a local varible,说明这个变量可以使用局部变量替换,建议写成局部变量。我们直接删除private ×××,在使用的地方直接声明和实例化就可以了转载 2016-02-25 21:00:18 · 14715 阅读 · 0 评论 -
java字符串转16进制
蓝牙通信中,有时我们需要将字符串转为16进制再进行传输,转换方法如下try { byte[] b = s.getBytes(); String str = " "; for (int i = 0; i < b.length; i++) { Integer l = new Integer(b[i]); String strTmp =...原创 2016-02-27 21:26:12 · 11656 阅读 · 0 评论 -
Android Studio添加本地开源库的方法
将开源库下载下来,放置在与 app 目录同级的目录下,然后编辑 setting.gradle 文件,加入:”:开源库文件夹名”。如:我在 app 同级的目录下放置了 volley 的开源库文件夹,然后编辑 setting.gradle,内容改为:include ':app', ':volley'然后再回到你的 app 目录下的 build.gradle 文件,在 dependenci...原创 2016-02-28 23:26:55 · 2173 阅读 · 0 评论 -
android按返回键和Home键都进入后台
//返回键和Home键都进入后台public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode != 4 && keyCode != 3) { return super.onKeyDown(keyCode, event); } moveTaskToBack(true); ret原创 2016-04-21 20:45:03 · 11223 阅读 · 0 评论 -
封装Toolbar到BaseActivity
Android 5.0的时候Google用Toolbar替代了ActionBar,而ActionBarActivity又被AppCompatActivity替代,那么使用方法就是引入Toolbar设置到Activity中。一个应用的几乎所有界面都需要头部app bar,为了能够方便各个界面方便使用,统一管理,这里把toolBar封装到BaseActivity中。1,定义一个toolbar_l...原创 2018-01-17 17:02:00 · 1622 阅读 · 0 评论