Android开发与技术探索
文章平均质量分 53
该栏目主要记录Android学习过程中的点点滴滴,并汇集一些经常使用到的demo,或比较流行的案例,每篇都会附上源码。
Angelica0520
Android、Java、Kotlin、Flutter、HarmonyOS、Python等技术
展开
-
探索PinYin4j.jar将汉字转换为拼音的基本用法
将汉字转换为拼音在Android开发中是个很常见的问题。例如:在Android手机应用开发中,要查询联系人的姓名,通常都是用拼音进行查询的。 Pinyin4j是一个功能强悍的汉语拼音工具包,是sourceforge.net上的一个开源项目。 主要的功能有: - 支持同一汉字有多个发音 - 支持拼音的格式化输出,比如第几声之类的 - 支持简体中文、繁体中文转换为拼音 首先,在And...原创 2016-02-24 13:58:29 · 23207 阅读 · 4 评论 -
Android 编译错误记录
记录下在开发过程中遇到的一个问题一、问题描述 build项目时报错:Could not find SevenZip-osx-aarch_64.exe (com.tencent.mm:SevenZip:1.2.19).二、解决方案1.可以把use7zip =false2.删除sevenzip原创 2022-03-11 17:39:11 · 4890 阅读 · 0 评论 -
Android 编译错误记录
一、问题描述 build项目时报错:greendao Pb(324) The type java.lang.Object cannot be resolved.greendao的Entity注解发生错误二、解决方案将org.greenrobot:greendao-gradle-plugin:3.2.2升级到3.3.0。org.greenrobot:greendao-gradle-plugin:3.3.0...原创 2022-03-11 17:16:14 · 2774 阅读 · 0 评论 -
Android 搜索结果关键字动态匹配筛选变色效果且高亮显示
分享matcherSearchText方法,返回值是SpannableString,也就是经过我们经过变色处理的文字。主要使用matcher.find()方法找到所有匹配的关键字,按照惯例我们看下效果图下面就是matcherSearchText方法啦 /** * 正则匹配 返回值是一个SpannableString 即经过变色处理的数据 */ private Sp...原创 2019-08-13 14:45:01 · 1900 阅读 · 1 评论 -
Android 仿微博,探索使用ShortcutManager添加应用程序的快捷方式
在Android 7.1(API 25)之后添加的新功能,应用快捷方式。ShortcutManager管理一个应用程序的快捷方式。只要在长按应用图标的情况下,在应用图标上显示的快捷方式,用户可以快速访问任意一个Activity。现在市场上已经是有很多应用增加了这项功能,如:微博、美团、支付宝、知乎、印象笔记等。按照惯例,我们先看看效果图:一、快捷方式的特点(1)静态方式(2)动态方式二、...原创 2019-07-09 19:41:12 · 969 阅读 · 0 评论 -
Android CoordinatorLayout打造酷炫的顶部栏
CoordinatorLayout常常与AppBarLayout和CollapsingToolbarLayout一起使用,用于打造各种炫酷效果的顶部栏。之前写过一篇Android 实现酷炫的顶部栏,不过要注意的是这次我们用到Androidx,原因是Google 发布了 Android support library 28,同时也发布了 androidx 1.0.0 第一个正式版本,然后支持库的 “...原创 2019-07-08 17:26:21 · 12790 阅读 · 2 评论 -
Android 扫一扫,绘制指定区域透明区域
一、概述 在实现扫一扫的功能的时候,我们需要绘制一个中间为透明的扫码框,其余部分为半透明。通常情况下,例如微信或者支付宝的扫码框都是矩形的,如果中间的扫码框是一个矩形,那么布局是很简单的,可是如果扫码框是一个圆角矩形,或者圆形等情况怎么办呢?这篇文章主要是记录绘制一个中间透明带圆角的矩形。按照惯例,我们先来看看效果图 : 二、按照流程我们就开始来看看代码啦 1、CustomDr...原创 2018-07-22 21:38:54 · 3408 阅读 · 0 评论 -
Android 自定义可展开的ExpandTextView
一、概述 可折叠的textview是一个很常见的功能,相信大家都在微信朋友圈体验过这种场景:朋友发的笑话都只有半截,下面是一片白色,你要展开全文之后才能知道最后结果。 其实这也不是什么高大上的东西,按照惯例,我们先来看看效果图 : 二、按照流程我们就开始来看看代码啦 1、ExpandTextView:package per.lijuan.expandtextviewdome;...原创 2018-07-01 12:46:52 · 4040 阅读 · 2 评论 -
Android 自定义View实现环形带刻度颜色渐变的进度条
上次写了一篇Android 自定义View实现环形带刻度的进度条,这篇文章就简单了,只是在原来的基础上加一个颜色渐变。 按照惯例,我们先来看看效果图 一、概述 1、相比于上篇文章,这里我们的颜色渐变主要是用到Shader类,通过Paint.setShader(shader)方法为画笔Paint设置shader,这样就可以绘制出多彩的图形。那么Shader是什么呢? Shader类是A...原创 2018-07-01 11:19:28 · 4230 阅读 · 0 评论 -
Android ViewPager的简单使用
很久以前写过一篇Android 仿美团网,探索使用ViewPager+GridView实现左右滑动查看更多分类的功能,本篇文章简单一点,也是说ViewPager。有这么一个场景,在同一个Activity中,我们需要通过滑动来展示不同的布局界面,而ViewPager就是由于若干个不同的布局界面组成的。按照惯例,我们先来看看效果图 接下来我们来看看具体的代码实现: 1、在布局中加入View...原创 2018-06-30 12:01:07 · 4217 阅读 · 4 评论 -
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 · 525 阅读 · 0 评论 -
Android字符串+数字变量方法之%1$s、%1$d的用法
(1)%n$md:代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格(2)%n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格 (3)%n$mf:代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.001.整型 比如:“他今年XX岁了”,这个具体XX岁可能需要从服务端取的,那我们可以...转载 2018-05-28 17:01:03 · 5628 阅读 · 2 评论 -
Android Kotlin 将函数作为参数传递
Kotlin支持函数作为参数传递,无需构建对象来包装函数。1、调用一个无返回的函数作为参数传递为:方法名()-> Unitclass MainActivity : AppCompatActivity() { private val TAG:String = "MainActivity.kt" override fun onCreate(savedInstanceSt...原创 2018-05-27 22:58:05 · 4304 阅读 · 0 评论 -
Android kotlin静态属性、静态方法
Kotlin类不支持静态方法和成员,由于Kotlin支持全局函数和变量,因此我们可以直接使用全局函数和变量来代替类中静态方法和静态成员变量。不过还有一个问题没解决,如果要使用类中的这些全局函数和变量,该如何处理呢? →这就要用到Kotlin推出的一个有趣的语法糖:Objects。那么Objects能取代静态类成员吗? →某种程度上,Objects可以解决由于没有static而造成的麻烦下面...原创 2018-05-27 20:15:34 · 12205 阅读 · 1 评论 -
Android Paging Library 基于RecyclerView的分页加载框架
在2018年5月9日的谷歌开发者大会(Google I/O 2018) 中提出在去年发布的广受欢迎的架构组件上,谷歌进一步改进并推出了Jetpack. Android Jetpack 能帮助我们加快应用开发速度,处理类似后台任务、UI 导航以及生命周期管理之类的活动,免去了编写样板代码的麻烦,专注提升应用体验。其中发布的新版 Android Jetpack 组件包括以下 4 个部分:WorkMa...原创 2018-05-24 11:58:39 · 10132 阅读 · 12 评论 -
Kotlin 自定义View之实现标尺控件(选择身高、体重等)
本篇文章讲的是Kotlin 自定义view之实现标尺控件Ruler,以选择身高、体重等。开发中,当我们需要获取用户的身高和体重等信息时,如果直接让他们输入,显然体验不够好。像类似于唯品会、好轻等APP都是使用了类似于刻度尺的控件让用户滑动选择身高体重,觉得很棒的。网上已有人使用Java语言实现这样的功能,但不影响我对其的学习。和往常一样,主要还是想总结一下自定义view之实现标尺控件的开发过程以及...原创 2018-05-13 11:41:18 · 2802 阅读 · 0 评论 -
Android Zip解压缩工具类
package com.example.zip.commons.utils;import android.util.Log;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.util.ArrayLis原创 2017-06-12 14:33:15 · 10746 阅读 · 1 评论 -
Android RxJava 创建操作符Interval
Interval操作符:用于创建Observable,跟TimerTask类似,用于周期性发送信息,是一个可以指定线程的TimerTask首先添加类库 // RxAndroid compile 'io.reactivex:rxandroid:1.2.1' // RxJava compile 'io.reactivex:rxjava:1.2.4'(1) 间隔时间3秒发送一原创 2017-06-10 17:32:55 · 3716 阅读 · 0 评论 -
Android RxJava 创建操作符Timer
之前有写过Android实现倒计时之使用CountDownTimer,除了CountDownTimer,handler也可以实现 mHandler.sendEmptyMessageDelayed(1, 10*1000); private Handler mHandler = new Handler() { @Override public void ha原创 2017-06-09 10:35:04 · 1151 阅读 · 0 评论 -
Android RxBus的使用
RxBus的核心功能是基于Rxjava的,在RxJava中有个Subject类,它继承Observable类,同时实现了Observer接口,因此Subject可以同时担当订阅者和被订阅者的角色,这里我们使用Subject的子类PublishSubject来创建一个Subject对象(PublishSubject只有被订阅后才会把接收到的事件立刻发送给订阅者),在需要接收事件的地方,订阅该Subje原创 2017-06-08 12:34:11 · 3644 阅读 · 1 评论 -
Android 使用SeekBar时动态显示进度且随SeekBar一起移动
好久没有更新博客了!在滑动SeekBar的时候,要同时显示进度,而且通常要求最小值比0小,按照惯例,先看看效果图: 一、自定义控件 用于在SeekBar上方,跟随SeekBar一块移动的控件显示进度package la.trytry.seekbar;import android.content.Context;import android.util.Attribu原创 2017-05-31 23:04:28 · 16303 阅读 · 0 评论 -
Android 仿今日头条的视频播放控件(几行代码快速实现)
前段时间由于项目需要用到类似于今日头条的视频播放器,实现在线播放,边缓存边播放,当然也可以播放本地文件,如下图: 这里我推荐大家使用的是jiecaovideoplayer开源库,这个库的播放引擎是ijkplayer,它调用ffmpeg, 原项目GitHub地址:https://github.com/lipangit/JieCaoVideoPlayer 一、项目引入: 1、添加类库compi原创 2016-12-04 16:46:20 · 15996 阅读 · 5 评论 -
Android 探索Bottom sheets的使用
在Android Support Library 23.2版本推出之后,我们可以看到一些新的特性,例如AppCompat DayNight主题,BottomSheet等,其中BottomSheet控件一般用于从屏幕底部边缘向上滑出的一个表单,本篇文章是想总结一下我在学习BottomSheet过程中的一些笔记以及一些需要注意的地方。首先我们来看一下效果图 这个效果的实现很简单,甚至基本不需要java原创 2016-09-08 15:26:08 · 2475 阅读 · 2 评论 -
Android 自定义Dialog的简单实现
感觉好像已经很久没更新博客了,前段时间主要是忙于新工作的事情,现在我又可以抽出时间来写写博客了,今天分享一篇自定义Dialog的简单实现一、前言 现在很多App的提示对话框都非常个性化,我们早已不再满足于使用系统的对话框样式,一般而言,我们会根据自家的App的主题,设计出相对应风格的Dialog,今天我就给大家分享一篇自定义的Dialog,主要的功能有:设置标题以及标题字体的颜色设置内容以及内原创 2016-11-29 21:38:40 · 1456 阅读 · 0 评论 -
Android 自定义View之边缘凹凸的优惠券效果
本篇文章讲的是自定义View之边缘凹凸的优惠券效果,之前有见过很多优惠券的效果都是使用了边缘凹凸的样式,碰巧也看到这么一篇文章:http://blog.csdn.net/yissan/article/details/51429281,感谢^_^!和往常一样,主要总结一下在自定义View的开发过程中需要注意的一些地方。按照惯例,我们先来看看效果图 一、写代码之前,我们先要弄清楚view的启动过程:原创 2016-09-27 17:01:05 · 3087 阅读 · 3 评论 -
android:windowSoftInputMode属性
android:windowSoftInputMode用于设置当前activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。 这个属性能影响两件事情: 【一】当有焦点产生时,软键盘是隐藏还是显示 【二】是否减少活动主窗口大小以便腾出空间放软键盘 它的设置必须是下面列表中的一个值,或一个”state…”值加一个”adjust…”值的组合。在任原创 2016-09-30 18:32:10 · 2364 阅读 · 0 评论 -
Android 仿美团网,探索使用ViewPager+GridView实现左右滑动查看更多分类的功能
不记得什么时候,我留意到到美团网首页有使用ViewPager+GridView实现左右滑动查看更多分类的一个功能,感觉它很有趣,于是想着自己动手也实现这样一个功能,和往常一样,主要是想总结一下我在学习过程中的一些笔记以及需要注意的地方。 其中需要注意的有如下几个点: 一:使用GridView作为每个ViewPager的页面,也就是说每个ViewPager的页面都是inflate出一个GridV原创 2016-09-14 12:00:03 · 7215 阅读 · 21 评论 -
Android 拖动条SeekBar的简单使用
在Android开发中,拖动条常常用于对系统某种数值的设置,例如播放视频和音量等都会用到拖动条SeekBar。SeekBar和进度条十分相似,只是拖动条可以通过滑动块的位置来标志数值,并且允许用户拖动滑动块来改变值。 1、SeekBar的常见的一些的属性style=”@android:style/Widget.SeekBar” 指定seekbar的样式android:max=”200” 指定s原创 2016-09-06 18:01:55 · 18508 阅读 · 0 评论 -
使用FileInputStream和FileOutputStream实现本地文件读写操作
FileInputStream和FileOutputStream 是一对继承与InputStream和OutputStream的类,分别用来创建磁盘文件的输入流和输出流对象,开发中我们会经常需要使用FileInputStream和FileOutputStream来实现本地文件读写操作,下面分享一个本地文件读写类package com.pumasoft.vr.utils;import android.原创 2016-08-26 17:50:57 · 14956 阅读 · 1 评论 -
Android Design新控件之TabLaout(一),快速打造一个滑动标签页
在Android开发中很常见的布局设计大概是使用滚动的标签指示器和滑动的内容页面了,我们的做法通常就是在ViewPager的上方放一个标签指示器与ViewPager进行联动。以前,我们大多使用的是GitHub上的开源框架PagerSlidingTabTrip。Google在Support Design包中发布了一些列新的控件,其中就包括TabLayout以替代开源库PagerSlidingTabSt原创 2016-08-27 17:04:29 · 5629 阅读 · 3 评论 -
Android 实现酷炫的顶部栏
AppBarLayout 是继承LinerLayout实现的一个ViewGroup容器组件,它是为了Material Design设计的App Bar,支持手势滑动操作的,不过经常与Toolbar、CoordinatorLayout以及CollapsingToolbarLayout等一起配合使用,在说到AppBarLayout之前,我们先简单学习一下Toolbar。和往常一样,主要还是想总结一下我在原创 2016-08-31 22:47:46 · 7094 阅读 · 2 评论 -
Android Design新控件之TabLaout(二),仿微信实现App底部Tab布局
TabLayout的两种常见设计布局:顶部标签页(如今日头条,知乎)底部菜单栏(如微信主界面)其中上一篇文章中讲到了Android Design新控件之TabLaout(一),快速打造一个滑动标签页,接着接着举例使用TabLayout+ViewPager来简单实现一个类似于微信等App底部菜单栏布局,按照惯例,我们先来看看简单的效果图: 1、和上一篇文章一样,我们需要在应用的build.g原创 2016-08-26 10:54:00 · 7737 阅读 · 5 评论 -
Java 使用BigDecimal类处理高精度计算
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String原创 2016-08-25 17:26:04 · 31515 阅读 · 2 评论 -
Android Design新控件之TextInputLayout(文本输入布局)
谷歌在推出Android5.0的同时推出了全新的设计Material Design,谷歌为了给我们提供更加规范的MD设计风格的控件,在2015年IO大会上推出了Design支持包,Design常用的新控件包括:TextInputLayout(文本输入布局)TabLaout(选项卡布局)SnackbarFloatingActionButton(浮动按钮)NavigationView(导航视图原创 2016-08-22 00:25:52 · 7728 阅读 · 3 评论 -
探索Android Material Design 中的Tint(着色)
很多天以前看到鸿洋大神公众号推出的一篇文章:安卓着色器(tint)使用实践,开始接触Tint这个属性,Tint翻译为着色,用于对视图进行颜色渲染。和往常一样,主要还是想总结一下我在学习过程中的一些笔记以及一些需要注意的地方。一、Tint的作用 Tint的存在一定程度上减少了我们对图片的需求以及apk的大小,我们拿ImageView来说吧,假如它的背景图有两种,一种是默认情况下需要显示的是背景图片1原创 2016-08-21 12:57:33 · 7895 阅读 · 0 评论 -
Android Studio中ButterKnife插件的安装与使用
最近用到Android Butterknife Zelezny插件,感觉特别棒!在Android开发过程中,我们会写大量的初始化控件和设置控件点击事件的操作,这样简单而重复的工作让人觉得麻烦而且没意思,所以可以采用注解的方式去实现,而ButterKnife则是注解中相对简单易懂的很不错的开源框架。一、Android Studio中安装ButterKnife插件: (1)和安装其他插件一样,首先,打原创 2016-07-07 15:22:53 · 6139 阅读 · 7 评论 -
Android 自定义ViewGroup之实现FlowLayout-标签流容器
本篇文章讲的是Android 自定义ViewGroup之实现标签流式布局-FlowLayout,开发中我们会经常需要实现类似于热门标签等自动换行的流式布局的功能,网上也有很多这样的FlowLayout,但不影响我对其的学习。和往常一样,主要还是想总结一下自定义ViewGroup的开发过程以及一些需要注意的地方。按照惯例,我们先来看看效果图 一、写代码之前,有几个是问题是我们先要弄清楚的: 1、什原创 2016-06-16 18:40:58 · 7421 阅读 · 4 评论 -
Android 自定义View之随机生成图片验证码
本篇文章讲的是Android自定义View之随机生成图片验证码,开发中我们会经常需要随机生成图片验证码,但是这个是其次,主要还是想总结一些自定义View的开发过程以及一些需要注意的地方。按照惯例先看看效果图: 一、先总结下自定义View的步骤: 1、自定义View的属性 2、在View的构造方法中获得我们自定义的属性 3、重写onMesure 4、重写onDraw 其中onMesure方原创 2016-06-13 19:36:40 · 5637 阅读 · 8 评论 -
Adnroid 打造通用的带进度条的WebView
在Android开发中,经常需要加载加载显示网页,一般一个页面在打开后,在等待数据加载的过程中,都需要花一点时间,这个时候往往需要显示一个转动的进度条(ProgressBar),接下来封装了一个自定义控件和加载网页的公共Activity,方便使用。 一般的做法是在layout.xml中添加ProgressBar,但我们不这样做,主要是为了减少layout嵌套。 按照惯例我们先来看看最终的效果图:原创 2016-06-06 23:31:58 · 3081 阅读 · 12 评论 -
Android实现倒计时之使用CountDownTimer
在开发中会经常用到倒计时这个功能,包括给手机发送验证码等等,之前我的做法都是使用Handler + Timer + TimerTask来实现,现在发现了这个类,果断抛弃之前的做法,相信还是有很多人和我一样一开始不知道Android已经帮我们封装好了一个叫CountDownTimer的类。从字面上就可以看出来它叫倒数计时器又称定时器或计时器,采用Handler的方式实现,将后台线程的创建和Handle原创 2016-06-03 00:12:51 · 26505 阅读 · 0 评论