自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (4)
  • 收藏
  • 关注

原创 安卓定位权限

随着安卓系统版本的变动,定位权限也多次被修改。随着变动次数的增多,但是对于不同的版本,不同的机型差异越来越大,在处理定位权限时,需要注意的地方就变多了。本篇主要记录对不同安卓版本,不同厂商机型定位权限的适配。

2023-04-04 20:16:51 7671 2

原创 Android SDK对应版本

很多时候看到某个版本都无法对应起来,需要去网上查找,这里做个记录,方便查找对应版本。平台版本SDK版本版本名称13.0T(33)12LSv2(32)12.0S(31)11.0R(30)10.0299.0288.127Oreo(Android O)(奥利奥)8.026Oreo(Android O)(奥利奥)7.125Nougat(Android N)(牛轧糖)7.024Nougat(Android N)(牛轧糖)6.023。

2023-03-25 17:26:56 2785 1

原创 AS 设置 commit 为侧边栏或对话框

Android Studio 设置 Git 提交侧边栏或对话框

2022-03-02 22:35:02 824

原创 自定义可以暂停的倒计时

前言原生的倒计时功能比较简单,没有暂停和重新开始计时功能,所以仿照原生的CountDownTimer做一个更好用的倒计时功能。自定义类public class LCountDownTimer { /** * 时间,即开始的时间,通俗来说就是倒计时总时间 */ private long mMillisInFuture; /** * 布尔值,表示计时器是否被取消 * 只有调用cancel时才被设置为true */ priv

2021-10-28 23:20:35 319

原创 byte 数组相关工具类整理

byte 转换基本数据类型kotlin 中可以直接调用 toByte , toInt 之类的函数直接获取。java 中需要自己获取,获取方式会放到工具类中。大端和小端下面是对连个模式的简单解释。大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于 把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。小端模式:是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。更详细

2021-10-24 21:58:46 841

原创 AS设置 Log 颜色

在设置中直接搜索 log,找到 Android Log,如下图:取消右侧Use Inherited attributes的选择,即可在上方设置自己想要的颜色,下面部分是日志预览效果,点击 ok 即可保存。这里给出三种效果还不错的颜色。颜色一VERBOSE:#61AFEFDEBUG:#2BBAC5INFO:#89CA78WARN:#E5C07BERROR:#EF596FASSERT:#EF596F颜色二> VERBOSE:#FDFFFB> DEBUG:#54CE

2021-10-17 16:59:13 1243

原创 ExpandListView 使用简介

效果图只能实现两层折叠。属性简单介绍divider :父布局之间的分割线样式childDivider :子布局之间分割样式dividerHeight :用于设置分割线的高度childIndicator :用于设置子布局前显示的图标,不设置的话默认是没有图标的groupIndicator :设置父布局前显示的图标indicatorLeft/indicatorStart :默认图标距左侧距离indicatorRight/indicatorEnd :默认图标

2021-07-24 12:02:32 393

原创 安卓网络相关工具类

前言查了一下判断网络是否可用,发现很多博客给的方法都是不正确的,大部分给的方法都是判断网络是否连接,一般来说,在大多数的情况下确实可以满足需求。但是有时会出现网络连接了却不能用的情况,这时就需要更精准的判断了。网上查到的有效的方法大多都是异步的,后来终于找到了一个不用异步的方法,只支持安卓 23 以上的版本,不过也够用了,已经覆盖 90%的机型了,低于 23 的依然判断是否连接就够用了。方法列表isNetworkConnection :通过socket检查外网的连通性,需要在子线程执行ping

2021-07-14 23:49:43 504

原创 BroadcastReceiver

一. 介绍广播,是一个全局的监听器,属于Android四大组件之一. 主要用于监听 / 接收 应用 App 发出的广播消息,并 做出响应.应用场景有:Android不同组件间的通信(含 :应用内 / 不同应用之间)多线程通信与 Android 系统在特定情况下的通信二. 分类广播被分为两种不同的类型:“普通广播(Normal broadcasts)”和“有序广播(Ordered broadcasts)”。普通广播是完全异步的,可以在同一时刻(逻辑上)被所有接收者接收到,消息传递的效率比较高

2021-07-08 23:58:34 230 1

原创 CharSequence 相关扩展收集

前言主要是关于一些字符串判断相关内容,主要包括判断字符串是否含有空格、是否含有汉字、是否含有字母、是否含有数字、特殊符号等,字符串本身就有很多 Api 可以实现很多功能,但是对于判断方面就少了点,这里把收集到的常用的整理起来,可以直接使用。函数列表判断相关isNotNullOrEmpty :CharSequence不为 null 或者 emptyisHasSpecial :是否含有特殊字符,true有,false没有isHasChinese :是否含有汉字,true有,false没

2021-07-02 22:37:30 200

原创 FastJson解析封装

导包implementation 'com.alibaba:fastjson:1.2.48'方法//FastKtx方法toAny :json 转任意类toMap :json 转 MaptoList : json 转 ListtoJson : 任意类转 json//扩展函数toAny :json 转任意类toMap :json 转 MaptoList : json 转 ListtoJson : 任意类转 json注意事项使用时涉及到泛型相关,泛型 T 要转的类必

2021-06-26 15:47:09 283

原创 Gson解析封装

引入 implementation 'com.google.code.gson:gson:2.8.6'方法//GsonKtx内方法getGson :获取gsontoJson :任意对象转成jsontoAny :将json数据转成任意bean类toMap :将json数据转成MaptoList :将json数据转成任意集合bean类toList2 :将json数据转成任意集合bean类,遇到解析不了的,就使用这个toListType :将json数据转成任意集合bean类,需

2021-06-26 15:45:56 411

原创 Gson解析异常com.google.gson.internal.LikedTreeMap connot be case to class

异常 fun <T> json2List(gson: Gson, json: String?, clazz: Class<T>): List<T>? { val typeToken: TypeToken<List<T>> = object : TypeToken<List<T>>() {} return try { gson.fromJson(json, type

2021-06-26 15:13:50 496

原创 使用 Fragment 处理 onActivityResult

前言对Activity和Fragment之间的跳转封装处理,在Activity/Framgent中用法基本一样。每个函数基本上都对应着一个扩展函数,方便调用。常规跳转startActivity,没有回调不带任何参数IntentKtx.startActivityK(this,TvActivity::class.java)IntentKtx.startActivityK<TvActivity>(this)startActivityK<TvActivity>()//扩展函数

2021-06-26 00:02:49 1391

原创 SpannableStringBuilder封装类Java

一、方法介绍有些情况下无法使用或是不想使用Kotlin时,可以使用下面的封装类比较简单易用。这个工具类是我在网上找的,经过简单的修改,增加了一些功能。getBuilder : 获取建造者setFlag : 设置标识setTextSize : 设置字体大小setForegroundColor: 设置前景色setBackgroundColor: 设置背景色setQuoteColor : 设置引用线的颜色setLeadingMargin : 设置缩

2021-06-16 15:38:55 348

原创 SpannableStringBuiler封装Kotlin

前言SpannableStringBuilder和SpannableString功能基本一样,不过SpannableStringBuilder可以拼接,主要是通过setSpan来实现各种效果,主要的方法如下:start: 指定Span的开始位置end: 指定Span的结束位置,并不包括这个位置。flags:取值有如下四个Spannable. SPAN_INCLUSIVE_EXCLUSIVE:前面包括,后面不包括,即在文本前插入新的文本会应用该样式,而在文本后插入新文本不会应用该样式Spann

2021-06-16 15:38:11 410

原创 Json解析工具类

一、Gson导包:implementation ‘com.google.code.gson:gson:2.8.6’/** * 任意对象转成json */fun Any?.toJson() = GsonUtils.any2Json(this)fun Any?.toJson(gson: Gson) = GsonUtils.any2Json(gson, this)/** *将json数据转成任意bean类 */fun <T> String?.toAny(clazz: Class

2021-05-23 23:13:25 451

原创 Android Studio 4.0以上插件推荐

GsonFormatPlus将 json 字符串转化为 javabean.Android Parcelable code generatorJavaBean序列化,快速实现Parcelable接口。Android Methods Count显示依赖库中得方法数CodeGlance在右边可以预览代码,实现快速定位,屏幕小作用不大。EventBus3-IDEAeventbus导航插件(对于最新版的 EventBus 3.0.0 好像无效,请替换为eventbus3-intellij-plu

2021-05-18 23:35:54 489

原创 TextView 实现跟随标签

TextView 实现跟随标签一、前言在设计中经常出现一个长度不确定的文本,后面或是前面跟随一个或是多个标签。在网上查了很多资料,大部分的实现方式都是通过富文本来实现,不能满足多变的要求,标签要可以是图片,还可以是不同的文字,或者是一个布局,有时会加多个标签。后来想到了一种解决方法。将整个部分拆分成多个布局,自由组合,可以满足各种需求,无论标签有多少个,放在前面还是后面都可以实现。二、具体实现2.1 文字限制一行时,标签在文字后面效果图:文字较少时就像第一行这样,文字较多显示不下时就像二三行

2020-11-04 23:21:21 792 3

原创 ScrollView 吸顶效果

一、顶部标题显示和隐藏渐变效果在吸顶效果前,先记录一个简单的标题渐变效果。1.1 简单显示和隐藏监听滚动,只控制显示和隐藏,布局初始隐藏,不用设置渐变度。1.2 渐变效果监听滚动,通过设置alpha(范围0~1),实现布局渐变。1.3 通过设置背景颜色实现监听滚动,通过设置背景颜色alpha(范围0~255),实现布局渐变。1.4 实现方式如下xml 布局<?xml version="1.0" encoding="utf-8"?><android.

2020-09-14 00:31:30 1431

原创 安卓转场动画

一、系统自带动画效果假如有 A 和 B 两个 Activity, 从 A 进入 B,调用startActivity(Intent(this,AnimCutOutActivity::class.java)) overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out)第一个动画android.R.anim.fade_in 表示 B 进入时的动画,第二个动画android.R.anim.fade_out 表示 A 退出.

2020-09-11 23:06:23 451

原创 ViewPager + Fragment 实现无限滑动

一、实现效果图二、实现方式主要的实现方式有两种:第一种是采用Adapter内的getCount()方法返回Integer.MAX_VALUE。第二种在列表的最前面插入最后一条数据,在列表末尾插入第一个数据,造成循环的假象。两种方式各有优缺点,第一种方式滑动更流畅,不过试过需要至少 4 个元素才能使用。否则要么报错要么就会有白屏。第二种方法的缺点是第一个和最后一个元素切换效果可能不是太好。2.1 第一种实现方法Integer.MAX_VALUE简单的布局<?xml.

2020-09-06 11:12:10 1115

原创 BottomSheetDialog可以拖动的底部对话框

一、效果图,不太清晰本想一次全部录下来做成 gif 图,可惜高清 gif 图太大了,无法上传,只能换成普清模式,一次录一段,有更好的录制 gif 图的方法可以留言告知。现在只能勉强看看。二、实现类似抖音拖拽评论框效果首先布局的最外层要是CoordinatorLayout ,然后对话框的最外层要加上这三个属性:app:behavior_hideable="true"app:behavior_peekHeight="50dp"app:layout_behavior="@string/bottom_s

2020-08-12 23:29:41 950

原创 安卓对话框相关及简单封装使用

一、前言在正常使用 PopupWindow 时不是很难,只需要几行代码就能实现一个对话框,但是有很多方法都是重复的,PopupWindow 本身会有一些局限性,需要处理。仅仅使用 PopupWindow 就可以满足项目中大部分的对话框需求。封装后,调用起来更加方便,同时对于一些高频对话框可以做成通用的,以后就不需要再重复去写,随时调用更加方便。二、引入[图片上传失败…(image-35570a-1596989904131)]Add it in your root build.gradle at .

2020-08-10 00:21:48 618

原创 RecyclerView 设置固定数目 Item

一、前言很多时候会遇到使用 RecyclerView 时,要求超过一定数目的 Item 后,固定 RecyclerView 的高度,没有超过这个数目就自适应高度。这种情况更多会出现在对话框中,数量过多时不能让对话框占据整个屏幕,同时又能控制显示的 Item 个数,下面针对不同的情况可以使用不同的方法。二、已知 Item 高度的情况下在已知 Item 布局的高度的情况时,可以通过设置最大高度来控制显示的 Item 数目,因为 Item 高度已知,所以计算好高度就可以达到目的,下面是具体的实现:看下效果

2020-08-01 22:49:04 4969 1

原创 ViewStub 简单使用

ViewStub 简单使用一、前言ViewStub 是布局优化的方式之一,适用于一些延迟加载的场景,相对于设置 View.GONE的优点是逻辑简单控制灵活,但是缺点也很明显,更耗资源,不管可见不可见都会被创建。ViewStub更加轻量级,它本身是一个不可见不占用位置的 View,资源消耗比较小,只有调用了ViewStub.inflate()的时候加载布局,布局才会实例化。二、使用先看效果图:![iShot2020-07-1316.56.08.gif](https://imgconvert.csd

2020-07-13 17:25:08 356 1

原创 约束布局使用详解

约束布局使用详解一、前言在一般的安卓开发中,编写界面需要很多嵌套,这会有一定的性能影响,这个时候就可以使用 ConstraintLayout 或 RelativeLayout来减少嵌套,简化布局深度。ConstraintLayot 类似 RelativeLayout,但是更灵活更强大。具有更强的性能优势,简化嵌套深度。更好的屏幕适配,可以使用比例来适配,效果更好。可视化编辑,操作起来不是很完美。二、使用引入implementation 'com.a

2020-07-13 16:01:19 8642 1

原创 新版友盟+360 加固打多渠道包

新版的友盟不需要再去配置多渠道了,文档也更简单了.友盟文档,对着文档引入就可以了.大体步骤如下:1.在友盟新建应用,获取AppKey集成 sdk,推荐自动集成maven依赖配置在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】sdk 新maven仓库地址。如下图。代码:复制代码到剪切板maven { url 'https://dl.bintray.com/umsdk/release' }在工程App 对应build.g

2020-06-14 15:40:10 474

原创 AS 多渠道打包

前言不借助任何工具,直接用 AS实现多渠道打包。步骤清单文件 <meta-data android:name="ATMAN_CHANNEL" android:value="${ATMAN_CHANNEL_VALUE}" />在 module 的 build.gradle 中配置渠道指定渠道 //指定渠道 productFlavors {vivo {}oppo {}huawei {}xiaomi {}

2020-06-14 15:38:59 651 1

原创 美团 walle 打多渠道包

Android Signature V2 Scheme签名下的新一代渠道包打包神器使用方式有两种,第一种Gradle插件使用方式配置build.gradle在位于项目的根目录 build.gradle 文件中添加Walle Gradle插件的依赖, 如下:buildscript { dependencies { classpath 'com.meituan.android.walle:plugin:1.1.6' }}并在当前App的 build.gradle

2020-06-14 15:32:11 374

原创 WanAndroid 客户端

前言最近刚刚学会 Kotlin,于是趁着有空就用 Kotlin 做了一个小项目,来熟悉一下 Kotlin 语言。。项目地址 WanAndroid,采用了Mvp + Retrofit + Kotlin + LiveData + 协程,仅用于学习交流,如有任何疑问和建议请提 Issues 或联系 qq: 1771050446。参考在做之前,参考了众多的 WanAndroid 客户端,每个都很优秀...

2019-07-05 23:32:16 402

原创 Android 图片选择器

前言在安卓开发中经常用到修改头像功能,通常就拍照和选择相册图片两种。有很多时候还需要对图片进行裁剪。所以这个工具可以更快速完成这些功能。对于6.0权限的处理,每个人用的都不一样,所以这个工具使用的是纯原生的方法,使用时已经对权限进行了处理。当然也可以在使用前使用自己喜欢的方法处理动态权限。对 7.0 的FileProvider用了鸿阳大神的库,FitAndroid7,库很小,使用简单,一行代码完...

2019-07-05 13:11:39 412

原创 View动画

一.效果图二.使用 xml 文件实现方式通用属性:android:duration 动画持续时间,以毫秒为单位android:fillAfter 如果设置为true,控件动画结束时,将保持动画最后时的状态android:fillBefore 如果设置为true,控件动画结束时,还原到开始动画前的状态android:fillEnabled ...

2019-05-22 22:09:55 322

原创 NestedScrollView的滚动监听,滚动到指定位置

滚动监听滚动到底部// 滚动到底if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) {Log.i(TAG, “BOTTOM SCROLL”);}滚动到顶if (scrollY == 0) {// 滚动到顶Log.i(TAG, “TOP SCROLL”);}完整代码...

2019-05-22 22:09:07 13092

原创 Android常用通知

1.一般的通知步骤Notification代码如下//自定义打开的界面 Intent intent = new Intent(this, NoticeReceiveActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //intent里面可以携带参数 ...

2019-05-22 22:07:45 873

原创 日期时间获取转换等工具

时间日期格式工具类,整理收集,整体应该比较齐全了.1. 使用列表1.当前时间相关getNowString : 获取当前日期 String 类型,默认返回格式2019-05-17 18:48:24,可自定义返回样式getNowDate :获取当前日期 Date 类型getNowMills :获取当前时间的时间戳(毫秒)getNowY :获取当...

2019-05-22 22:06:01 658

原创 AlertDialog基本使用

1,默认样式AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("默认标题")//设置标题 .setIcon(R.mipmap.error_picture)//设置标题图片 .setMessage("默认文本信息...

2019-05-22 22:02:18 1837

原创 仿京东天猫商品详情页

1.参考借鉴Android仿京东商品详情页上拉查看图文详情[模仿淘宝、京东、蘑菇街商品详情页,可嵌套ListView、WebView、ViewPager、FragmentTabhost等](https://github.com/happylishang/DragScrollDetailsLayout#3%E6%94%AF%E6%8C%81%E6%94%AF%E6%8C%81scrollvi...

2018-07-30 11:03:28 1992

原创 RecyclerView长按拖拽,侧滑删除

1,导包implementation ‘com.android.support:recyclerview-v7:27.1.1’2,Xml文件&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&amp;lt;android.support.constraint.ConstraintLayoutxmlns:android=&quot

2018-07-10 17:32:36 1054

原创 RecyclerView仿头条新闻频道管理

1,效果图2,实现1,Xml布局&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; android:layout_width=&a

2018-07-10 17:20:07 1101 3

美团新一代打包神器 walle

美团打多渠道包工具,方便生成多渠道包,不需要在 app中做任何配置,可以在几秒钟就能生成几十个渠道包,使用简单,效率又高,遇到问题官方都有解决方案。

2020-06-14

仿京东天猫商品详情页

仿京东,天猫商品详情页,可使用ViewPager,控制滑动或是不滑动.

2018-07-30

RecyclerView基本使用,加分割线,加头尾,流式布局,实现ViewPager效果等

主要关于RecyclerView的介绍,简单使用,添加分割线,流式布局,长按拖拽,侧滑删除等.广播和服务的简单练习.

2018-07-10

ViewPager画廊及各类PageTransformer

两种画廊模式,一种是普通的动画样式,另一种是3D画廊样式.各类PageTransformer动画效果

2017-11-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除