自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (2)
  • 问答 (3)
  • 收藏
  • 关注

原创 Android Kotlin关于新增本地数据库对象表字段问题

Android Kotlin 数据库新增字符串类型字段

2022-04-20 14:57:37 2253

原创 关于Android EditText isFocusable为true禁止获取焦点后的恢复获取焦点问题

EditText focusable 重新获取焦点

2022-04-15 09:31:37 2696

原创 android 点赞动画 自定义UI实现

android 点赞动画 自定义UI实现先看效果FlowLikeView自定义UI/** * 点赞自定义控件 */public class FlowLikeView extends RelativeLayout { private List<Drawable> mLikeDrawables; // 图片的集合 private LayoutParams mLayoutParams; // 用于设置动画对象的位置参数 private Random mRando

2021-06-09 13:41:01 453

原创 Android RecyclerView局部刷新数据

RecyclerView局部刷新数据在项目中,目前我们常用RecyclerView来加载列表数据,而刷新数据时,我们常常用notifyDataSetChanged();来刷新全部列表数据,用notifyItemChanged(position);来刷新列表中某一项的数据,正常情况下都是ok的。但是遇到带图片的列表,这样的刷新方式就很糟糕了。比如列表中带图片、浏览数,点赞量等等一系列数据。现在我只想刷新浏览量,用上面的方法就会发现,每刷新一次,图片就会闪烁一下。这样不仅浪费资源,用户体验也很不好。怎么处理这

2021-06-09 11:47:27 3687 1

原创 Android 记录ConstraintLayout使用的地方

Android 记录ConstraintLayout使用的地方ConstraintLayout相信大家即使没有用过,也多多少少有些印象。因为我们现在没创建一个Activity带XML,都会默认创建ConstraintLayout根布局,虽然我一次也没有用过。但最近在阅读了郭神的史上最全ConstraintLayout使用详解后,突然发现,虽然我不习惯用ConstraintLayout去布局根布局,但我找到了一个可以轻松使用它的地方。相信大家对这种布局都不陌生,如购物车,未读消息等等。我之前实现的方式有

2021-05-11 10:26:26 132

原创 Android 下拉弹出框Spinner

Android 下拉弹出框Spinner在Android实现如Web页面上的下拉弹出框,不用PopupWindow,不用Dialog。使用Android原生控件Spinner轻松搞定。首先XML布局android:spinnerMode="dropdown"为弹出框的格式,dropdown为下拉弹出框,dialog为普通弹出框。android:layout_weight为我自己项目里面的宽度而已,可以忽略。android:overlapAnchor="false"最总要,为false表示紧挨Spin

2021-05-11 10:04:18 2029

原创 Android BrocastRecevier广播应用

Android BrocastRecevier广播应用BroadcastReceiverBroadcast直译广播,我们举个形象的例子来帮我理解下BroadcastReceiver,记得以前读书的时候,每个班级都会有一个挂在墙上的大喇叭,用来广播一些通知,比如,开学要去搬书,广播:“每个班级找几个同学教务处拿书”,发出这个广播后,所有同学都会在同一时刻收到这条广播通知,收到,但不是每个同学都会去搬书,一般去搬书的都是班里的"大力士",这群"大力士"接到这条 广播后就会动身去把书搬回可是!——好

2021-03-12 11:13:07 241

原创 Android Service服务

Android Service服务参考:service初涉service服务的生命周期示意图:启动service的方法1)StartService()启动Service2)BindService()启动ServicePS:还有一种,就是启动Service后,绑定Service!service的相关方法onCreate():当Service第一次被创建后立即回调该方法,该方法在整个生命周期 中只会调用一次!onDestory():当Service被关闭时会回调该方法,该方法只会回调一次!

2021-03-11 14:52:02 261

原创 Android 动画之属性动画

Android 动画之属性动画属性动画三部曲,可以参考郭霖博客:Android属性动画完全解析(上),初识属性动画的基本用法Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法郭大神介绍的太详情了,大家直接看就行了。透明属性动画 alpha将一个TextView在5秒中内从常规变换成全透明,再从全透明变换成常规,就可以这样写:Obj

2021-03-10 16:19:59 405

原创 Android动画之补间动画

Android动画之补间动画和上面一章学的帧动画不同,帧动画 是通过连续播放图片来模拟动画效果,而补间动画开发者只需指定动画开始,以及动画结束"关键帧", 而动画变化的"中间帧"则由系统计算并补齐!Andoird所支持的补间动画效果有如下这五种,或者说四种吧,第五种是前面几种的组合而已~AlphaAnimation:透明度渐变效果,创建时许指定开始以及结束透明度,还有动画的持续 时间,透明度的变化范围(0,1),0是完全透明,1是完全不透明;对应<alpha/>标签!ScaleAnim

