android
文章平均质量分 92
zhangke3016
喜欢IT,不断进步。
展开
-
Android音视频(二)预览摄像头画面
利用OpenGL生成纹理并绑定到SurfaceTexture上,然后把Camera的预览数据设置到SurfaceTexture中,OpenGL拿到摄像头数据并显示出来。1. 顶点与片元着色器片元着色器:#extension GL_OES_EGL_image_external:requireprecision mediump float;varying vec2 a_position;...原创 2019-05-17 09:53:19 · 411 阅读 · 0 评论 -
动手试试Android Studio插件开发
由于业务关系,经常需要写一些表单页面,基本也就是简单的增删改查然后上传,做过几个页面之后就有点想偷懒了,这么低水平重复性的体力劳动,能不能用什么办法自动生成呢,查阅相关资料,发现android studio插件正好可以满足需求,在Github上搜了一下,找到BorePlugin这个帮助自动生成布局代码的插件挺不错的,在此基础上修改为符合自己需求的插件,整体效果还不错。 发现了android stu原创 2016-11-20 22:30:03 · 4311 阅读 · 3 评论 -
[Android]聊聊ActionMode
最近一段时间都没有更新文章,趁工作之余,更新一篇。今天介绍一个很常见效果也最容易被忽略的弹出框:ActionMode。主要是ActionMode使用和自己使用过程中遇到的一些问题,相对还是比较简单的。1、ActionMode的基本使用 2、使用ActionMode遇到的一些问题1、ActionMode的基本使用 主要分两步: 1、实现ActionMode.Callb原创 2016-11-02 12:34:16 · 2058 阅读 · 1 评论 -
实现仿简书选取内容生成分享图片效果
前几天脑子里忽然闪过简书的图片分享效果,感觉很简洁也很漂亮,想着能不能用自己方式实现一下呢,于是今天就有了这篇文章。好了,先看下效果图吧:项目地址: https://github.com/zhangke3016/GeneratePicture欢迎star、issues~实现这个效果,首先要弄明白几个问题: 一、如何获取选取的网页内容 二、获取的网页内容如何加载显示一、如何获取选取的网页原创 2016-09-23 19:48:12 · 3008 阅读 · 1 评论 -
从无到有打造一个炫酷的进度条效果
今天这篇文章要介绍的是一个酷炫的进度条的设计和实现,在进度的文字内容、颜色以及切换的图片等都可以自由设置。我们先看下效果 (创意受Dribbble的启发):整体效果还是不错的吧,哈哈,我自己还是比较满意的~项目地址已上传至 github ,欢迎star、fork。那么下面我们就开始从无到有实现一下这个酷炫的进度效果吧。 项目地址:SpecialProgressBar。实现思路仔细观察下这个效果,原创 2016-08-12 22:00:43 · 2843 阅读 · 0 评论 -
夜间模式切换的实现库,只需三行代码实现流畅切换
Implementation of night mode for Android. 用最简单的方式实现夜间模式,支持ListView、RecyclerView。项目GitHub地址: https://github.com/zhangke3016/ChangeModePreviewUsage xml android:background="?attr/zzbackground"原创 2016-09-12 19:38:02 · 2171 阅读 · 0 评论 -
深入理解CoordinatorLayout.Behavior
要研究的几个问题 一、Behavior是什么?为什么要用Behavior? 二、怎么使用Behavior? 三、从源码角度看为什么要这么使用Behavior?一、Behavior是什么?为什么要用Behavior?CoordinatorLayout是android support design推出的新布局,主要用于作为视图根布局以及协调子控件的行为,而Behavior就是用于直接子原创 2016-08-21 17:13:29 · 7175 阅读 · 2 评论 -
利用Camera和Matrix实现有趣的卡片效果
这篇文章主要讲解一个翻转切换内容的卡片效果,主要利用Camera和Matrix来实现,主要是为了加深对Camera和Matrix的理解,如果对Camera和Matrix不清楚地童鞋可以看我的上篇文章:Android中利用Camera与Matrix实现3D效果详解 好了,我们先看下效果吧 (效果的灵感来自:Dribbble):项目github地址 欢迎star、fork。实现思路: 一、主要应原创 2016-08-07 17:04:00 · 5327 阅读 · 3 评论 -
Android中利用Camera与Matrix实现3D效果详解
本文行文目录: 一、Camera与Matrix初步认识 二、Camera与Matrix旋转效果拆分介绍 三、Camera与Matrix实现立体3D切换效果【csdn地址:http://blog.csdn.net/zhangke3016/article/details/52093776】一、Camera与Matrix初步认识androi原创 2016-08-02 14:15:40 · 17302 阅读 · 9 评论 -
Android碎裂的粒子效果
最近看到一段时间都没怎么更新文章了,一直在学习iOS相关内容。偶然间看到一个碎裂的粒子效果,觉得很有意思,就查了查,参考下网上的思路自己撸了个轮子。好了,说了这么多,先看看效果吧~依惯例,先说下行文思路吧,首先我们先简单分析下效果,拆分关注点,粒子效果是怎么产生的?我的解决方案就是先获取当前要碎裂的view的缓存视图,然后根据图片获取各个坐标点的颜色值,在整个DecorView盖上一层视图,这个视图原创 2016-12-25 18:53:00 · 4827 阅读 · 2 评论 -
两行代码搞定Android视图扩散切换效果
用最简单的方式来实现Android视图扩散切换效果。一、概述这两天时间动手撸了个视图扩散切换效果的控制器,API兼容至Android4.0,更方便我们在视图切换过程中有炫酷的过渡效果。本来是想实现两个View之间的过渡动画,实现的过程中想到之前写的Activity切换动画,就试着加上了对Activity切换的动画支持。先来看看效果吧,代码实现只需一行,感觉还不错~二、实现思路简单阐述关于过渡动画的原创 2017-01-09 08:32:22 · 5263 阅读 · 3 评论 -
Android音视频(一) OpenGL ES2.0 绘制图片纹理
OpenGL ES是OpenGL的一个子集,它针对移动端或嵌入式系统做了部分精简,而Android系统中集成了OpenGL ES,方便我们通过其接口充分使用GPU的计算和渲染能力。OpenGL ES2.0是基于可编程管线设计。相对OpenGL ES 1.x,OpenGL ES 2.0进行了大变革,更具灵活性,功能也更强大,并且渲染效率更高,效果更好。目前Android对OpenGL ES的支持如...原创 2019-05-13 18:54:06 · 598 阅读 · 0 评论 -
CmProcess 为Android跨进程调用与通信更简洁而生
年后第一发,带来一款更简洁方便的Android进程通信方案。看了网上太多的Binder以及跨进程讲解,最后回到我们自己来进行跨进程通信时发现还是相当繁琐,定义aidl、定义Service、bindService等一系列操作搞得头都大了。CmProcess 可简单轻松解决进程间通信问题,几行代码搞定,任意进程随时注册服务,随时同步获取服务以及支持跨进程的事件总线。介绍CmProcess 更方便...原创 2019-02-17 20:23:37 · 550 阅读 · 0 评论 -
无需Root,无需反编译,用VirtualUETool查看修改任意App的布局参数
UETool是饿了么推出一款开源库,已经出来一段时间了,用来帮助设计师,程序员,测试人员来在APP上修改View的各项参数。使用起来也很方便,但它只能在自己项目里引入依赖来使用,也就是说用它只能查看自己APP的布局位置信息。如果可以用它来查看手机上安装的任意APP,那是不是很酷呢?我们今天的目标就是:扩展UETool让它成为一个SuperUETool。先说下我们超级工具**VirtualUEToo...原创 2019-01-30 10:40:31 · 2057 阅读 · 4 评论 -
自己动手撸一个Handler
一、关于HandlerHandler对于我们Android开发者来说应该是再熟悉不过了,这也是在Android中最重要的消息机制,特别是在面试笔试时,Handler机制也是最常问到的话题。今天我们就来动手撸一个自己写的Handler,用java层代码方式来实现,进一步来了解Handler在线程通信过程中的作用。二、问题Handler机制也可以理解为线程间的消息机制,如果我们自己来设计Handler实原创 2017-07-23 16:29:24 · 2209 阅读 · 0 评论 -
将cglib动态代理思想带入Android开发
动态代理在Android实际开发中用的并不是很多,但在设计框架的时候用的就比较多了,最近在看J2EE一些东西,像Spring,Hibernate等都有通过动态代理来实现方法增强、方法拦截等需要,通过代理的方式优雅的实现AOP编程。我们今天来看看这个代理究竟是什么样子,在Android开发中如何使用它,以及将cglib动态代理思想在Android中看看如何实现。项目地址:MethodIntercept原创 2017-05-08 23:34:35 · 4310 阅读 · 0 评论 -
深入理解Android中Handler机制
对于一位Android开发者来说,对Handler、Looper、Message三个乖宝贝应该再熟悉不过了,这里我们先简单介绍下这三者的关系,之后再用Looper.loop方法做点有意思的事情,加深对运行循环的理解。一、源码理解Handler、Looper、Message通常我们在使用Handler时会在主线程中new出一个Handler来接收消息,我们来看下Handler源码:/** *原创 2017-03-08 08:44:54 · 996 阅读 · 0 评论 -
聊聊对Android视图滚动状态的监听
在官方support.v4包里,提供给我们一个兼容类ViewCompat。ViewCompat里面针对几个版本有不同的实现,根据不同版本进行判断, 但是要注意的是,ViewCompat仅仅让你调用不崩溃,并不保证你调用的结果在不同版本的机器上一致。 ViewCompat代码组织的很优雅,有兴趣可以看它的源码。这几天在看代码时注意到ViewCompat的canScrollVertically和can原创 2017-01-22 08:44:17 · 2471 阅读 · 0 评论 -
深入聊聊Android事件分发机制
在Android开发的过程中,自定义控件一直是我们绕不开的话题。而在这个话题中事件分发机制也是其中的重点和疑点,特别是当我们处理控件嵌套滑动事件时,正确的处理各个控件间事件分发拦截状态,可以实现更炫酷的控件动画效果。一、事件分发机制介绍关于Android事件分发,我们主要分ViewGroup和View两个事件处理部分进行介绍,主要研究在处理事件过程中关注最多的三个方法dispatchTouchEv原创 2017-02-09 23:28:41 · 3069 阅读 · 7 评论 -
更快实现Android多级树形选择列表
快速实现Android多级树形列表,这个库是在鸿洋多级树形列表demo中修改而来。 解决的问题: 1. 支持ID为int类型和String类型。 2. 支持多级复选框选中,使用只需一行代码。 3. 支持动态更新数据并保持原有展开/关闭状态。 4. 支持ListView、RecyclerView。 项目地址:https://github.com/zhangk原创 2017-01-15 15:51:11 · 4610 阅读 · 8 评论 -
自定义控件辅助神器ViewDragHelper
ViewDragHelper作为官方推出的手势滑动辅助工具,极大的简化了我们对手势滑动的处理逻辑,v4包中的SlidingPaneLayout和DrawerLayout内部都有ViewDragHelper的身影,这里对这个强大的辅助工具类使用以及相关方法做个系统性的总结。 全文思路: 一、用ViewDragHelper实现一个简单效果,并对ViewDragHelper使用的常见思路进行总结原创 2016-08-28 20:27:39 · 5225 阅读 · 4 评论 -
解决WebView加载本地文件乱码
???????????????????????????????????????????????WebView??????????????????????????webView ??????loadUrl(),loadData(),loadDataWithBaseURL()?????????????loadUrl(),?????????? ???setDefaultTextEncodingName原创 2016-07-14 13:29:54 · 10418 阅读 · 0 评论 -
字母雨的实现
有段时间没写博文了,前段时间比较忙,这几天闲下来,想着写点东西,脑袋一下就闪过以前学习Android的时候见到的别人实现的黑客帝国的字母雨效果,当时对于小菜鸟的自己,那叫一个膜拜啊,时隔几年,自己实现一下,算是对以前的自己一个交代吧。先看效果: 一、实现原理在实现过程中,主要考虑整个界面由若干个字母组成的子母线条组成,这样的话把固定数量的字母封装成一个字母线条,而每个字母又封装成一个对象原创 2016-07-22 14:31:59 · 8107 阅读 · 5 评论 -
Android Studio系列教程(二)
项目结构当我们新建一个项目的目录结构默认是这样的可以看到和Eclipse的目录结构有很大区别,Studio一个窗口只能有一个项目,而Eclipse则可以同时存在很多项目,如果你看着不习惯可以点击左上角进行切换切换到“project”模式下的目录结构是这样的,我个人也更习惯这种格式和Eclipse的区别有如下:1、Studio中有Project和Module的概念,前面说到Studio中一个窗口只能有转载 2015-12-25 16:46:19 · 754 阅读 · 0 评论 -
Android Studio系列教程(一)
背景相信大家对Android Studio已经不陌生了,Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Google的更新速度也很快,明显能感觉到这是Android开发的未来,那么我们还有什么理由不去拥抱未来呢?虽然推出了很久,但是国内貌似普及的程度并不高,鉴于很多朋友求studio的详细教程,那么今天我就手把手转载 2015-12-25 16:31:21 · 839 阅读 · 0 评论 -
ScrollView和ListView嵌套发生错误的问题
ScrollView和ListView嵌套发生错误的问题 在工作中经常遇到listview顶部或者底部添加多种类的布局,通常尝试用ScrollView添加listView实现效果的做法会发现listview显示不全的情况,这是由于两者嵌套导致了listview没有测量自己的高度,这时需要自定义listview,显式测量listview的高度。public class NoScrollListV原创 2015-12-25 14:31:07 · 936 阅读 · 0 评论 -
ListView不能响应itemclick事件的解决方法
现象:当我们在自己的布局中加入了button或者ImageButton,还有其他比如checkbox,radiobutton等控件时,发现listview不在响应onitemclick事件。发生的原因:当listview中包含button,checkbox等控件的时候,android会默认将focus给了这些控件,也就是说listview的item根本就获取不到focus,所以导致onitemcli原创 2016-01-05 15:08:52 · 1188 阅读 · 0 评论 -
Android中使用Handler造成内存泄露的分析和解决
什么是内存泄露?Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收。也就是说,一个对象不被任何引用所指向,则该对象会在被GC发现的时候被回收;另外,如果一组对象中只包含互相的引用,而没有来自它们外部的引用(例如有两个对象A和B互相持有引用,但没有任何外部对象持有指向A或B的引用),这仍然属于不可到达,同样转载 2016-01-05 13:30:40 · 589 阅读 · 0 评论 -
Android中用注解和反射实现控件的绑定
在日常的Android开发中,经常出现的findViewById()通常让小伙伴们写的很烦躁,一连串重复的代码严重的影响我们的生产力。现在,让我们用一段代码来简化这些烦躁的没有意义的重复吧,废话不多说,直接上代码:/** * 注解findviewById * * @param ctx */ public static void inject(Activity ctx) {原创 2015-11-27 14:11:37 · 966 阅读 · 0 评论 -
自定义View实现雨点洒落效果
自定义View实现雨点洒落效果 最近事情不多,想着写点东西,又不知道写什么好,实现个小效果,娱乐一下,顺带自己也再熟练下自定义view的绘制的相关知识,不说废话,先上图:一、前期分析很明显,上面场景是又一个居中的TextView以及一个个小红点和散开的圆圈构成。在点击上面文本框的时候文本框出现抖动并产生一个小红点,下红点沿预定路径下落,在下落到指定高度时显示散开的波浪效果,同时伴有透明度的变化原创 2016-01-15 16:56:22 · 3159 阅读 · 2 评论 -
NotificationManager和Notification的使用总结
(1)、使用系统定义的Notification以下是使用示例代码://创建一个NotificationManager的引用String ns = Context.NOTIFICATION_SERVICE;NotificationManager mNotificationManager = (NotificationManager)getSystemService(ns);转载 2015-10-09 14:09:07 · 616 阅读 · 0 评论 -
Android AlarmManager设置定时事件提醒
最近用到了AlarmManager,遇到了问题,当我设置多个定时器时,发现只有一个起作用,百思不得其解,后来在网上找到了原因,把人家的解决办法贴上:AlarmManager的常用方法有三个:(1)set(int type,long startTime,PendingIntent pi); 该方法用于设置一次性闹钟,第一个参数表示闹钟类型,第二个参数表示闹钟执行时间,第转载 2015-10-09 13:30:04 · 2660 阅读 · 1 评论 -
Android Studio系列教程(三)
快捷键对于很多Eclipse转过来的同学,不适应的最主要就是快捷键部分了,Studio默认的快捷键和Eclipse差别很大,但是Studio强大的地方在于通过设置你可以一直沿用Eclipse风格的快捷键,这样对于那些Eclipse过渡来的同学省了很多学习成本。Preferences -> Keymap 然后就可以选择你想要的快捷键,这里不止可以选择Eclipse,还可以选择 Emacs、Net Be转载 2015-12-25 16:59:43 · 656 阅读 · 0 评论 -
Android系统更改状态栏字体颜色
Android系统更改状态栏字体颜色 随着时代的发展,Android的状态栏都不是乌黑一片了,在Android4.4之后我们可以修改状态栏的颜色或者让我们自己的View延伸到状态栏下面。我们可以进行更多的定制化了,然而有的时候我们使用的是淡色的颜色比如白色,由于状态栏上面的文字为白色,这样的话状态栏上面的文字就无法看清了。因此本文提供一些解决方案,可以是MIUI6+,Flyme4+,And转载 2016-01-11 09:32:02 · 808 阅读 · 0 评论 -
android开源库发布到jcenter图文详解与填坑
相信很多人都用过开源项目,特别是android studio普及以后,使用开源库更方便简单。而如何上传开源库到jcenter供大家方便使用,虽然网上也有教程,但还是遇坑了,最后总结一下,希望可以帮助大家。【csdn地址: http://blog.csdn.net/zhangke3016/article/details/52075159】 【本文简书地址: http://www.jianshu原创 2016-07-30 21:22:32 · 3457 阅读 · 2 评论 -
Android support library支持包常用控件介绍(一)
谷歌官方推出Material Design 设计理念已经有段时间了,为支持更方便的实现Material Design设计效果,官方给出了Android support design library 支持库,让开发者更容易的实现材料设计的效果。顺便推荐官方的一个图标库:Material Icons 控件名称 NavigationView FloatingActionButton Text原创 2016-06-25 00:27:27 · 10796 阅读 · 5 评论 -
抢红包插件实现原理浅析
抢红包,先看效果图~ 实现自动抢红包,解决问题有两点: 一:如何实时监听发红包的事件 二:如何在红包到来的时候自动进入页面并自动点击红包一、如何获取红包到来的事件为了获取红包到来状态栏的变化,我们要用到一个类:Accessibility 许多Android使用者因为各种情况导致他们要以不同的方式与手机交互。 这包括了有些用户由于视力上,身体上,年原创 2016-06-20 10:19:21 · 11489 阅读 · 7 评论 -
Android 中与 so 有关的一个大坑
Android 应用开发中不可避免的会引入第三方的代码。如果是开源项目风险相对可控,如果引入商用的 SDK 那就要谨慎了,难免会有这样或那样的问题。比如我们今天要说的这一个。对集成过第三方 SDK 的同学,上图中的目录结构应该不陌生。正常情况下我们只需要将不同版本的 so 文件分别放置。但如果我们要集成的这个第三方 SDK 偏偏没有 arm-v7a 的版本呢?是删除 armeabi-v7a 目录只保转载 2016-07-04 16:51:33 · 2621 阅读 · 3 评论 -
android开发要避免的那些坑
SparseArray 目前有很多地方从性能优化方说使用SparseArray来替换hashMap,来节省内存,提高性能。Linkify.addLinks() 这个类可以更方便的为文本添加超链接。ThumbnailUtils 这个类主要是用来处理缩略图相关的,有过这方面需求的,应该是用过这个类的。Bitmap.extractAlpha();返回一个新的Bitmap,capture原始图片的al原创 2016-07-05 15:08:00 · 4500 阅读 · 1 评论 -
Android开发常用工具总结
目录: 什么是AIDL以及如何使用 获取总内存及可用内存 dp、px转换 程序的安装与卸载 根据URI获取真实路径 关闭开启网络 还原短信 横竖屏切换 获取mac地址 获取SD卡状态 获取状态栏和标题栏的高度 获取各种窗体高度 获取内外置存储卡路径 捕获Application全局异常原创 2016-06-15 11:28:01 · 7270 阅读 · 2 评论