【Android进阶】
文章平均质量分 79
Angelica0520
Android、Java、Kotlin、Flutter、HarmonyOS、Python等技术
展开
-
探索生成有数字的图片以及在图片的右上角画小圆形状态标志等
在Android开发中经常需要图标上以及甚至在应用图标的快捷方式上显示数字,表示未读消息数以及在以及在某条信息右上角标志小圆形,表示这条消息是未读的状态等等,之前对此内容不熟悉的时候也表示困扰,现在对图片一些操作也写在一个工具类中,以方便调用。按照惯例先来看一下最终效果图:BitmapUtil.classpackage com.xiaolijuan.bitmapdome原创 2016-01-20 00:22:47 · 3371 阅读 · 0 评论 -
Android 仿美团网,探索ListView的A-Z字母排序功能实现选择城市
记得在我刚开始接触到美团网的时候就对美团网这个城市定位、选择城市功能很感兴趣,觉得它做得很棒。有如下几个点: 一:实现ListView的A-Z字母排序功能 二:根据输入框的输入值改变来过滤搜索结果,如果输入框里面的值为空,更新为原来的列表,否则为过滤数据列表 三:汉字转成拼音的功能,很多时候实现联系人或者城市列表等实现A-Z的排序功能,我们可以直接从数据库中获取他的汉字拼音,而对于一般的数据,原创 2016-03-02 00:14:01 · 11086 阅读 · 15 评论 -
探索SwipeRefreshLayout配合自定义ListView完成下拉刷新、滑到底部自动加载更多
在Android开发过程中经常需要实现上下拉刷新功能,Google推出的下拉刷新控件SwipeRefreshLayout(彩虹条),由于官方版本只有下拉刷新而没有上拉加载更多的功能,很多人也尝试在这个基础上进行改写。今天尝试一下使用SwipeRefreshLayout配合自定义ListView实现下拉刷新、滑到底部自动加载更多的功能。效果图如下所示,在进入页面的时候加载自动刷新,滑到底部自动加原创 2015-12-12 23:58:35 · 3901 阅读 · 1 评论 -
探索PinYin4j.jar将汉字转换为拼音的基本用法
将汉字转换为拼音在Android开发中是个很常见的问题。例如:在Android手机应用开发中,要查询联系人的姓名,通常都是用拼音进行查询的。 Pinyin4j是一个功能强悍的汉语拼音工具包,是sourceforge.net上的一个开源项目。 主要的功能有: - 支持同一汉字有多个发音 - 支持拼音的格式化输出,比如第几声之类的 - 支持简体中文、繁体中文转换为拼音 首先,在And...原创 2016-02-24 13:58:29 · 23257 阅读 · 4 评论 -
Android Design新控件之TextInputLayout(文本输入布局)
谷歌在推出Android5.0的同时推出了全新的设计Material Design,谷歌为了给我们提供更加规范的MD设计风格的控件,在2015年IO大会上推出了Design支持包,Design常用的新控件包括:TextInputLayout(文本输入布局)TabLaout(选项卡布局)SnackbarFloatingActionButton(浮动按钮)NavigationView(导航视图原创 2016-08-22 00:25:52 · 7776 阅读 · 3 评论 -
Android 仿美团网,探索使用ViewPager+GridView实现左右滑动查看更多分类的功能
不记得什么时候,我留意到到美团网首页有使用ViewPager+GridView实现左右滑动查看更多分类的一个功能,感觉它很有趣,于是想着自己动手也实现这样一个功能,和往常一样,主要是想总结一下我在学习过程中的一些笔记以及需要注意的地方。 其中需要注意的有如下几个点: 一:使用GridView作为每个ViewPager的页面,也就是说每个ViewPager的页面都是inflate出一个GridV原创 2016-09-14 12:00:03 · 7253 阅读 · 21 评论 -
Android 自定义View之边缘凹凸的优惠券效果
本篇文章讲的是自定义View之边缘凹凸的优惠券效果,之前有见过很多优惠券的效果都是使用了边缘凹凸的样式,碰巧也看到这么一篇文章:http://blog.csdn.net/yissan/article/details/51429281,感谢^_^!和往常一样,主要总结一下在自定义View的开发过程中需要注意的一些地方。按照惯例,我们先来看看效果图 一、写代码之前,我们先要弄清楚view的启动过程:原创 2016-09-27 17:01:05 · 3096 阅读 · 3 评论 -
Android 仿今日头条的视频播放控件(几行代码快速实现)
前段时间由于项目需要用到类似于今日头条的视频播放器,实现在线播放,边缓存边播放,当然也可以播放本地文件,如下图: 这里我推荐大家使用的是jiecaovideoplayer开源库,这个库的播放引擎是ijkplayer,它调用ffmpeg, 原项目GitHub地址:https://github.com/lipangit/JieCaoVideoPlayer 一、项目引入: 1、添加类库compi原创 2016-12-04 16:46:20 · 16015 阅读 · 5 评论 -
Android RxBus的使用
RxBus的核心功能是基于Rxjava的,在RxJava中有个Subject类,它继承Observable类,同时实现了Observer接口,因此Subject可以同时担当订阅者和被订阅者的角色,这里我们使用Subject的子类PublishSubject来创建一个Subject对象(PublishSubject只有被订阅后才会把接收到的事件立刻发送给订阅者),在需要接收事件的地方,订阅该Subje原创 2017-06-08 12:34:11 · 3660 阅读 · 1 评论 -
Kotlin 自定义View之实现标尺控件(选择身高、体重等)
本篇文章讲的是Kotlin 自定义view之实现标尺控件Ruler,以选择身高、体重等。开发中,当我们需要获取用户的身高和体重等信息时,如果直接让他们输入,显然体验不够好。像类似于唯品会、好轻等APP都是使用了类似于刻度尺的控件让用户滑动选择身高体重,觉得很棒的。网上已有人使用Java语言实现这样的功能,但不影响我对其的学习。和往常一样,主要还是想总结一下自定义view之实现标尺控件的开发过程以及...原创 2018-05-13 11:41:18 · 2821 阅读 · 0 评论 -
Android 6.0动态权限申请
6.0权限的基本知识,以下是需要单独申请的权限,共分为9组,每组只要有一个权限申请成功了,就默认整组权限都可以使用了。 group:android.permission-group.CONTACTS permission:android.permission.WRITE_CONTACTS permission:android.permission.GET_ACCOUNTS...原创 2018-06-10 14:28:17 · 535 阅读 · 0 评论 -
Android 自定义可展开的ExpandTextView
一、概述 可折叠的textview是一个很常见的功能,相信大家都在微信朋友圈体验过这种场景:朋友发的笑话都只有半截,下面是一片白色,你要展开全文之后才能知道最后结果。 其实这也不是什么高大上的东西,按照惯例,我们先来看看效果图 : 二、按照流程我们就开始来看看代码啦 1、ExpandTextView:package per.lijuan.expandtextviewdome;...原创 2018-07-01 12:46:52 · 4056 阅读 · 2 评论 -
Android 自定义View实现环形带刻度的进度条
本篇文章讲的是自定义View实现环形带刻度的进度条。和往常一样,主要还是想总结一下自定义View实现环形带刻度的进度条的开发过程以及一些需要注意的地方。 按照惯例,我们先来看看效果图 一、我们如何来实现这样一个环形刻度进度条: 首先,需要绘制一个灰色的环形刻度尺底图,来作为未填充时的进度条; 然后,根据传入的当前进度值,绘制填充时的进度圆弧; 其次,根据进度值绘制文字提示; 最后...原创 2018-06-19 23:36:42 · 5775 阅读 · 0 评论 -
Android 扫一扫,绘制指定区域透明区域
一、概述 在实现扫一扫的功能的时候,我们需要绘制一个中间为透明的扫码框,其余部分为半透明。通常情况下,例如微信或者支付宝的扫码框都是矩形的,如果中间的扫码框是一个矩形,那么布局是很简单的,可是如果扫码框是一个圆角矩形,或者圆形等情况怎么办呢?这篇文章主要是记录绘制一个中间透明带圆角的矩形。按照惯例,我们先来看看效果图 : 二、按照流程我们就开始来看看代码啦 1、CustomDr...原创 2018-07-22 21:38:54 · 3446 阅读 · 0 评论 -
RxJava 理解Backpressure并解决异常 rx.exceptions.MissingBackpressureException
开门见山,下面我们先用代码演示一下这种崩溃的场景:private Subscription subscribe; /** * 间隔时间1ms发送一次 */ private void start() { if (subscribe == null || subscribe.isUnsubscribed()) { //被...原创 2018-07-27 17:00:19 · 2670 阅读 · 0 评论 -
Android CoordinatorLayout打造酷炫的顶部栏
CoordinatorLayout常常与AppBarLayout和CollapsingToolbarLayout一起使用,用于打造各种炫酷效果的顶部栏。之前写过一篇Android 实现酷炫的顶部栏,不过要注意的是这次我们用到Androidx,原因是Google 发布了 Android support library 28,同时也发布了 androidx 1.0.0 第一个正式版本,然后支持库的 “...原创 2019-07-08 17:26:21 · 12812 阅读 · 2 评论 -
Android 仿微博,探索使用ShortcutManager添加应用程序的快捷方式
在Android 7.1(API 25)之后添加的新功能,应用快捷方式。ShortcutManager管理一个应用程序的快捷方式。只要在长按应用图标的情况下,在应用图标上显示的快捷方式,用户可以快速访问任意一个Activity。现在市场上已经是有很多应用增加了这项功能,如:微博、美团、支付宝、知乎、印象笔记等。按照惯例,我们先看看效果图:一、快捷方式的特点(1)静态方式(2)动态方式二、...原创 2019-07-09 19:41:12 · 979 阅读 · 0 评论 -
Android 使用ListView的A-Z字母排序功能实现联系人模块
在上一篇文章当中,主要学习了ListView的A-Z字母排序功能以及根据输入框的输入值改变来过滤搜索结果,如果输入框里面的值为空,更新为原来的列表,否则为过滤数据列表,包括汉字转成拼音的功能,如果你还没看过的话上一篇文章的话,可以点击:Android 仿美团网,探索ListView的A-Z字母排序功能实现选择城市。其实对联系人和城市列表等实现A-Z的排序的实现原理都差不多。我只是在上一篇文章的基础上原创 2016-03-02 16:51:53 · 10234 阅读 · 14 评论 -
Android 网络通信框架Volley的二次封装
在android开发中不可避免地需要用到网络访问,多数情况下会使用HTTP协议来发送和接收网络数据。Android系统中主要提供了两种方式来进行HTTP通信:HttpURLConnection和HttpClient。HttpURLConnection和HttpClient的用法还是稍微有些复杂,如果没有进行封装的话,很容易写出不少重复代码。这时就出现很多Android网络通信框架,比如AsyncHt原创 2016-04-02 18:31:09 · 3707 阅读 · 2 评论 -
Android 实现酷炫的顶部栏
AppBarLayout 是继承LinerLayout实现的一个ViewGroup容器组件,它是为了Material Design设计的App Bar,支持手势滑动操作的,不过经常与Toolbar、CoordinatorLayout以及CollapsingToolbarLayout等一起配合使用,在说到AppBarLayout之前,我们先简单学习一下Toolbar。和往常一样,主要还是想总结一下我在原创 2016-08-31 22:47:46 · 7121 阅读 · 2 评论 -
Android 带清除功能的输入框控件EditTextWithDel
记录下一个很实用的小控件EditTextWithDel,就是在Android系统的输入框右边加入一个小图标,点击小图标可以清除输入框里面的内容,由于Android原生EditText不具备此功能,所以要想实现这一功能我们需要重写EditText。 效果图如下: 主要的思路就是为右边的图片设置监听,点击右边的图片清除输入框的内容并隐藏删除图标,因为我们不能直接给EditText设置点击事件,所原创 2016-02-29 00:28:03 · 5327 阅读 · 2 评论 -
探索广播接收器的使用
BroadcastReceiver(广播接收器)是Android中的四大组件之一,专注于接收广播通知信息,并做出对应处理的组件。广播接收主要有两种,一种是用户发送的广播,另外一种是系统的广播消息的接收,包括用户来电、用户短信和拦截黑名单电话等。这里我们所要说的广播接收是监听我们自己注册的普通广播的一个接收。使用广播接收需完成: (1)注册广播:注册方式有两种,一种是在原创 2016-01-21 00:25:10 · 2280 阅读 · 0 评论 -
Android中Intent传递类对象的方法一(Serializable)
Activity之间通过Intent传递值,支持基本数据类型和String对象及它们的数组对象byte、byte[]、char、char[]、boolean、boolean[]、short、short[]、int、int[]、long、long[]、float、float[]、double、double[]、String、String[],还有实现了Serializable、Parcelable接口原创 2016-04-04 00:38:05 · 3763 阅读 · 0 评论 -
Android AsyncTask基础
AsyncTask是Android为了简化异步操作而封装的异步任务操作抽象类。当我们需要在程序中执行耗时的异步操作时,我们可以考虑使用AsyncTask来实现。AsyncTask的使用比较简单,由于AsyncTask是一个抽象类,我们需要写一个类来继承AsyncTask,继承AsyncTask需要指定三个泛型参数,参数分别表示为:(1)Params:在执行AsyncTask时需要传入的参数,比如我原创 2016-03-05 01:18:37 · 1991 阅读 · 2 评论 -
Android中Intent传递类对象的方法二(Parcelable)
上一篇博客写到了通过Serializable方式实现序列化的方法,没有看过的可以点击Android中Intent传递类对象的方法一(Serializable),现在我们接着介绍另一种序列化方式:Android中Intent传递类对象的方法二(Parcelable),Parcelable也是一个接口,只要实现了这个接口,一个类的对象就可以实现序列化并通过Intent和Binder传递。 下面看一下实原创 2016-04-04 15:50:40 · 5489 阅读 · 0 评论 -
Android 通过注册广播,实时监听网络连接与断开状态的变化
很多时候我们都需要实时监听网络状态,当网络状态发生变化之后立即通知程序进行不同的操作。 监听广播的两种方式: (1)在AndroidManifest.xml配置文件中声明<receiver android:name=".NetworkConnectChangedReceiver" > <intent-filter> <action and原创 2016-05-27 23:42:04 · 24348 阅读 · 2 评论 -
Android实现倒计时之使用CountDownTimer
在开发中会经常用到倒计时这个功能,包括给手机发送验证码等等,之前我的做法都是使用Handler + Timer + TimerTask来实现,现在发现了这个类,果断抛弃之前的做法,相信还是有很多人和我一样一开始不知道Android已经帮我们封装好了一个叫CountDownTimer的类。从字面上就可以看出来它叫倒数计时器又称定时器或计时器,采用Handler的方式实现,将后台线程的创建和Handle原创 2016-06-03 00:12:51 · 26546 阅读 · 0 评论 -
Android Studio中ButterKnife插件的安装与使用
最近用到Android Butterknife Zelezny插件,感觉特别棒!在Android开发过程中,我们会写大量的初始化控件和设置控件点击事件的操作,这样简单而重复的工作让人觉得麻烦而且没意思,所以可以采用注解的方式去实现,而ButterKnife则是注解中相对简单易懂的很不错的开源框架。一、Android Studio中安装ButterKnife插件: (1)和安装其他插件一样,首先,打原创 2016-07-07 15:22:53 · 6148 阅读 · 7 评论 -
Android 自定义View之随机生成图片验证码
本篇文章讲的是Android自定义View之随机生成图片验证码,开发中我们会经常需要随机生成图片验证码,但是这个是其次,主要还是想总结一些自定义View的开发过程以及一些需要注意的地方。按照惯例先看看效果图: 一、先总结下自定义View的步骤: 1、自定义View的属性 2、在View的构造方法中获得我们自定义的属性 3、重写onMesure 4、重写onDraw 其中onMesure方原创 2016-06-13 19:36:40 · 5648 阅读 · 8 评论 -
Android 自定义ListView,解决嵌套ListView的显示不完全的问题
本篇博客和上篇博客自定义GridView,解决嵌套Grideview的显示不完全的问题原理是一样的,同样在这里也自定义一个ListView组件继承于原来的ListView,重写onMeasure方法重绘组件,然后替换布局文件中ListView布局即可。package com.pumasoft.cakeboss.widget;import android.content.Context;import原创 2016-04-02 16:56:40 · 3752 阅读 · 0 评论 -
Android 自定义GridView,解决嵌套Grideview的显示不完全的问题
解决嵌套Grideview的显示不完全的问题,在这里自定义一个GridView组件继承于原来的GridView,重写onMeasure方法重绘组件,然后替换布局文件中GridView布局即可。package com.pumasoft.cakeboss.widget;import android.content.Context;import android.util.AttributeSet;im原创 2016-04-02 14:18:55 · 3762 阅读 · 1 评论 -
探索Android调用系统的分享功能
很多的应用为了应用的推广和传播都会使用“分享”的功能,点击分享按钮,就能将想要分享的内容或者图片分享至QQ空间、微博、微信朋友圈等实现了分享功能的应用。这篇文章主要是为了学习与探索调用系统实现分享功能或者直接调起实现了分享功能的应用的activity来进行分享。目前实现一键分享功能的方式有两种:1.需要集成第三方官方SDK包,在获得官方授权后调用其API来完成一键分享功能,例如原创 2016-01-15 23:16:22 · 11817 阅读 · 17 评论 -
Android 自定义ViewGroup之实现FlowLayout-标签流容器
本篇文章讲的是Android 自定义ViewGroup之实现标签流式布局-FlowLayout,开发中我们会经常需要实现类似于热门标签等自动换行的流式布局的功能,网上也有很多这样的FlowLayout,但不影响我对其的学习。和往常一样,主要还是想总结一下自定义ViewGroup的开发过程以及一些需要注意的地方。按照惯例,我们先来看看效果图 一、写代码之前,有几个是问题是我们先要弄清楚的: 1、什原创 2016-06-16 18:40:58 · 7436 阅读 · 4 评论 -
Android Design新控件之TabLaout(二),仿微信实现App底部Tab布局
TabLayout的两种常见设计布局:顶部标签页(如今日头条,知乎)底部菜单栏(如微信主界面)其中上一篇文章中讲到了Android Design新控件之TabLaout(一),快速打造一个滑动标签页,接着接着举例使用TabLayout+ViewPager来简单实现一个类似于微信等App底部菜单栏布局,按照惯例,我们先来看看简单的效果图: 1、和上一篇文章一样,我们需要在应用的build.g原创 2016-08-26 10:54:00 · 7768 阅读 · 5 评论 -
Android Design新控件之TabLaout(一),快速打造一个滑动标签页
在Android开发中很常见的布局设计大概是使用滚动的标签指示器和滑动的内容页面了,我们的做法通常就是在ViewPager的上方放一个标签指示器与ViewPager进行联动。以前,我们大多使用的是GitHub上的开源框架PagerSlidingTabTrip。Google在Support Design包中发布了一些列新的控件,其中就包括TabLayout以替代开源库PagerSlidingTabSt原创 2016-08-27 17:04:29 · 5667 阅读 · 3 评论 -
探索Android Material Design 中的Tint(着色)
很多天以前看到鸿洋大神公众号推出的一篇文章:安卓着色器(tint)使用实践,开始接触Tint这个属性,Tint翻译为着色,用于对视图进行颜色渲染。和往常一样,主要还是想总结一下我在学习过程中的一些笔记以及一些需要注意的地方。一、Tint的作用 Tint的存在一定程度上减少了我们对图片的需求以及apk的大小,我们拿ImageView来说吧,假如它的背景图有两种,一种是默认情况下需要显示的是背景图片1原创 2016-08-21 12:57:33 · 7928 阅读 · 0 评论 -
Android 仿Keep,探索向上滑动时PopupWindow向右退出消失,向下移动时PopupWindow向左推出出现
这篇文章主要是仿Keep,通过监听ScrollView滚动事件和滚动状态(开始、停止)来实现向上滑动时PopupWindow向右退出消失,向下移动时PopupWindow向左推出出现的功能,感觉很有趣,于是想着自己动手也实现这样一个功能,和往常一样,主要是想总结一下我在学习过程中的一些笔记以及需要注意的地方。现在我们先来看看Keep的效果图:(待上传)再来看一下我们最终效果图:(待上传)...原创 2019-09-26 19:10:06 · 1347 阅读 · 0 评论