- 博客(12)
- 收藏
- 关注
原创 安卓开发之自定义控件TipView仿QQ长按后的提示窗口
先上效果图:之前用手机QQ时,一直很觉得这个窗口提示挺不错的,今天将它大概地实现了一遍。首先是:提示窗口的三角下标是可以改变位置的,然后窗口中有很多小的item,item被点击时会显示出不同的颜色,同时三角下标的颜色也随着改变。然后是:提示窗口的item们会根据传入的坐标实现向上显示或向下显示。一、对TipView定义一些成员变量private static final int STATUS_DOW
2016-09-27 23:22:10 5214 6
原创 安卓开发之自定义粒子旋转动画加载控件
先上效果图:控件可以根据颜色数组的长度来绘制不同数量的小球。小球旋转同时,距控件中心的距离也跟着不断变化。还有个小细节就是,小球的颜色也会随着变化(颜色变为后一个小球的颜色)。一、自定义控件的属性定义了小球的半径、小球偏移控件中心的最大距离和最小距离、动画的执行周期(决定旋转的速度)和一个存放各个颜色的数组(int 数组)。<declare-styleable name="CircleLoading
2016-09-25 00:08:06 4644
原创 安卓开发之自定义动画控件BatteryView(电池加载动画)
前几天在网页上看到一个不错的加载动画View后,想将它在安卓上实现一遍。效果如下,很简单。因为控件实现动画时,更新视图的频率会很高。为了减少内存的占用,决定使用SurfaceView来实现。一、对控件的测量使用的规则是:当控件的宽/高不是固定时,宽/高的大小为默认的宽高+padding值。反之,使用传递过来的宽高。@Overrideprotected void onMeasure(int widt
2016-09-23 12:11:02 4705
原创 安卓开发之getMeasuredWidth和getWidth的区别
一、getMeasuredWidth() : 可以先看一下View / ViewGroup关于 getMeasuredWidth 这个函数的源码:public final int getMeasuredWidth() { return mMeasuredWidth & MEASURED_SIZE_MASK;}其中 mMeasuredWidth 是由我们在View的onMeasure
2016-09-19 17:12:58 1156
原创 安卓开发之ScrollView嵌套ListView的一些问题和解决
在应用开发中,有一些情况需要在ScrollView中嵌套一个或多个ListView来实现,下面主要讨论一些嵌套过程中的问题和一些解决方案。一、ListView的高度不能完全展开这种情况是当ScrollView嵌套ListView时,ListView的高度设置为wrap_content时会产生,一般情况下ListView只显示的第一个Item。正常情况下,高度设置为“wrap_content”的Li
2016-09-15 21:21:26 14988 2
原创 安卓之使用DexClassLoader&AssetManager启动插件的Activity实现功能插件化
前言: 写完 安卓之插件化开发使用DexClassLoader&AssetManager实现功能插件化 通过在宿主Activity中装载插件Fragment来实现功能插件化后, 在网上又看见了一篇比较插件化的文章 探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法 通过偷换Activity上下文的方法启动了插件apk的Activity。 深受启发,所以就写了这遍文章使
2016-09-12 15:58:52 1971
原创 安卓开发之自定义带加载进度的按钮ProgressButton
demo按钮效果图:一、定义ProgressButton的自定义属性在attrs文件中定义ProgressButton的基本属性:主要有进度条颜色、进度条的背景颜色、按钮正常和被点击状态时的颜色、按钮的边角半径和是否显示进度信息。<declare-styleable name="progressbutton"> <attr name="progressColor" format="color
2016-09-10 10:37:45 12610 3
原创 安卓开发之实现控件的贝塞尔曲线路径动画
贝塞尔曲线一般用在绘制canvas图层上,这里主要是ObjectAnimation动画及插值器和估值器实现将贝塞尔曲线作为控件移动的动画路径。项目demo图:一、ObjectAnimator动画原理ObjectAnimator.ofObject(….,”xxx”,估值值,区间数组); 【定义动画属性xxx和区间】插值器/加速器(Interpolator)【返回当前数字进度t】估值值(Eval
2016-09-09 12:01:19 8227 5
原创 安卓之插件化开发使用DexClassLoader&AssetManager实现功能插件化
在360安全卫士一些应用中,有些功能需要添加(下载)后才可以运行,例如360安全卫士中的抢红包功能。 这是因为这些功能被插件化分离出来成一个apk/zip文件,当用户使用这些功能时,再去下载相应的插件(不安装插件apk)来实现功能,当然也可以删除掉插件文件来实现删除功能的效果,实现了功能的热插拨。 Demo项目的效果图:【开始时 主应用本身未实现“红包助手”功能,然后点击按钮“添加并运行”
2016-09-06 23:54:15 1711
原创 安卓之插件化开发使用DexClassLoader&AssetManager来更换皮肤
这篇文章主要使用DexClassLoader来实现插件化更换皮肤,即将皮肤独立出来做成一个皮肤插件apk,当用户想使用该皮肤时需下载(不需要安装)对应的皮肤插件apk效果图【为方便测试,主要通过改变背景图来简单地展示皮肤更换】一、DexClassLoader 如果使用DexClassLoader来实现插件化皮肤更换,我们需要去下载(不需安装)我们的皮肤插件apk:DexClassLoader
2016-09-06 11:08:05 2769
原创 安卓之插件化开发使用PathClassLoader来动态更换皮肤
这篇文章主要使用PathClassLoader来实现插件化更换皮肤 (将皮肤独立出来做成一个皮肤插件apk,当用户想使用该皮肤时需下载对应的皮肤插件)效果图:【主要通过改变背景图来简单地展示皮肤更换】一、PathClassLoader 如果使用PathClassLoader来实现插件化皮肤更换,我们需要去下载并安装我们的皮肤插件apk:Android中有两个ClassLoader分别为
2016-09-04 22:39:35 4281
原创 安卓开发之使用双进程守护和进程提权来实现服务进程保活
一、进程保活 在 如何让我们的Android应用进程保活? 这篇文章里总结了一些进程保活方法,下文以双进程守护和进程提权来保活我们的服务进程。双进程守护: 主要设计AB两个不同服务进程,A进程的服务轮询检查B进程的服务是否存活,没存活的话将其拉起,同样B进程服务轮询检查A进程服务是否存活,没存活的话也将其拉起进程提权 主要设计中调用 startForeground方法将service置为“
2016-09-01 19:37:58 14102 14
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人