Android开发技巧与实战
文章平均质量分 93
介绍关于Android开发的一些高级技巧及实战知识。
貌似掉线
09年入学广东海大。13年12月,离开04013。
展开
-
使用 Drawable 实现图标角标
我在去年曾经写过一篇类似的《使用 Drawable 实现小红点》,但是小红点的具体实现是在这个类里面的。这次是在其思路上进行扩展,使得小红点或者说是角标的样式更加灵活。在一些图标的右上角添加小红点,是我们开发中很常见的场景,比如下图所示,底部 TAB 会有小红点,上面的功能图标也会有小红点。 对于这种需求,我们以往的解决方式通常是使用一个 RelativeLayout,里面再放置...原创 2018-07-26 10:58:13 · 3212 阅读 · 0 评论 -
对读取短信验证码封装库的思考
在我的目前阶段,许多开源项目的产生都是直接来源于项目本身的需求,比如这次要讲的读取短信验证码的封装库。项目目前挂在 github 上的公司组织下,地址为:https://github.com/parkingwang/sms-captcha。使用方法很简单,在界面创建时注册:mCaptchaObserver = SmsCaptcha.with(this) .captcha原创 2018-02-03 22:39:05 · 2666 阅读 · 1 评论 -
一个动态权限库的设计
在经过上一次尝试剖析源码后,我意识到自己并没有一种比较好的方式去讲解代码,从而无法把自己所知道的知识更好地输出。所以接下来,至少在源码讲解有新想法前,我都不会再去尝试,也尽量减少博客中的非核心代码,而以思路及想法为主。另外,我也将尝试改进技术博客的笔法,段落之间尽量连贯,整体内容尽量有节奏感,目标是做到深入浅出地表达出主题相关内容。从 Android 6.0(API 23)开始,用户可以在应原创 2018-01-12 16:07:12 · 2323 阅读 · 1 评论 -
实现 RecyclerView 上拉加载及自动加载
之前在《一步步打造自己的通用上拉加载布局》(如果没有看过,建议先看下这一篇)写到如何实现一个通用的上拉加载布局,本文将基于此进行扩展,实现 RecyclerView 的上拉加载及自动加载。在之前的《一步步打造自己的通用上拉加载布局》已经提到,下拉刷新是将获取到的数据替换掉原有的数据,而上拉加载则是将获取到的数据插入到原来数据的末尾与底部提示加载的 View(如FooterView)之间,它们的展现方原创 2017-12-09 12:58:13 · 3076 阅读 · 0 评论 -
一步步打造自己的通用上拉加载布局
背景下拉刷新是App交互中非常常见的场景,而与其对应的上拉加载,在很多场景中也已经是用户意识中理所当然的一种交互了。在很久之前的项目开发中,就已经有上拉加载的这个需求。但是那时苦于没有找到一个合适的上拉加载的库,而项目迭代又紧,那时自己实现恐时间上来不及或者引入其他bug,就暂时用了秋百万的cube-sdk中的点击加载。 在今年该项目的又一次迭代开发中,由于使用到了RecyclerView,而对应原创 2017-09-24 19:09:22 · 2633 阅读 · 5 评论 -
Android开发技巧——使用RecyclerView实现分组列表
有一个多月没写原创博客了,介绍一下使用RecyclerView来实现分组列表。之所以使用RecyclerView,主要原因还是因为ExpandableListView无法实现设计师所需要的分割线。 本篇内容偏简单,主要是讲如何集成使用。这一使用场景还是相对常见的,较适合初学者进阶。实现原因及效果在上一次的项目版本迭代中,有使用到分组列表,但由于Android自带的ExpandableListVie原创 2017-09-10 18:20:48 · 23341 阅读 · 9 评论 -
Android开发技巧——写一个StepView
在我们的应用开发中,有些业务流程会涉及到多个步骤,或者是多个状态的转化,因此,会需要有相关的设计来展示该业务流程。比如《停车王》应用里的添加车牌的步骤。 通常,我们会把这类控件称为“StepView”。上图的这种设计相对来说还是比较简单的,下面我们以它为例,来一步步写我们的“StepView”。那么,实现这样的一个“StepView”,我们会需要哪些知识呢?所需知识布局测量图形文字绘制文原创 2017-06-02 10:58:00 · 4150 阅读 · 0 评论 -
Android开发技巧——实现设计师给出的视觉居中的布局
本篇主要是对自定义控件的测量方法(onMeasure(int widthMeasureSpec, int heightMeasureSpec)在实际场景中的运用。在移动应用的设计中,经常有这样的界面:某个界面的元素非常少,比如空列表界面,或者某某操作成功的界面,只有一两个像素在中间。但是它们在某个布局里又不是数学上的那个居中,而是经过设计师调出来的“视觉居中”。这种“视觉居中”内部是怎么计算的,我原创 2017-05-06 15:47:54 · 1687 阅读 · 0 评论 -
Android开发技巧——FlingViewPager与RecyclerPagerAdapter
刚才看了一下,距我上次写原创博客已经有三个多月了。当然,这三个多月一直没有去写博客的借口有很多,这次就不赘述了。 本篇讲的是在上次项目开发中封装的两个类,这两个类除了正好是分别继承自ViewPager及PagerAdapter,并没有其他更多的联系,所以我主要是介绍一下它们所涉及到的一些比较实用的开发技巧及知识。FlingViewPager首先说一下我写这个类的场景。在我们的一个项目中,有以下需求原创 2017-04-09 22:35:38 · 1280 阅读 · 0 评论 -
Android开发技巧——使用Drawable实现小红点
在产品的设计中,总难免需要我们开发去实现各种各样的小红点,小红点,小红点。 通常,我们可能会这样做: 用一个View实现小红点,放在相对布局里,设置好内边距或外边距,让它位于图片的右上角。 或者是给图片套一个相对布局,设置好图片的外边距,然后把表示小红点的View放在这个相对布局里面的右上角。这个应该是最简洁直观的实现方法。然而,它也有它的局限之处。比如在我这次的开发当中,一开始只原创 2017-01-05 11:13:01 · 9350 阅读 · 7 评论 -
Android开发技巧——BaseAdapter的另一种优雅封装
RecyclerView虽然因其灵活性、高效性等特点而备受好评,但也不是一定得用它把ListView给替代掉。在某些场景中,ListView还是相对更适合的。比如数据量不大,不频繁更新,并且需要简单地设置一下divider或header、footer的时候,相对于RecyclerView的繁琐,ListView在实现上则更表现得更方便和简洁。过去的封装在使用ListView的过程中,为了复用List原创 2016-12-03 14:20:20 · 4317 阅读 · 4 评论 -
Android开发技巧——设置系统状态栏颜色
开门见山,先来三张效果图: 然后我们再来讲如何实现以及如何快速地实现。如何实现实现设置系统状态栏颜色需要至少在Android 4.4.2(API 19)以上。这是因为,在这个版本以下,没有任何的API可以帮助我们来实现。那么具体如何设置呢?Android 4.4.2实现Android 4.4.2新增了一个特性,即可以设置系统状态栏为半透明。设置方法有两种,一是通过在主题style中添加以下原创 2016-06-22 15:55:24 · 81445 阅读 · 56 评论 -
Android开发技巧——大图裁剪
本篇内容是接上篇《Android开发技巧——定制仿微信图片裁剪控件》 的,先简单介绍对上篇所封装的裁剪控件的使用,再详细说明如何使用它进行大图裁剪,包括对旋转图片的裁剪。裁剪控件的简单使用XML代码使用如普通控件一样,首先在布局文件里包含该控件: <com.githang.clipimage.ClipImageView xmlns:app="http://schemas.androi原创 2016-03-17 12:07:39 · 7931 阅读 · 8 评论 -
Android开发技巧——定制仿微信图片裁剪控件
拍照——裁剪,或者是选择图片——裁剪,是我们设置头像或上传图片时经常需要的一组操作。上篇讲了Camera的使用,这篇讲一下我对图片裁剪的实现。背景下面的需求都来自产品。裁剪图片要像微信那样,拖动和放大的是图片,裁剪框不动。裁剪框外的内容要有半透明黑色遮罩。裁剪框下面要显示一行提示文字(这点我至今还是持保留意见的)。在Android中,裁剪图片的控件库还是挺多的,特别是github上比较流行原创 2016-03-08 16:57:50 · 15021 阅读 · 12 评论 -
Android开发技巧——Camera拍照功能
本篇是我对开发项目的拍照功能过程中,对Camera拍照使用的总结。由于camera2是在api level 21(5.0.1)才引入的,而Camera到6.0仍可使用,所以暂未考虑camera2。文档中的Camera要使用Camera,首先我们先看一下文档(http://androiddoc.qiniudn.com/reference/android/hardware/Camera.html)中是怎原创 2016-03-01 17:58:10 · 27874 阅读 · 15 评论 -
Android开发技巧——高亮的用户操作指南
Android开发技巧——高亮的用户操作指南一不小心成了博客之星的候选人,还有许多朋友帮我投票,无以回报,只能再写一篇以表答谢各位的支持。前面四篇写了关于自定义控件的一些基础知识。在我的理解中,其实做Android开发久了,在项目领域无非是更熟悉业务流程,而在Android的技术领域,基本上是走向两个方向,或是两个方向都走。 一是做界面上的开发,比如各种下拉刷新,酷炫的对话框,各种动效等,这其中有原创 2015-12-10 12:42:04 · 5482 阅读 · 4 评论 -
Android开发技巧——自定义控件之增加状态
在我们学习`<selector/>`的时候,就知道了关于一个视图组件会有许多种状态,比如按下(pressed),选择(selected),可用(enabled),正常状态,其他状态等等。View也处理了关于一个组件在不同状态下的显示的绘制逻辑,通常继承自View的组件都有着以上所说的这些状态。但是也有一些状态是View没有提供的,而我们可能正需要它们,所以就需要对状态进行扩展,增加我们的状态,比如增加checked原创 2015-11-30 14:39:09 · 2782 阅读 · 6 评论 -
Android开发技巧——自定义控件之使用style
Android开发技巧——自定义控件之使用style回顾在上一篇《Android开发技巧——自定义控件之自定义属性》中,我讲到了如何定义属性以及在自定义控件中获取这些属性的值,也提到了关于这些属性除了可以在布局文件中指定之外,也可以在主题中指定。接下来将分享我所了解的关于在主题中指定属性值的两种方式。在主题中指定属性值我们在开发过程中,虽然关于自定义控件学会了如何在布局文件中指定它的值,以应对不同的原创 2015-11-25 15:05:17 · 14392 阅读 · 5 评论 -
Android开发技巧——自定义控件之自定义属性
Android开发技巧——自定义控件之自定义属性掌握自定义控件是很重要的,因为通过自定义控件,能够:解决UI问题,优化布局性能,简化布局代码。上一篇讲了如何通过xml把几个控件组织起来,并继承某个ViewGroup子类,把它们封装起来使用。这是我们接触到的最简单的一种自定制控件了。但许多时候,我们还需要在布局文件中使用它们的时候,能通过属性传入一些值,来影响最终的显示结果。我们在做项目中经常会遇到的原创 2015-11-24 11:02:09 · 6184 阅读 · 7 评论 -
Android开发技巧——自定义控件之组合控件
我准备在接下来一段时间,写一系列有关Android自定义控件的博客,包括如何进行各种自定义,并分享一下我所知道的其中的技巧,注意点等。 今天写第一篇,就先写一下最简单的,也就是我们大概最早接触的一类自定义——组合控件。 这里仅讨论使用布局文件来进行组合控件。原创 2015-11-17 10:34:39 · 5703 阅读 · 1 评论 -
Android开发技巧——实现可复用的ActionSheet菜单
在上一篇《Android开发技巧——使用Dialog实现仿QQ的ActionSheet菜单》中,讲了这种菜单的实现过程,接下来将把它改成一个可复用的控件库。本文原创,转载请注明出处:对于要实现的可复用的控件库,我需要它具备以下两点:可添加远程依赖(不考虑Eclipse中的使用)可灵活配置分离库的实现代码对于第一点,需要做的就是在Android Studio中新建一个library的module原创 2015-06-02 10:25:19 · 8171 阅读 · 0 评论 -
Android开发技巧——使用Dialog实现仿QQ的ActionSheet菜单
最近看到有人用Dialog来实现QQ的仿ActionSheet的自定义菜单,对于自己没实现过的一些控件,看着也想实现一下。于是动手了一下,发现也不难,和大家分享一下。本文原创,转载请注明出处:在这里我也是用Dialog来实现,代码不多,这里说一下实现的过程。菜单的布局文件首先我们写先一下菜单的布局文件,很明显,是一个ListView菜单再加一个取消的Button。<?xml version原创 2015-05-28 10:40:35 · 9577 阅读 · 1 评论 -
Android开发技巧——自定义单选或多选的ListView
这篇其实应该是属于写自定义单选或多选的ListView的基础教程,无奈目前许多人对此的实现大多都绕了远路,反而使得这正常的写法倒显示有些技巧性了。Android中,ListView可以设置choiceMode,可见Android对ListView的单选或多选是有进行封装的,然而我看到的许多单选或多选的ListView,包括我以前写的例子,以前几个老外封装的库,都是自己维护了一个集合,用于存放每个item的选中状态。这样一来,不但代码显得繁复,逻辑上也成冗余,而且容易出BUG。其实,ListView中,已原创 2015-05-20 11:43:22 · 13553 阅读 · 19 评论 -
Android开发技巧——TextView加载HTML的图片及代码显示问题
前几天在做一个Gradle用户指南的应用程序,使用的是TextView来加载HTML内容(至于为什么不用WebView,我也没有认真使用并比较过,也许以后会换吧),其中遇见了一些纠结的问题,所幸主要的问题都一一解决了。下面说一下遇见的几个问题及我的解决方法。TextView异步加载HTML中的图片及图文重叠在TextView中加载HTML图片,需要实现Html.ImageGetter接原创 2014-12-02 09:14:09 · 25063 阅读 · 14 评论 -
android开发技巧——仿新版QQ锁屏下弹窗
新版的qq,可以在锁屏下弹窗显示qq消息,正好目前在做的项目也需要这一功能。经过各种试验和资料查找,终于实现,过程不难,但是却有一些地方需要注意。下面的实现过程。1,使用Activity,而不是ViewQQ的弹窗一开始我以为是悬浮View,用WindowManager去添加,但是无论如果就是不显示,后来换成Activity来实现,在锁屏状态下就能弹窗了。2.Activity原创 2014-10-29 16:50:52 · 30235 阅读 · 34 评论 -
Android开发技巧——使用PopupWindow实现弹出菜单
在本文当中,我将会与大家分享一个封装了PopupWindow实现弹出菜单的类,并说明它的实现与使用。因对界面的需求,android原生的弹出菜单已不能满足我们的需求,自定义菜单成了我们的唯一选择,在本文当中,我将与大家分享如何使用PopupWindow实现弹出菜单。1.弹出菜单的封装PopMenuPopupWindow可以说是一个浮动在Activity之上的容器,通常用来显示自定义的视原创 2014-09-10 12:30:11 · 19958 阅读 · 7 评论 -
Android开发技巧——去掉TextView中autolink的下划线
我们知道,在布局文件中设置textview的autolink及其类型,这时textivew上会显示link的颜色,并且文字下面会有一条下划线,表示可以点击。而在我们在点击textview时,应用将根据我们所设置的类型跳转到对应的界面。但是有时,我们因界面需求,需要去掉界面上显示的下划线,并保持功能不变。如果已经设置了autolink,那么在textview当中再去设置TextPaint为无下划原创 2014-09-09 15:41:11 · 29043 阅读 · 7 评论 -
Android开发技巧——ViewPager衍生出来的2个类
1、不能左右滑动的ViewPager/* * Date: 14-7-28 * Project: Access-Control-V2 */package cn.irains.access.v2.common;import android.content.Context;import android.support.v4.view.ViewPager;import android.原创 2014-08-29 16:44:11 · 2633 阅读 · 0 评论 -
Android开发技巧——实现底部图标文字的导航栏(已更新)
本文章的导航栏代码参考了viewpagerindicator的实现。本文叙述的是之前版本的qq或微信中,底部的图标加文字的导航栏的实现。本例子依赖viewpagerindicator的两个类:IconPagerAdapter及PageIndicator。这两个类的方法如下:package com.viewpagerindicator;public interface IconPag原创 2014-08-27 10:28:18 · 66610 阅读 · 67 评论 -
Android开发技巧——PagerAdapter的再次简单封装
这次再对内容为View的ViewPager的适配器PagerAdapter进行简单的封装,支持List数据和SparseArray的数据,带更新视图功能。首先,先贴上最上面的抽象类代码:/* * Date: 14-8-18 * Project: Access-Control-V2 */package cn.irains.access_control_v2.common;impo原创 2014-08-25 08:42:19 · 8506 阅读 · 1 评论 -
Android开发技巧——PagerAdapter实现类的封装
ViewPager是android的support库中的一个控件,也是一个在许多应用开发中都用得比较多的控件。目前为止,对ViewPager的使用,我一般是用ViewPager + Fragment的组合,偶尔也有ViewPager加View的组合。关于ViewPager + Fragment的使用,已经有FragmentAdapter的实现可以帮助我们快速进行开发了,但是每次使用ViewPage原创 2014-08-18 15:48:36 · 12058 阅读 · 2 评论 -
Andriod开发技巧——Fragment的懒加载
我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个fragment都需要去加载数据,或从本地加载,或从网络加载,那么在这个activity刚创建的时候就变成需要初始化大量资源。这样的结果,我们当然不会满意。那么,能不能做到当切换到这个fragment的时候,它才去初始化呢?答案就在Fragment里的setUserV...原创 2014-07-30 15:48:52 · 73819 阅读 · 51 评论