2021-03-10 11:38:47 587

原创 Android动画之帧动画

Android动画之帧动画帧动画,顾名思义就是一帧一帧的动画,就是把图片一张一张的按顺序的展示出来。需要用到的api是AnimationDrawable。实现方法1把图片放入一个数组中,然后利用AnimationDrawable循环遍历即可。//这里把图片放入数组中public static final int[] ids_index = {R.drawable.ic_icon_index_svg_1,R.drawable.ic_icon_index_svg_2,R.drawable.ic_ico

2021-03-10 10:18:15 1122

原创 Android 实现视频的悬浮窗

Android 实现视频的悬浮窗如微信视频或者斗鱼直播一样,在应用切换到后台后,手机桌面还可以显示一个可以移动的小窗口,播放正在播放的内容。利用的就是android里面的WindowManager,原理逻辑就是在视频界面切换到后台后,调用实现悬浮窗的service服务,在判断了权限后,就可以悬浮在其余应用之上了。先来看效果,点击悬浮窗进入对应的视频播放界面,触摸悬浮窗会移动,点击右键关闭会关闭悬浮窗。构建悬浮窗的服务下面的代码就是悬浮窗服务的全部代码。在这个服务中,onCreate定义了这个悬浮窗口

2021-03-09 10:53:37 4594 2

原创 Android 在内容前添加标签,方便换行的时候顶格

Android 在内容前添加标签,方便换行的时候顶格本文记录在TextView上显示文字时,有时候要在文字的前面添加标签,但又要求文字换行的时候要顶格,这个时候我们就不能单纯的用两个控件去显示了,因为两个控件你会发现文字换行的时候无法顶格显示了。所以我们就要在文字上面做文章了。废话不多说,先来看看效果图。下图就是最后的显示效果,前面的"置顶"和"精品"都是后面添加的文字标签,而真正的内容时后面的“牛年大吉大利…”正文下面的代码其实很简单,就是在内容的前面放标签文字。CenterImageSpan就

2021-02-24 11:59:07 789 1

原创 android 11兼容适配之根据包名查看是否安装第三方应用

android 11兼容适配之根据包名查看是否安装第三方应用本文介绍android 11的兼容性适配之一的根据包名唤起第三方应用功能。包括但不限于(支付宝、微信、QQ、微博、百度地图、高德地图、腾讯地图)。由于android 11的权限进一步的回收,以前能直接通过包名查找第三方应用的功能也收到了影响,现在如果不做特殊的处理,是无法通过查找包名的方式去唤起第三方应用的。正文在配置文件中AndroidManifest.xml添加下面的代码即可。作用就是说我们需要去查找下面之类应用,做一个声明。<!

2021-02-22 14:45:37 5011 3

原创 兼容android 11 唤起系统相机拍照并显示

