
android开发
文章平均质量分 52
乐活青年
这个作者很懒,什么都没留下…
展开
-
Android自定义View实现Loading动态图
最近家里的宽带业务到期,客服打电话说之前的套餐没了,新套餐普遍涨价,就选了一个+20元绑定一个摄像头的套餐,前两天师傅上门安装了摄像头,我手机上下载一个“小翼管家”就能在手机上实时看家里情况。话说,这种收费服务就是抢劫呀!回到正题,“小翼管家”App做的一般,不过打开摄像头一刻,loading动画倒是让我挺有兴趣,于是决定在摸鱼的时间动手仿一个......画六边形实在有点麻烦,还要计算角度,没那么多时间,我还要打王者......就用圆角矩形代替了......package com.example.原创 2022-03-29 18:45:03 · 3269 阅读 · 0 评论 -
Android颜色透明度百分比转换
百分比:0% HEX: 00 百分比:1% HEX: 30 百分比:2% HEX: 50 百分比:3% HEX: 80 百分比:4% HEX: A0 百分比:5% HEX: D0 百分比:6% HEX: F0 百分比:7% HEX: 12 百分比:8% HEX: 14 百分比:9% HEX: 17 百分比:10% HEX: 1A 百分比:11% HEX: 1C 百分比:12% HEX:...原创 2021-02-04 16:36:24 · 796 阅读 · 0 评论 -
关于repo的应知应会
1. repo介绍 官方介绍:Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workflow. Repo is not meant to replace Git, only to make it easier t...原创 2020-10-22 16:02:53 · 1272 阅读 · 0 评论 -
Support库与AndroidX对应关系
来源支持库映射:https://developer.android.google.cn/jetpack/androidx/migrate/artifact-mappings类映射:https://developer.android.google.cn/jetpack/androidx/migrate/class-mappings内容支持库映射:Old build artifact AndroidX build artifact android.arch.core:com原创 2020-05-27 12:00:28 · 3081 阅读 · 0 评论 -
带阻尼回弹效果的RecyclerView
一、前提接到新需求,要求列表滑动过程增加阻尼回弹效果,且即使列表不能填充一整个屏幕的情况下也支持滑动。有人说,给RecyclerView加上 android:overScrollMode="always" 就行了,事实证明,NO!这个东西只是在滑动到边缘是多了个水波阴影而已,没有阻尼回弹。又有人说,给ListView加上 android:overScrollMode="always" ...原创 2020-04-30 11:41:41 · 11614 阅读 · 5 评论 -
SparseArray和ArrayMap的内部实现
1、SparseArraySparseArrays map integers to Objects. Unlike a normal array of Objects,there can be gaps in the indices. It is intended to be more memory efficient than using a HashMap to map Integer...原创 2018-10-17 15:38:43 · 348 阅读 · 0 评论 -
Android Studio打包前删除没用到的资源文件
1,找到Analyze菜单2,选择Run Inspection by name选项3,在弹出的搜索框中输入:unused resources4,回车,OK5,在Inspection Results中弹出所有未使用到的资源,包含xml,png6,删除并重新打包 ...原创 2018-10-15 11:39:39 · 2073 阅读 · 0 评论 -
插件加载机制
上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务;通过Hook AMS和拦截ActivityThread中H类对于组件调度我们成功地绕过了AndroidMAnifest.xml的限制。但是我们启动的『没有在AndroidManifet.xml中显式声明』的Activity和宿主程序存在于同一个Apk中...转载 2018-09-27 15:18:56 · 221 阅读 · 0 评论 -
插件化Activity生命周期管理
在Java平台要做到动态运行模块、热插拔可以使用ClassLoader技术进行动态类加载,比如广泛使用的OSGi技术。在Android上当然也可以使用动态加载技术,但是仅仅把类加载进来就足够了吗?Activity,Service等组件是有生命周期的,它们统一由系统服务AMS管理;使用ClassLoader可以从插件中创建Activity对象,但是,一个没有生命周期的Activity对象有什么用?所...转载 2018-09-27 15:00:04 · 286 阅读 · 0 评论 -
Hook机制之AMS&PMS
在前面的文章中我们介绍了DroidPlugin的Hook机制,也就是代理方式和Binder Hook;插件框架通过AOP实现了插件使用和开发的透明性。在讲述DroidPlugin如何实现四大组件的插件化之前,有必要说明一下它对ActivityManagerServiche以及PackageManagerService的Hook方式(以下简称AMS,PMS)。ActivityManager...转载 2018-09-27 10:59:57 · 270 阅读 · 0 评论 -
Hook机制之Binder Hook
Android系统通过Binder机制给应用程序提供了一系列的系统服务,诸如ActivityManagerService,ClipboardManager, AudioManager等;这些广泛存在系统服务给应用程序提供了诸如任务管理,音频,视频等异常强大的功能。插件框架作为各个插件的管理者,为了使得插件能够无缝地使用这些系统服务,自然会对这些系统服务做出一定的改造(Hook),使得插件的开发...转载 2018-09-27 10:51:33 · 496 阅读 · 0 评论 -
Hook机制之动态代理
使用代理机制进行API Hook进而达到方法增强是框架的常用手段,比如J2EE框架Spring通过动态代理优雅地实现了AOP编程,极大地提升了Web开发效率;同样,插件框架也广泛使用了代理机制来增强系统API从而达到插件化的目的。本文将带你了解基于动态代理的Hook机制。代理是什么为什么需要代理呢?其实这个代理与日常生活中的“代理”,“中介”差不多;比如你想海淘买东西,总不可能亲自飞到国外...转载 2018-09-27 10:41:49 · 566 阅读 · 0 评论 -
解决 Android N 7.0 上 报错:android.os.FileUriExposedException
解决 Android N 上 安装Apk时报错:android.os.FileUriExposedException: file:///storage/emulated/0/Download/appName-2.3.0.apk exposed beyond app through Intent.getData()解决方法1、在AndroidManifest.xml中添加如下代码&l...转载 2018-09-18 17:41:28 · 273 阅读 · 0 评论 -
如何在多任务列表中不显示我的app信息
要想在用户长按HOME键后自己的APP不出现在弹出的多任务列表中,可以在相应应用程序的AndroidManifest.xml文件中的activity标签中添加如下属性: android:excludeFromRecents=”true”...原创 2018-10-22 17:02:25 · 3337 阅读 · 0 评论 -
如何避免我的Activity页面被截屏
现在坐地铁上下班,都在用易通行app,果然是很便利,小伙伴儿们再也不用带公交卡了,再也不需要卡里没钱排队充值了。 前段时间坐地铁,突发奇想,既然易通行app是生成二维码给地铁闸口扫码付费的,那么可不可以生成二维码后直接截屏保存图片,就可以卸载易通行了呢?以后每次坐地铁直接找出二维码图片扫码就行了!经过尝试,发现易通行二维码界面根本不能截屏!!并且在多任务里,易通行...原创 2018-10-22 17:09:17 · 1585 阅读 · 0 评论 -
android开发代码仓库地址
jcenter地址http://jcenter.bintray.com/使用配置:buildscript { repositories { jcenter() }}allprojects { repositories { jcenter() }}mavenCentral搜索仓库文件:http://mvnr...原创 2018-10-24 16:07:56 · 2191 阅读 · 0 评论 -
Glide虽好,可不要进坑哦
前段时间遇到这样一个问题,app挂后台,然后activity页面通过glide去加载一张网络图片显示到ImageView上,然后给ImageView设置另外一张图片,然后再把app切换到前台。整个过程大概如下:activity---onStopGlide.with(this).load(url).into(ImageView);...ImageView.setImageResour...原创 2019-07-17 16:45:21 · 735 阅读 · 0 评论 -
android adb命令查看进程和启动activity
查看运行的进程:查看所有进程adb shell ps查看指定包名的进程adb shell ps | grep "com.tencent.qq"强杀正在运行的进程:指定pid强杀:adb shell kill pid指定包名强杀:adb shell am force-stop com.taobao.taobao启动acitvity:adb shell am...原创 2019-01-23 12:01:27 · 8762 阅读 · 1 评论 -
当Glide遇到wrap_content
当ImageView的宽高属性设置为wrap_content时,Glide由于不知道ImageView的实际宽高,所以加载的图片不会做压缩处理,完全按照图片实际大小加载,并且IamgeView的宽高为实际图片的宽高像素值,此时,ImageView控件显示很可能异常。解决方案:1、如果知道ImageView的宽高,直接把wrap_content改成实际大小,如60dp2、加载图片时调用一...原创 2019-01-09 12:05:01 · 3063 阅读 · 0 评论 -
compile、implemention、api、compileOnly的区别
在gradle3.0中,如果我们依然使用compile依赖的话会有如下提示Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’.可见,compile依赖关系已被弃用,被implementation和api替代,同样,provided也被compile only替代。...原创 2019-01-24 11:57:05 · 4799 阅读 · 0 评论 -
Android中的清除数据和清除缓存有什么区别,它们分别清除了哪些文件
清除数据和清除缓存的区别反射调用系统隐藏接口,需要准备的东西:一、在AndroidManifest.xml中的manifest标签下添加声明android:sharedUserId="android.uid.system"二、添加如下权限 <uses-permission android:name="android.permission.DELETE_CACHE_FI...原创 2019-01-11 16:11:49 · 11695 阅读 · 1 评论 -
APK瘦身需要考虑的方面
首先,AndroidStudio2.2以后的版本可以直接把一个apk文件拖拽到as中打开一个apk文件,查看它的内部组成结构,以及各自占用的内存大小。也可在build-analyze apk打开。其中,占用内存从高到低排序显示,通常情况依次为:classes.dex,res,lib,assets,resources.arcs,META-INFO,manifest.xml因此,APK瘦身...原创 2018-11-23 12:22:52 · 188 阅读 · 0 评论 -
自定义View需要注意的事项
1、让View支持wrap_content属性直接继承View或ViewGroup的控件,如果不在onMeasure中做处理,当控件设置wrap_content属性时无法达到预期效果。wrap_content属性会失效。2、让View支持padding属性直接继承View的控件,如果不处理padding属性,则padding会失效。如果继承ViewGroup的控件,还需要处理子元素的m...原创 2018-11-19 11:27:55 · 411 阅读 · 0 评论 -
Android Studio3.0以上版本找不到Android Device Monitor
自Android Studio 3.0开始弃用Android Device Monitor,Android Developers官网上的原话是:Android Device Monitor is a standalone tool that provides a UI for several Android app debugging and analysis tools. Howev...原创 2018-11-16 15:00:09 · 3112 阅读 · 0 评论 -
Git使用总结
写在前面配置:$ git config --global user.name "xxxxxx" $ git config --global user.email "xxxxx@exmple.com"别名:$ git config --global alias.st status$ git config --global alias.co checkout$ git co...原创 2018-07-27 15:25:38 · 635 阅读 · 1 评论 -
android通用Adapter
CommonAdapterpackage com.liang.commonadaper.commonadapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import andro...原创 2018-09-07 15:23:12 · 319 阅读 · 0 评论 -
android利用友盟多渠道打包
一、渠道是android平台各个应用市场的代称,一个渠道代表一个应用市场。例如,360,豌豆荚,应用宝,华为市场,小米市场等等。使用多渠道打包可以统计app在每一个渠道上下载量,利于针对某些渠道加大推广力度。二、多渠道打包原理:为每个平台或者市场的apk指定一个唯一标识符。三、使用友盟多渠道打包技术:a,去官网注册并创建应用,获取appkey省略b,集成友盟SDKapi ...原创 2018-09-03 17:03:46 · 391 阅读 · 0 评论 -
android插件化的一点尝试
插件化目前火的不要不要的,因此作为一个开发人员,十分有必要把这门技术掌握。先从基本的宿主apk中加载插件apk的资源,及调用插件中的方法开始探讨。首先,先总结一下classloader,插件化可离不开这个东西。android中的classloader主要有两个:PathClassLoader 和 DexClassLoader, 前者只能加载当前已安装的apk的class,后者可以加载未安装的插件...原创 2018-04-23 18:34:10 · 175 阅读 · 0 评论 -
DialogFragment代替AlertDialog实现弹出对话框
1、为什么要有DialogFragment?DialogFragment是在3.0版本引入的,既然已经存在了AlertDialog,为什么还要引入DialogFragment呢?它存在的意义是什么?因为DialogFragment和Fragment基本一致的生命周期,当屏幕旋转导致Activity的生命周期会重新调用,此时AlertDialog会消失,如果处理不当很可能引发异常,而DialogFr...原创 2018-04-13 12:06:19 · 1255 阅读 · 0 评论 -
自定义View实现水波纹下载进度效果
attr属性声明文件: 自定WaveView类:package com.baiboss.test.widget;import android.content.Context;import android.content.res.TypedArray;import andr原创 2018-01-23 15:59:43 · 264 阅读 · 0 评论 -
自定义view实现一个游标效果(增强)
继上一篇:自定义view实现一个游标效果,在此基础上新增支持功能:当手指点击某个时间域时,也可以触发游标滑动到当前点击选择的时间域。下面贴代码:package com.baicells.omcserver.view;import android.animation.ValueAnimator;import android.content.Context;import an原创 2017-08-24 14:22:07 · 714 阅读 · 0 评论 -
自定义view实现仿魅族应用下载进度指示
仅仅用于学习圆角进度条与圆角边框的叠加混合效果以及文字颜色跟随进度条颜色自动调整,并未涉及触摸事件,下载百分比更新等。 package com.example.test;import android.animation.ValueAnimator;import android.content.Context;import android.graphics.Canvas;impo...原创 2017-07-26 18:06:15 · 331 阅读 · 0 评论 -
自定义view实现一个游标效果
最近公司的项目中需要一个游标效果控件,可以滑动游标选择相应的时间域。设计效果图如下: 于是乎,决定自己动手实现一下这个效果,也算是复习自定义view相关知识。 首先,自定义属性:attr.xml <declare-styleable name="CursorView"> <attr name="current_bg_color" f...原创 2017-08-22 18:34:47 · 632 阅读 · 2 评论 -
Binder机制总结起来就这一段话
客户端发起远程调用,首先创建方法所需的输入类型parcel对象data,输出类型parcel对象reply,然后把参数写入到data中,接着调用transact方法发起RPC请求,同时当前线程挂起,然后服务端的onTransact会被调用,服务端通过code判断请求的目标方法,接着从data中取出参数,调用目标方法,目标方法执行完毕后向reply中写入返回值,客户端线程继续执行,从reply中取出原创 2017-08-03 16:15:28 · 217 阅读 · 0 评论 -
关于android自定义View时使用paint.setXfermode注意
众所周知,自定义View时使用paint.setXfermode()可以将两张不同的图片进行混合叠加,画出多种效果。应用场景也是十分广泛的,圆角图片,圆形图片,迅雷下载的水波纹进度效果,魅族应用商店下载进度等等。但是如果你发现paint.setXfermode()方法不起作用,你很有可能是没有关闭view的硬件加速,你需要如下操作setLayerType(LAYER_TYPE_SOFTWARE,原创 2017-07-26 12:30:23 · 366 阅读 · 0 评论 -
ScrollView嵌套ListView会发生什么问题
android原创 2017-01-05 18:32:26 · 309 阅读 · 0 评论 -
内存泄漏检测工具LeakCanary的使用说明
1.如果目标工程通过eclipse可以编译通过,可以使用关联工程的方式,将LeakCanary的源码以lib库的方式导入eclipse和目标工程进行关联2.如果在eclipse编译不通过,则可以通过引用jar包的方式,将LeakCanary的jar包导入到目标工程,同时要把LeakCanary中的相关资源导入到目标工程,再进行编译。3.按如下步骤添加LeakCanary到工程中:原创 2017-01-06 14:44:17 · 499 阅读 · 0 评论 -
Android打包时忘记了签名文件的密码
今天发生一件十分坑爹的事,之前维护的一个项目急需发布新版本,但是我竟然忘记了签名文件的密码,别名,别名密码全都忘了,尝试了好几次都不行,于是各种查资料,好在最后找到了解决方案,现记录下来以备不时之需.......首先,贴一下网址:点击打开链接地址:http://maxcamillo.github.io/android-keystore-password-recover/howto.html在这个地...原创 2018-04-13 19:25:52 · 7190 阅读 · 0 评论 -
使用adb命令取出手机中已安装的apk
1、查看手机中安装的apk列表:adb shell pm list package2、根据包名找出apk在内部存储空间的路径:adb shell pm path com.baicells.voip3、使用adb pull命令将apk文件导出:adb pull /data/app/com.baicells.voip-1/base.apk voip.apk4、在dell文件夹下就可以看到导出的apk...原创 2018-05-22 14:32:18 · 23656 阅读 · 2 评论 -
Android屏幕分辨率适配之sw文件生成器
package dimens.utils;import java.io.File;import java.io.FileOutputStream;import java.math.BigDecimal;public class DimenGenerator { private static final int MAX_SIZE = 360; private static fi...原创 2018-08-17 14:55:53 · 1655 阅读 · 0 评论