
Android开发
文章平均质量分 91
LeBron_Six
Android
展开
-
RecyclerView 悬浮吸顶效果实现,支持数据绑定及Touch事件
诸如联系人列表、分类页商品类表等分组场景,都可能需要悬浮吸顶的效果。Android 官方并未提供原生的组件来实现这个功能,因此需要我们自定义实现。网上看到的基本实现思路都是通过 ItemDecoration ,在滑动过程中去根据当前滑动位置,绘制吸顶的视图。如果只是需要简单的绘制,确实通过这个方式要简单的多。但是通过这种方式无法支持 Touch 事件。感兴趣的可以参考一下这个:https:/...原创 2019-11-27 13:40:15 · 1818 阅读 · 0 评论 -
RecyclerView Adapter 实现自动多 ViewType
前言多Type的列表在App中很常见,例如各种电商类App的首页,甚至是购物车、订单详情页面等。我们暂且将页面上每个ViewType对应的模块称之为楼层。那么,以电商订单详情举例,可能有以下楼层:订单状态(交易成功、交易关闭等)物流信息收货地址订单商品信息列表价格相关信息订单信息(订单号、交易流水号等)其他一些展示信息那么,我们可以通过不同的 ViewType 来区分这些模块...原创 2019-11-26 20:36:32 · 1541 阅读 · 2 评论 -
一个 2 年 Android 开发者的 18 条忠告
原文:What 2 Years of Android Development Have Taught Me the Hard Way前言不要重复造轮子不要盲目的选择library坐下来喝杯咖啡阅读更多的代码看在上帝的份上维护一个恰当的编程规范吧你需要ProGuard是的你真的需要使用一个恰当的架构用户界面就像笑话如果还需要解释那就糟糕了分析是你最好的朋友做一个营销专家是时候优化转载 2016-11-08 09:36:58 · 4278 阅读 · 7 评论 -
RxJava 从入门到出轨
RxJava:https://github.com/ReactiveX/RxJava前言RxJava 概念初步理解作用 - 异步模式 - 观察者模式结构 - 响应式编程优势 - 逻辑简洁RxJava 依赖RxJava 入门事件产生事件消费不完整定义回调入门示例RxJava 进阶Scheduler线程控制变换map操作符flatMap操作符RxJava 其他常用操作原创 2016-11-23 14:26:44 · 28819 阅读 · 42 评论 -
Android 如何应用ttf图标字体库
作为一个Android开发者,自己想做一个app练手,有个比较头疼的问题就是没有UI图标资源~~ 其实很容易搞定的,下面就来聊聊如何在Android中应用图标字体库,找图标不再纠结! 图标库传送门:https://icomoon.io/app/#/select1、点击左上角菜单 -> Manager Projects 进入管理页面。 2、点击New Project, 创建一个工程,如First原创 2016-11-10 10:59:20 · 7260 阅读 · 4 评论 -
10 个你有可能不知道的Android Studio技巧
英文原文:medium当你想不起来某个功能怎么用的时候修改快捷键你需要了解的自动补全在自动提示以后使用 Tab 键替换当前的方法或值当你写完了一行代码三个定位的小技巧根据后缀自动生成的代码模板Debug 时自定义对象显示的技巧总结Android Studio 是每一个 Android 开发每天都要使用的工具,但是即使你是一个经验丰富的开发人员,你也可能已经错过了许多可以节约生命的翻译 2016-10-11 11:59:46 · 5829 阅读 · 9 评论 -
详解Android/IOS平台下抓包工具使用以及抓取API接口
抓包工具Charles主机允许代理模式客户端设置代理截获数据包HTTPS模仿一个appUI请求接口封装加密请求Header抓包(Packet Capture),实际上就是对网络请求(包括发送与接收)的数据包进行截获、重发、编辑、转存等操作,在Android下,也经常被用来进行数据截取等。学会抓包之后,获取某个App的API就是轻而易举的事了,当然,现在有很多App,都对API进行原创 2016-10-09 10:06:45 · 42150 阅读 · 4 评论 -
Android 无需root实现apk的静默安装
Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通做法,如果手机没有root权限的话,似乎很难实现静默安装,因为Android并不提供显示的Intent调用,一般是通过以下方式安装apk:Intent intent = new Intent(Intent.ACTION_VIEW);intent.setDataAndType(Uri.fromFile(file), "app原创 2016-01-17 19:38:15 · 36960 阅读 · 23 评论 -
完美解决HorizontalScrollView与ListView滑动事件冲突
HorizontalScrollView与ListView滑动事件冲突,导致ListView下拉不灵敏。下面给出一种比较完美的实现方式,如果是纵向的ScrollView,对应改一下就好了~~上代码package wosai.com.membermarketing.util.layout;import android.content.Context;import android.util.原创 2015-10-30 18:28:18 · 6784 阅读 · 0 评论 -
Android 检测键盘是否显示及隐藏键盘
Android 检测键盘是否显示及隐藏键盘的方法~~package com.newland.util;import android.app.Activity;import android.view.View;import android.view.inputmethod.InputMethodManager;/** * 系统输入法键盘 检测工具 * * @author原创 2015-11-01 21:21:15 · 1867 阅读 · 0 评论 -
Android 日志打印工具类 可显示打印所在的方法和行号
Android 日志打印工具类 可显示打印所在的方法和行号。便于开发人员查看Log信息~~package com.newland.util;import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import ja原创 2015-11-01 21:26:07 · 7594 阅读 · 3 评论 -
Android框架模式之MVC与MVP
MVC (Model-View-Controller):顾名思义,M是指逻辑模型,V是指视图模型,C则是控制器。一个逻辑模型我们可以才用多种视图模型,例如进度条显示,我们可以采用圆环、直线、容器式的试图显示,当然,一种视图模型也可以对于多种逻辑模型。MVC的作用:将M层和V层的实现代码分离,从而使同一个程序可以在同一View下,有不同的表现形式;而C层则是确保M层和V层的同步,一旦M层有改变,原创 2016-02-01 13:58:14 · 4365 阅读 · 0 评论 -
Android View 绘制流程
View 绘制机制一、 View 树的绘图流程当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw。整个 View 树的绘图流程在ViewRoot.java类的performTraversals()函数展开,该函数所做 的工作可简单概况为是否需要重新计算视图大小(measure)转载 2017-02-07 09:57:02 · 1336 阅读 · 0 评论 -
Android 7.0 之拍照与图片裁剪适配
在Android 7.0以上,在相机拍照和图片裁剪上,可能会碰到以下一些错误:android.os.FileUriExposedException: file:///storage/emulated/0/xx.jpg exposed beyond app through ClipData.Item.getUri()exposed beyond app through Intent.getData()原创 2017-02-07 13:05:22 · 13400 阅读 · 3 评论 -
关于 RecyclerView 优化的一些建议
RecyclerView 几乎已经取代了 ListView & GridView,但为了达到更好的性能体验,还是需要做一些适当的优化的。布局优化首当其冲,减少层次结构、减少过渡绘制,可以提高item的解析测量与绘制的效率。另外,应该尽量避免多次measure & layout 次数。1、 View 的三大过程 从ViewRoot的 performTraversals() 方法开始,依次经过 mea原创 2018-04-24 14:52:04 · 9499 阅读 · 1 评论 -
从Java反射机制到Android注解框架
一、Java反射机制1、定义 JAVA反射机制是在“运行状态”中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java反射机制主要提供了几个功能:在运行时判断任意一个对象所属的类、在运行时构造任意一个类的对象、在运行时判断任意一个类所具有的成员变量和方法原创 2016-06-13 16:20:26 · 4794 阅读 · 6 评论 -
滴滴开源Android插件化框架VirtualAPK原理分析
概述Activity 支持Hook ActivityManagerServiceHook Instrumentation启动插件ActivityService 支持ContentProvider 支持Receiver 支持小结概述滴滴出行公司的首个对外开源项目 - VirtualAPK。地址:https://github.com/didi/VirtualAPK滴滴自行研发了这款插件化原创 2017-07-08 19:30:10 · 23258 阅读 · 13 评论 -
从源码的角度解析Handler、Looper、Message和MessageQueue
导语HandlerHandler 作用MessageMessage 结构Message 创建及发送MessageQueueMessageQueue 结构插入消息读取消息LooperLooper 创建Looper 开启循环线程阻塞问题结语导语虽然很基础的一个东西,然是最近面试中还是常常最被问到,而且都是到源码层,因此决定再造一...原创 2017-07-04 14:03:43 · 2002 阅读 · 0 评论 -
手把手带你撸一套Android简易ORM框架
ORM概念实体模型建立注解列ID主键自增长数据表的列实体基类实体类映射成表结构数据库操作封装数据库升级ORM概念对象关系映射(Object Relational Mapping),通俗来讲就是建立关系型数据库与业务实体对象之间作一个映射关系。对于Java后端来说,例如mybatis、hibernate等,在Android平台下,常见的数据库映射框架有 GreenDAO、Realm原创 2017-06-07 19:41:05 · 2331 阅读 · 0 评论 -
Android 7.1.1 之实现 3D Touch
转载请注明出处:http://blog.youkuaiyun.com/yyh352091626/article/details/68962736Shortcut概念具体实现BuildConfig 配置静态配置动态配置创建删除或禁用更新返回栈问题Shortcut概念Shortcut 是Android-25(Android 7.1)新增的一项类似iOS的 3D Touch 功能的快捷方式组件,但原创 2017-04-03 18:05:54 · 13682 阅读 · 3 评论 -
从源码角度一步步分析AsyncTask的用法与原理
前言AsyncTask特点AsyncTask简单使用原理分析总结AsyncTask 是Android特有的一个轻量级异步抽象类,在类中通过doInBackground()在子线程执行耗时操作,执行完毕在主线程调用onPostExecute()。前言众所周知,Android视图的绘制、监听、事件等都UI线程(主线程,Main Thread)执行,如果执行访问网络请求、数据库等耗时操作,可能会阻原创 2016-10-08 16:23:21 · 2391 阅读 · 1 评论 -
关于Retrofit2+Okhttp3实现统一添加请求参数和重定向
Android开发中难免会遇到一些比较“不友好”的服务端接口。比如以前遇到的json数据中,某个字段偶尔为Object,偶尔为List… 最近遇到的一个问题就是:所有请求接口都要增加一个token参数… 并且token参数有可能过期,比如请求某一条接口,如果token失效则在该请求的响应中把新的token带回来,客户端就得用新的token再次发送该请求,类似重定向。token失效的stateCode原创 2016-11-08 15:04:37 · 16019 阅读 · 2 评论 -
-bash :gradlew command not found
mac下执行gradlew命令时,提示-bash :gradlew command not found,主要原因是Android Project根目录下地gradlew文件没有执行权限。打开终端,执行以下命令:sudo chmod +x gradlew为gradlew增加可执行权限。值得一提的是,mac下执行当前目录下的命令需要在前面加上“./”,否则会到环境变量下找相应命令。例如./gradlew原创 2016-08-28 10:16:50 · 24574 阅读 · 2 评论 -
通俗理解Android中View的事件分发机制及滑动冲突处理
说起Android滑动冲突,是个很常见的场景,比如SliddingMenu与ListView的嵌套,要解决滑动冲突,不得不提及到View的事件分发机制。一、Touch事件传递规则分析首先,我们要知道Touch事件是包装在MotionEvent对象中的,在手指与屏幕接触过程中产生一系列事件,典型的事件有以下三种:ACTION_DOWN:手指刚接触屏幕的瞬间ACTION_UP:手指原创 2016-02-25 13:47:40 · 14296 阅读 · 6 评论 -
利用Gradle发布项目到JCenter、Maven
利用Gradle发布Android项目到JCenter Android Studio将远程仓库默认指定为Jcenter仓库,位于Bintray网站。Bintray网站下面还有其他好几个仓库。本文主要介绍如何将Android项目发布到Jcenter。注册Bintray账号Bintray官网:https://bintray.com 也可使用GitHub账号登录。获取APIKey上传项目之前我们需要原创 2016-07-13 21:13:51 · 6275 阅读 · 0 评论 -
Android 通过JNI实现守护进程
开发一个需要常住后台的App其实是一件非常头疼的事情,不仅要应对国内各大厂商的ROM,还需要应对各类的安全管家...虽然不断的研究各式各样的方法,但是效果并不好,比如任务管理器把App干掉,服务就起不来了...网上搜寻一番后,主要的方法有以下几种方法,但都是治标不治本:1、提高Service的优先级:这个,也只能说在系统内存不足需要回收资源的时候,优先级较高,不容易被回收,然并卵...原创 2016-01-19 14:59:16 · 44018 阅读 · 71 评论 -
Android MarsDaemon实现进程及Service常驻
前段时间,就讨论过关于如何让Service常驻于内存而不被杀死,最后的结论就是使用JNI实现守护进程,但是不得不说的是,在没有修改系统源码的情况下,想真正实现杀不死服务,是一件很难的事情,目前除了白名单的方式,也好像没有发现有一款APP能做到不管怎么搞它都能自动重启...最近在GitHub上发现了一个比较有意思的轻量级库:MarsDaemon,进行一些简单的配置,就可以实现在android上实原创 2016-03-21 16:51:46 · 15780 阅读 · 17 评论 -
解决AndroidStudio导入项目在 Building gradle project info 一直卡住
Android Studio导入项目的时候,一直卡在Building gradle project info这一步,主要原因还是因为被墙的结果。gradle官网虽然可以访问,但是速度连蜗牛都赶不上...解决办法主要有两种,一是直接下载gradle离线包,二是修改项目的gradle-wrapper.properties里的gradle版本为自己电脑已有的版本。离线包下载导入方式查看所需gradle版原创 2016-05-24 16:12:21 · 151036 阅读 · 25 评论 -
Java/Android 编码规范,从第一行代码开始
转载请注明出处:http://blog.youkuaiyun.com/yyh352091626/article/details/52219812谈到编码规范,对于团队项目开发来说,是很有必要的。如果说代码是一种社会行为,那么代码规范可以说是法律,通过法律来约束行为。养成一个良好编码规范的习惯,一是可以统一代码风格;二是便于团队成员协作开发;三是在review代码的时候,更加容易精确地判断需要修改的地方;四是提高原创 2016-08-16 20:55:26 · 4204 阅读 · 1 评论 -
MVP for Android: 如何组织显示层的内容
MVP(Model View Presenter)模式是从众所周知的MVC(Model View Controller)模式中派生出来的,这在Android开发中变得越来越重要。越来越多的人在谈论MVP,但实际上可靠的、有条理的信息很少。这就是我为何要用这个博客来鼓励大家讨论,然后把我们所有知识以最好的方式应用到我们项目中来。什么是MVP?MVP模式允许从业务逻辑中拆分出表示(presen翻译 2016-03-15 16:10:05 · 6930 阅读 · 0 评论 -
浅析Android Activity的启动过程
Activity作为Android的四大组件之一,也是最基本的组件,负责与用户交互的所有功能。Activity的启动过程也并非一件神秘的事情,接下来就简单的从源码的角度分析一下Activity的启动过程。根Activity一般就是指我们项目中的MainActivity,代表了一个Android应用程序,一般也是在一个新的进程中启动起来。在Android系统中,所有的Activity组件都保存在堆栈原创 2016-04-07 17:15:05 · 6667 阅读 · 0 评论 -
关于Android开发的40条优化建议
以下是开始Android编程的好方法: 1、找一些与你想开发的功能类似的代码; 2、调整它,尝试让它变成你想要的; 3、回顾开发中遇到的问题 4、使用StackOverflow来解决遇到的问题对每个你想实现的东西重复上述过程。采用这种方法能够激励你,因为你在保持不断迭代更新,在这个过程里面你会学到很多。当然,当你发布应用的翻译 2016-03-22 23:25:25 · 9064 阅读 · 3 评论 -
Genymotion错误之INSTALL_FAILED_CPU_ABI_INCOMPATI
运行App到Genymotion,出现了这么个错误:Installation error:INSTALL_FAILED_CPU_ABI_INCOMPATI。Google官方的解释是由于引用了其他非android的sdk编译环境编译的二进制代码导致的,有如下两种解决办法:1、libs目录如果有其他jar包,把libs里的jar包拿出来放到项目的buildpath里面即可解决。2、下载原创 2016-01-29 12:39:59 · 2022 阅读 · 0 评论 -
Android实现流量统计和网速监控悬浮窗
很多安全卫士类软件都实现了网速监测功能,也算是一个比较实用的功能。Android下,TrafficStats类实现了对流量的统计。static long getMobileRxBytes()//获取通过Mobile连接收到的字节总数,但不包含WiFi static long getMobileRxPackets()//获取Mobile连接收到的数据包总数 static long get原创 2016-01-28 12:10:48 · 17910 阅读 · 6 评论 -
Android 全局异常捕获之CrashHandler
一个App上线或者投入到生产环境的时候崩溃了,还不知道是什么原因,这肯定是开发者的痛...所以肯定要加入全局异常捕获,如果项目较大的话,可以考虑加入第三方诸如友盟的崩溃统计插件,以达到异常捕获的效果!Crash,可以理解为崩溃、垮台,通常来讲就是App运行期间发生了不可预料的错误,虽然在经历发布之前,测试人员进行了大量的测试,但是并不能保证App的正常运行,总会或多或少有一些BUG的。原创 2016-01-28 11:13:44 · 13643 阅读 · 0 评论 -
浅谈Android开发中内存泄露与优化
内存泄露是在Android开发中尤其要重视的一个问题,对开发人员开说,这是一个很容易犯也很常见的错误。优化内存泄露的问题,主要从两方面着手,一是开发人员避免写出有内存泄露的代码,二是通过一些诸如MAT的内存分析工具来找出潜在的内存泄露并解决它。其实平时遇到的最多的情况,就是对Activity或Context保持一个长生命周期的引用。下面主要来分析一下造成内存泄露的各种原因。一、静态变量导致原创 2016-01-25 17:33:31 · 8520 阅读 · 3 评论 -
Android Studio 使用正式签名进行调试
在Android Studio中,可以使用Gradle进行打包时自动签名。其实Android Studio默认会给调试应用加上Debug签名,但有时候调一些第三方SDK时,需要正式签名才能调起来,所以接下来分享一下使用Gradle自动签名的方法。一、创建签名文件打开AS,选择Build->Generate Signed APK,选择要打包的项目,点击Next,再点击Create new..原创 2016-03-17 21:33:49 · 28083 阅读 · 10 评论 -
Android Volley增加Https支持,允许SSL
Volley默认是不支持Https请求的。如果Https服务器是单向认证,则增加以下允许SSL就可以。先增加SsX509TrustManager类,代码如下package com.lakala.net.volley.toolbox;import java.security.KeyManagementException;import java.security.NoSuchAlgo原创 2016-01-11 14:54:18 · 5240 阅读 · 0 评论 -
解决mac下adb devices命令找不到设备
在Eclipse或者Android Studio下可以调试,但是在终端下执行adb devices命令找不到设备的问题error: device not found - waiting for device - 。1、确保Android手机已经连上电脑,并且打开USB调试。2、MAC终端下,命令行执行system_profiler SPUSBDataType,显示外原创 2016-01-08 15:49:27 · 15095 阅读 · 0 评论 -
详解Android图片(背景)圆角,并实现半部分圆角
Android UI设计中,不得不用到带圆角的图片或者背景。今天就和大家分享一下,如何实现图片或背景圆角,也可实现半部分圆角。先来看一下效果图~ 上面两个图分别是实现上半部分圆角&下半部分直角和全部圆角,同样,也可以实现左半部分,右半部分,下半部分的圆角。好的,进入正题~我们首先来创建一个圆角规则的枚举类型: /** * 图片圆角规则 eg. TOP:上半部分原创 2015-09-21 13:17:43 · 13845 阅读 · 3 评论