
android
文章平均质量分 57
huidawoxiaozi
这个作者很懒,什么都没留下…
展开
-
android 时间选择器
最近项目里要做个时间选择器,网上看了很多demo,自定义view学习很久了,自己打算做一个。.废话不多说,先了解下大概思路吧。首先要知道界面可滑动(这不废话吗),滑动到最大距离和最小距离自动弹回,滑动的总距离对item取余得到距离如果大于二分之一item则继续滑动剩余的长度,否则回弹到原来的位置;主要就是利用Scroller和scrollby来是界面滑动,剩下就是一些距离计算和逻辑处理,看代码吧;原创 2016-02-03 15:45:12 · 710 阅读 · 0 评论 -
Android带你了解热修复
热修复的简单实现热修复没你想的那么难,只要了解了热修复的原理,你也可以轻轻松松自己实现个简单的热修复demo。我们在实现热修复功能前,先要了解几个类的关系和作用,classLoader、BaseDexClassLoader、DexclassLoader、PathClassLoader、DexPahtList、Elements。我画了一张流程图阐述了它们的关系。DexclassLoader和P...原创 2019-05-05 21:39:36 · 547 阅读 · 0 评论 -
我们自己也可以实现像retrofit那样以注解的方式建立接口
看过retrofit源码的同学都知道retrofit框架用到了很多设计模式,而且refrofit比较新颖的地方就是以注解的方式建立接口,其实它就是运用了动态代理模式,拿到Method这个对象去解析注解之后封装起来。动态代理设计模式在java设计模式中还是比较重要的,比如说插件化中hook思想也是在动态代理模式中去完成的。我们也简单的通过动态代理模式去实现像retrofit那样的效果。首先我们也建...原创 2019-05-06 19:20:55 · 204 阅读 · 0 评论 -
android实现对apk资源文件整体替换
上一篇文章中我们实现了对资源文件的替换,但是有一个问题,就是得创建一个resource对象并使用这个resource对象才能实现对资源的替换,很麻烦,需要每个类去重写getResource方法。通过阅读framwork层源码发现ContextImpl类的构造方法中实现了对resource的赋值操作。 private ContextImpl(ContextImpl container, Acti...原创 2019-05-14 21:20:27 · 5744 阅读 · 2 评论 -
通过hook思想拦截系统APi(startActivity)并跳转到没注册过的Activity
hook俗称钩子可以对系统api进行拦截做一些自己的操作,如何拦截我们android中的startActivity方法呢,并且在不注册activity的情况下去启动activity。首先我们先看下startActivity方法是怎样调用的吧。、点开startActivity方法我们发现先重写了startActivity@Override public void startActivit...原创 2019-05-07 20:36:18 · 897 阅读 · 0 评论 -
android实现自定义seekbar,重新绘制background、secondaryProgress、progress进度条、滑块thumb
原生的seekbar,设置progressDrawable可以改变seekbar进度条的样式,例如如下样式。<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:i...原创 2019-06-05 14:02:00 · 6793 阅读 · 1 评论 -
Android 自定义可滚动导航栏
先上效果图:现在很多新闻类型的app,例如头条app都有图上的导航栏效果。看似一个简单的效果,实际上用到了很多知识点,例如动态创建布局,动态给控件设置宽高、滑动效果、滑动惯性效果、事件分发等。其实用横屏的scrollview也能实现类似的效果,但是总觉得用现成的控件实现起来没多大意思,也锻炼不了开发能力。所有我们通过自定义的方式去实现,装逼效果可达到满分。当我们设置宽度控件为wrap_co...原创 2019-06-21 21:44:09 · 1160 阅读 · 2 评论 -
Android 如何用profiler检查内存泄漏
工具版本:AndroidStudio版本3.4gradle版本5.1.1原创 2019-07-25 18:49:49 · 1333 阅读 · 0 评论 -
动态圆形进度条
旋转进度条圆形旋转进度条,外圆弧颜色渐变,内圆弧是两张颜色不一样图案一样的图片,要动态切割画布切成一个圆弧形。在view里实现图片叠加的效果有两种方式,一是通过画笔的paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN))方法去改变porterDuff.Mode的模式,PorterDuff图片叠加的模式有16种之多,有...原创 2019-04-20 13:18:24 · 617 阅读 · 0 评论 -
可旋转的圆形菜单栏
可旋转的圆形菜单栏一个圆形的可旋转的菜单栏。功能:可动态添加菜单view,菜单view随着手势的旋转而旋转,菜单view可点击。自定义一个RelativeLayout,添加的菜单view被放置在一个圆形轨迹中,随着手势旋转而旋转。代码:动态添加菜单view private List<View> list = new ArrayList<>(); public...原创 2019-04-15 13:57:03 · 1304 阅读 · 0 评论 -
Activity被系统销毁造成的Fragment混乱的问题
大多数App主页底部都会有几个tab页面,用Activity+Fragment或者Activity+Vierpager+Fragment来管理Tab页面(由于viewpager的加载机制所以不会出现这个问题),当程序长期在后台由于系统资源不足就把MainActivity回收了或者从MainActivity点进去的activity报错了点击back回到MainActivity fragment也会混原创 2016-09-07 17:06:30 · 4234 阅读 · 5 评论 -
仿NestedScrollingParent嵌套滑动
用CoordinatorLayout很方便实现嵌套滑动,今天我们就用原始的套路自定义View来实现嵌套滑动功能,下次直接用CoordinatorLayout来实现。 先看下实现的效果: 先简单分析下思路:向上滑动时,当滑动高度没有超过头部的时候,滑动事件是被父类消费的,直到滑动的高度头超过头部的时候,滑动事件才传递给它的子view(这里是listview),此时选项按钮布局被固定在顶端。这时候l原创 2016-10-18 18:49:01 · 580 阅读 · 0 评论 -
实战CoordinatorLayout+Toolbar,CoordinatorLayout+CollapsingToolbarLayout
先看下两个效果图: 使用这些新控件gradle条件:compile 'com.android.support:appcompat-v7:24.2.1'compile 'com.android.support:support-v4:24.2.1'compile 'com.android.support:design:24.2.1'compile 'com.android.suppor原创 2016-10-24 15:48:06 · 827 阅读 · 0 评论 -
volley源码的简单分析(1)
先看着句代码**RequestQueue queue = Volley.newRequestQueue(MainActivity.this);**都干了什么。当版本大于9时会创建HurlStack,它主要是对HttpURLConnection请求的封装 。小于9创建HttpClientStack,它是对HttpClient的封装。BasicNetwork对HttpStack进行管理,由Basic原创 2016-09-23 16:49:52 · 293 阅读 · 0 评论 -
RecyclerView三种布局下的上拉加载 下拉刷新
源码地址recyclerview已经代替了listview,它可以实现线性、网络、瀑布流三种样式的局部,很方便使用。但是它没有listview可以添加头部和底部的方法,那上拉加载、下拉刷新怎么实现呢,还好它可以通过viewType来选定在某个特定位置显示对应的布局。我这里指定了四种类型,header、item、footer、endView(没有更多显示的布局)。如何方便的让getItemViewTy原创 2016-11-04 16:27:18 · 3935 阅读 · 1 评论 -
Asynchttpurlconnection 网络框架 (HttpURLConnection+newCachedThreadPool)
看过git上volley和asynchttpclient网络框架的源码好长时间了,打算自己弄个网络框架是基于HttpURLConnection+newCachedThreadPool,目前httpclient已经被淘汰了,盛行的是HttpURLConnection,像volley和okhttp都主打HttpURLConnection,所以我弄了这个框架。框架结构相对来说比较简单:Request、Re原创 2016-11-24 17:37:07 · 572 阅读 · 0 评论 -
MVP+Rxjava+Retrofit网络框架
先来简单了解下mvp模式,mvp是由model、view和presenter构成。model负责处理数据模型,view负责给视图控件view提供接口,presenter将model和view联系起来。如图: retrofit对okhttp进行了封装,简化了好多代码,不得不说,真是很棒!我这里主要用retrofit进行网络请求,用rxjava处理网络请求的回调;这是我的项目目录: 如何单独的使用r原创 2017-03-28 17:34:07 · 400 阅读 · 0 评论 -
使用IJKPlayer播放视频实现了一些播放视频的基本操作
使用IJKPlayer播放视频实现了一些播放视频的基本操作Iijkplayer目前是很流行的音视频框架,集成我这里就不多说了,网上很多,大概就是编译ijkplayer的源码得到里边的so文件,添加到自己项目的libs文件夹中,gradlle依赖下资源。我这里是在IjkVideoView基础上开发的,自己实现了播放、暂停、旋转全屏播放、音量和亮度调节、进度条、拖动进度条播放功能,可以满足普通的播放...原创 2019-04-02 14:42:03 · 4835 阅读 · 1 评论 -
如何通过自定义线程池去实现一个简单的图片ImageLoader
话说接触自定义线程池的时候还是几年前用Volley框架的时候,当时就注意到了一个东西叫队列,后来在实际开发中也没有用到相关的东西,只是写过简单的demo而已,现在各种框架很成熟,用多了就缺少了动手能力,所以我就简单了实现了这个框架。整成思路是:默认创建了5个线程,通过LinkedBlockingQueue去管理线程执行请求,当没有任务时等待执行任务,当有任务来的时候就去执行线程,当任务超过时就排...原创 2019-10-09 21:00:21 · 229 阅读 · 0 评论