兼容android 11 唤起系统相机拍照并显示本文是记录兼容android 11的唤起系统相机拍照并正常显示,此处我默认已经获取到相机和读写的权限。打开相机 /** * 保存 photoUri */ private Uri photoUri; /** * 打开相机 */ private void openCamera() { Intent takePictureIntent = new Intent(MediaStore.

2021-02-02 14:31:11 8584 17

原创 android 11 版本下图片的保存方式改变以及保存图片到相册

android 11 版本下图片的保存方式改变android 11已经出来了半年的,有的手机已经升级到android 11了,比如小米10等。在android 11下,我们会发现应用有些功能变得不正常了,比如图片的保存。android 11有两个可以保存的地方,第一个是项目的私有目录,一个是公共目录。而项目的私有目前的图片是可以改变的,但公共目录的不可以。项目私有目录public static String getDownloadPath(Context context) { if (

2021-02-02 14:09:22 12212 5

原创 Android 给透明png图片添加白色底色(修改像素点的形式)

在项目中,我们拿到的网络图可能是透明的,但又要求我们显示白色背景。当然处理的方法很多,如给控件添加背景色,或者通过两个控件叠加来显示等等,这里我记录我使用的别的方法。方法1(此方法仅适用于纯色图片。相信我,不是纯色图片不要使用,不然上线后你可能要卷铺盖走人了):变量每一个像素点,把对应的旧颜色替换为新的颜色/** * 建议只能是纯色png图片,不然会造成图片像素或显示极度模糊 * 将bitmap中的某种颜色值替换成新的颜色 * @param oldBitmap

2020-11-26 11:43:33 4014

原创 Android 全局替换项目默认字体

Android 全局替换项目默认字体项目中,我一开始用的是默认字体-思源黑体,最后项目都已经完成上线了,结果说要把字体改为苹方。我不可能给每一个TextView 、Button、EditText等控件单独去设置苹方字体。在这里我介绍一下我用的方法。首先、创建替换字体用到的工具类TypefaceUtil/** * created by DELL * on 2020/11/6 */public class TypefaceUtil { /** * 为给定的字符串添加HTML红色

2020-11-09 12:12:15 866

原创 Android 图片点击放大缩小手势操作以及解决Viewpager左右滑动与ImageView手势冲突导致左右滑动失效问题

在我的项目中,有点击图片banner后放大浏览的功能。我的做法就是创建一个专门的图片显示Activity,布局里面用ViewPage,这样就能控制图片的左右滑动,并且控制首先显示第几张图片。功能是ok的,显示也是正常的。但我花费了好几天的时间来实现、完善这个功能。ShowMoreImageActivity/** * 图片放大 */public class ShowMoreImageActivity extends BaseActivity { @FindId(R.id.vp)

2020-10-27 10:34:47 1594

原创 买卖股票最大收益

买卖股票最大收益假设你有一个数组,其中第 i 个元素是股票在第 i 天的价格。你有一次买入和卖出的机会。(只有买入了股票以后才能卖出)。请你设计一个算法来计算可以获得的最大收益。解题思路:由于只有一次买卖机会,只有先买才能卖。我们首先需要设定最初的一个买入值,然后判断之后的卖出值与买入值之差。并且还需要去重新设置买入值JAVA语言实现:/** * 买卖股票最大收益 * 假设你有一个数组,其中第 i 个元素是股票在第 i 天的价格。 * 你有一次买入和卖出的机会。(只

2020-10-23 16:23:11 578

原创 Kotlin高阶函数定义模板

Kotlin高阶函数高阶函数定义格式示例1:/** * 高阶函数 * 此高阶函数接收两个参数,第一个参数是String类,第二个参数是接收String值且返回值为Int的函数。整体返回值是Int类型 */private fun fun3(str:String,mapper:(String) -> Int):Int{ return mapper(str)}上面的高阶函数思想是:此高阶函数接收两个参数,第一个参数是String类,第二个参数是接收String值且返回值为Int的

2020-10-23 11:06:34 528

原创 判断Int型数组中的唯一值,就用异或来把数组中的每一个值进行比较即可

判断Int型数组中的唯一值,就用异或来把数组中的每一个值进行比较即可利用异或算法的特性,可以快速简便的查找出数组中的唯一值。异或算法^为异或,计算时先把两个数转换为二进制,再进行计算。两个不同的值异或结果为1,两个相同的数异或后值为0所以判断Int型数组中的唯一值,就用异或来把数组中的每一个值进行比较即可。java实现 /** * ^为异或,计算时先把两个数转换为二进制,再进行计算。 * 两个不同的值异或结果为1,两个相同的数异或后值为0 * 所以判断Int

2020-10-22 15:03:59 490

原创 Kotlin 开发Android笔记之Kotlin开发篇

Kotlin 开发Android笔记之Kotlin开发篇省略findViewById()方法正常写法:val btn = findViewById<Button>(R.id.btn) btn.setOnClickListener { Toast.makeText(this,"提示",Toast.LENGTH_SHORT).s }但Kotlin项目在创建的时候引用了插件apply plugin: ‘kotlin-android-ex

2020-09-07 21:40:03 471

原创 Android TabLayout 宽度无法充满屏幕

Android TabLayout 宽度无法充满屏幕我们在使用TabLayout的时候,很多时候都需要宽度充满屏幕,并且平分屏幕。类似于如下的效果:但很多时候我们在使用了如下代码的时候发现TabLayout总是有一个默认的边距。 <com.google.android.material.tabs.TabLayout android:id="@+id/menu_tab" android:layout_

2020-08-31 10:21:12 1450

原创 Kotlin 开发Android笔记之Kotlin学习篇

Kotlin 开发Android笔记之Kotlin学习篇var与val 变量标志val :声明一个不可变的变量,在初始化赋值后不可再改变值,相当于Java中的final类型变量数据var:声明一个可变的变量,在初始化赋值后还可修改值,相当于Java中的非final类型变量数据初始化://隐式声明变量类型 kotlin可自动推导判断变量类型var value = 10//显示声明变量类型var valueStr:String = "Kotlin"PS:在Android中对一个变量延迟赋值时

2020-08-29 10:58:00 268

原创 Android Kotlin开发语言学习笔记

Android Kotlin开发语言学习笔记变量定义:var name:String = "张三" //var 可变变量val age:Int =18 //val 不可变变量,此时对age进行++或--都会报Val cannot be reassigned的错误初始化变量为null的操作(添加?):var name:String=null; //这样写会报Null can not be a value of a non-null type String的错误var name:S

2020-08-13 17:41:27 207

原创 Android CoordinatorLayout与RecyclerView或Viewpager联动使用时快速上下滑动抖动

Android CoordinatorLayout与RecyclerView或Viewpager联动使用时快速上下滑动抖动在项目中我们会用到CoordinatorLayout与RecyclerView或Viewpager联动使用的情况,正常情况下是没有问题的,但在快速上下滑动界面的时候就会出现界面抖动的问题了。本篇文章只用作记录问题的解决办法。问题原因请参考:解决CoordinatorLayout的动画抖动以及回弹问题CoordinatorLayout详解请参考:针对 CoordinatorLayou

2020-07-30 11:25:18 1421 4

原创 Android 权限申请工具类

Android 权限申请工具类本篇文章用于记录在项目中用到的权限申请工具类。我们在项目中都遇到过权限申请问题,每一次的权限申请都是繁琐的,并且在权限的各个状态都需要我们去判断,让每个开发人员都无不烦躁。在这里我要十分感谢郭霖大神的博客PermissionX现在支持Java了!还有Android 11权限变更讲解这篇文章为我们封装了很好的权限申请功能。集成:implementation 'com.permissionx.guolindev:permissionx:1.3.0'使用:Permissi

2020-07-29 12:13:19 888

原创 Android 原生微博分享网络图片

Android 原生微博分享网络图片本文介绍android集成原生微博分享,在单独分享网络图片时不显示图片的问题。问题现象如下:出现上面的效果,说明微博分享的集成是没有任何问题。只是因为对图片的操作不合理导致的。网上看了许多讨论,基本都是什么图片尺寸啊,大小的问题,但经过调试,发现都不是这类问题。这里我要十分的感谢Android集成新浪微博SDK分享这篇文章,让我图片醒悟,是不是就是因为图片没有网络加载的问题导致其不显示的,最后一修改分享那里的代码,竟然直接成功显示了。分享操作代码runOnUi

2020-07-28 14:46:01 1010

原创 Android 自定义圆形头像列表展示导致RecyclerView滑动卡顿和闪烁

Android 自定义圆形头像列表展示导致RecyclerView滑动卡顿和闪烁我们一提到圆形头像,就会想到自定义ImageView。而普通的自定义圆形头像一般都是如下定义的。自定义的圆形ImageView/** * 圆形ImageView,可设置最多两个宽度不同且颜色不同的圆形边框。 .这个控件在列表中会很卡!!! * 此自定义不允许在列表中使用,会造成列表卡顿严重 * * @author */public class RoundImageView extends androidx.a

2020-07-21 11:49:53 560

原创 Android Glide加载本地gif动态图

Android 加载本地gif动态图相信我们大多数人在android项目中加载图片都用的是Glide来进行图片的加载。Glide不仅可以加载圆角的图片,还能加载gif动态图。但大多数情况下我们都是加载的网络图,那么我们在遇到加载项目中drawable图片目录中的gif图片又该怎么办呢?首先,我们来看看网络上加载gif图片的大致做法Fresco图片加载库1.添加依赖:dependencies { // fresco库依赖 implementation 'com.facebook.fr

2020-07-16 16:15:05 9853 4

原创 Android double数据类型类型转换以及求余等操作计算丢失精度问题

Android double数据类型类型转换以及求余等操作计算丢失精度问题我们在项目中不可避免的就会用到double数据类型。平时的类型转换我们可能不会去在意精度丢失等问题,但涉及到钱,特别是涉及到金额等计算时,就不能不去管丢失精度的问题了。下面是double数据类型的几种计算方式,不丢失精度double转int类型丢失精度问题/** * 满减规则,返回总的减免金额 *...

2020-03-18 13:50:39 1118

原创 NestedScrollView或ScrollView与RecyclerView嵌套使用导致adapter滑动卡顿

NestedScrollView或ScrollView与RecyclerView嵌套使用导致adapter滑动卡顿直接进入正题我们在项目中经常性使用NestedScrollView或ScrollView与RecyclerView嵌套的布局,但我们在运行后发现总会出现各种各样的问题,如adapter的item显示不全问题,请点击这里;滑动卡顿等等。解决办法直接在RecyclerView中添加...

2020-03-17 16:51:33 828

原创 ScrollView与RecyclerView嵌套使用,导致adapter显示不全

ScrollView与RecyclerView嵌套使用,导致adapter的item显示不全直接进入正题我们在项目中,经常性遇到ScrollView与RecyclerView嵌套使用的场景,结果我们在满怀信心的做出来后,一演示竟然发现我们adapter的item怎么会没有显示全呢。这里提供两种方法。方法一直接把ScrollView的地方修改成NestedScrollView。如下: &l...

2020-03-17 16:43:31 247

原创 Android 自定义搜索框(带搜索图标、清除图标、语音图标)

相信大家都用过android自带的SearchView,至于疗效如何相信用过的人都知道。既然自带的搜索框疗效不足,那我们就来自己定义。本篇文章是在EditText上给大家自定义搜索框,并且带了搜索图标,清除图标,语音图标。按照国际惯例,先给大家上最后的效果图:输入值后:接下来我们来看看到底是如何自定义EditTextSearch的:public class EditTextSearch...

2019-11-29 17:27:19 3104 4

原创 Android 加载圆角的图片轮播图

图片轮播图相信大家有不会陌生,主要用于展示广告。本篇文章是基于第三方Banner框架实现图片轮播。大家可以去看看我之前的文章:Android 广告轮播图(最简单的实现),看看是怎么基础实现。本篇文章实在前面的文章上的补充。也许看过:Android Glide加载并显示圆角图片,这篇文章的朋友有些疑问,既然Banner也是通过Glide来加载图片的,按你之前的文章那样直接加不就显示圆角了吗。大家可...

2019-11-28 17:24:49 2107 5

原创 Android Glide加载并显示圆角图片

我们都知道手机加载图片是一个耗时又耗内存的事情,但因为效果我们又不得不加载各种各样的图片。但自己写的图片加载与缓存不仅代码繁琐,还会因为考虑不全造成各种各样未知的bug,所以越来越多的人利用第三方的框架来加载图片,而Glide在这方面可谓说独占鳌头。选择Glide理由:1.集成简单,一行代码依赖完成2.使用简单,一行代码调用完成3.能加载各种类型的图片,不管是静态图还是gif图4.优秀的...

2019-11-28 16:34:45 3099

原创 Android AlertDialog获取EditText的输入值

或许我们都遇到过这样的需求,主页面里面有一个EditText,而我们需要通过点击这个EditText的时候弹出一个带EditText的弹出框。在我们修改完新的信息的时候,点击确定,弹出框里面的值自动保存到主EditText里面。并且在弹出的时候带上主EditText已有的值。按照惯例,先来看看效果图吧。我们在效果图中可以看到,在点击btn的时候会弹出一个带EditText的dialog。并且...

2019-11-21 16:38:40 3171

原创 Android Glide扩展实现图片加载进度条

在android中,目前主流的加载图片基本都是用Glide框架。这个框架会自动的为我们处理网络加载与缓存图片的各种功能,而我们只需要给图片的地址与显示位置即可。但在加载图片的过程中我们无法知道当前加载的进度,所以我们需要对Glide进行扩展。同理,我们先来看看效果:现在我们正式开始吧添加依赖implementation 'com.github.bumptech.glide:glide:3...

2019-11-21 13:57:16 1253

原创 android 通知权限与通道

相信大家都经历过手机应用里各种促销的消息狂轰乱炸,最后有时候在不厌其烦的情况下要么直接禁用通知,要么直接卸载。那么有没有办法让用户自己去选择接收特定的通知呢,答案是肯定的,这就用到通道的概念了。通道,顾名思义就是通知的道路,通知走哪一条道路是由开发者定义的。下面我们就来模拟下一个集成聊天消息和促销消息的应用的通知。我们先来看看效果,首先界面效果图,界面里面包含了发送促销消息和聊天消息两个按钮:...

2019-11-21 11:01:57 2281

聊天气泡练手的东西.zip

本文件里面包含了两个聊天气泡的.9文件,能随着聊天内容自动的拉伸,

2019-09-26

playMusicView.zip

这是音乐播放时候的圆盘360度转动与指针的移出与移入圆盘。

2019-08-05

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

TA关注的人

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