自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2020-11-26 11:43:33 241

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

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

2020-11-09 12:12:15 80

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

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

2020-10-27 10:34:47 150

原创 买卖股票最大收益

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

2020-10-23 16:23:11 93

原创 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 65

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

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

2020-10-22 15:03:59 149

原创 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 77

原创 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 197

原创 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 52

原创 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 50

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

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

2020-07-30 11:25:18 195 3

原创 Android 权限申请工具类

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

2020-07-29 12:13:19 162

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

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

2020-07-28 14:46:01 166

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

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

2020-07-21 11:49:53 121

原创 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 1994 2

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

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

2020-03-18 13:50:39 144

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

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

2020-03-17 16:51:33 50

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

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

2020-03-17 16:43:31 39

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

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

2019-11-29 17:27:19 792 3

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

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

2019-11-28 17:24:49 870 3

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

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

2019-11-28 16:34:45 1231

原创 Android AlertDialog获取EditText的输入值

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

2019-11-21 16:38:40 462

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

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

2019-11-21 13:57:16 338

原创 android 通知权限与通道

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

2019-11-21 11:01:57 348

原创 Android 广告轮播图(最简单的实现)

本篇文章主要介绍的是图片的轮播图实现。我们先来看看最后的实现效果。抱歉,这里最后的GIF图是通过视频转换来的。最后的效果图有了,那么接下来就开始具体的实现。首先,添加依赖//图片轮播框架 implementation 'com.youth.banner:banner:1.4.10' //glide,比较好的版本,Matisse版本,配合glide3.7.0,因为后面的gli...

2019-11-21 10:10:24 1077

原创 android 沉浸式(透明)状态栏实现

沉浸式状态栏或者透明状态栏在很多应用中都是存在的,如下图这样的效果在未添加透明式状态的功能时,界面是这样的:其实这样的效果实现很容易,只需要几行代码即可。我们只需要在Activity中的onCreate方法中://透明式状态栏 if (Build.VERSION.SDK_INT>=21){ View decorView = getWindow(...

2019-11-18 17:25:03 385

原创 Android openfire插件开发关于openfire:4.2.3以后版本的问题

我们在网上能看到许许多多的关于openfire插件开发的文章,都会教你如何去在把openfire源码下载下来后如何导入eclipse,并且如何去开发自己的第一个插件。现在我们下载最新版本的是Openfire-4.4.2,源码下载下来后,发现第一步就没有办法走通。因为解压后里面根本没有以前文章里面说的什么src,source等目录。那么到底哪个版本是可用的呢?我们先来看看github源码的截图,路...

2019-10-14 10:02:59 210

原创 Android 修改Message的body格式,用以存放消息时间等-smack:4.3.4

Android 修改Message的body格式,用以存放消息时间等-smack:4.3.4我们上一篇文章讲了如何直接去扩展Message的节点,但我们会发现最后功能的实现有些复杂,当我们在客户端发送消息时添加扩展后,不知为啥,接收的时候总是无法解析。现在我们用另外一种更为简便的方法来获取消息内容的同时获取消息的时间。首先,我们同样来看看Message原始的xml结构初始的时候,我们在bod...

2019-10-12 09:59:20 105

原创 Android Smack 扩展Message消息节点(smack:4.3.4)-扩展消息时间和用户信息

Android Smack 扩展Message消息节点(smack:4.3.4)我们都知道在利用openfire+smack开发即时聊天工具时,由于自带Message消息体的局限性,消息题里面很简单,有些不符合自己的需求。这就需要我们自己去扩展message的消息节点,本文在最新的smack:4.3.4基础上给大家展示扩展Message消息节点date来放置消息时间。首先,我们来看看Messa...

2019-10-11 14:18:43 581

原创 Android 监控软件盘的关闭(更好的优化IM 消息展示)

Android 监控软件盘的关闭(更好的优化IM 消息展示)由于本人在写IM聊天案例中,在聊天界面利用RecyclerView展示消息item。为了更好的展示消息item在软件盘的打开与关闭的移动,需要对软件盘进行监听。首先,自定义EditTextViewpackage cn.xie.imchat.view;import android.content.Context;import a...

2019-09-29 14:30:19 65

原创 Android smack聊天输入框与RecyclerView的实现与兼容(ChatActivity界面布局)--优化

Android smack聊天输入框与RecyclerView的实现与兼容(ChatActivity界面布局)本文通过自己手写的例子来看如何实现聊天输入框以及RecyclerView与输入框之间的相互适应。首先,我们来看看整体输入框布局实现的效果再来看看具体的布局实现下面的代码就是上面截图的具体实现。整个activity_chat.xml的layout布局中,最外层是LinearLayo...

2019-09-26 16:44:08 133

原创 Android 最简单的聊天气泡界面布局(adapter的布局)

Android 最简单的聊天界面布局这是一个最简单的聊天界面布局,您可以在上面添加各种自己的需求。首先,我们来看看效果进入正文这是给大家提供好的轮子,再也不用自己去造轮子了。<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk...

2019-09-26 10:23:07 1052

原创 Android RecyclerView定义item点击事件

Android RecyclerView定义item点击事件我们都知道RecyclerView替换原来的listView已经是大势所趋。RecyclerView的出现代表着我们能自己去扩展实现更多自己需要的功能,但就目前来说,RecyclerView还有一个缺点就是没有了item点击事件,这就需要我们自己来定义了,当然,定义也十分的简单,下面我们就以ContractsAdapter适配器为例来实...

2019-09-26 09:39:44 238

原创 Android xmpp查询用户(模糊查询)

Android xmpp查询用户(模糊查询)此处以smack:4.3.4版本为例,介绍直接根据用户名通过xmpp模糊查询用户。我们先来看看查询的效果查询的方法实现本例用的smack:4.3.4版本,getSearchForm和getSearchResults方法传的是DomainBareJid类型,而之前的版本是String类型,大家在使用的时候需要特别注意,而转换DomainBareJ...

2019-09-24 10:17:57 177

原创 Android SQLite大数据存储优化

Android SQLite大数据存储优化我们都知道SQLite是一个轻量级的数据库,在批量存储大数据的时候很受性能的限制。而在android开发中如果存储数据的效率过慢的话,就会造成程序运行的卡顿,用户体验会很不好。我们都说数据库存储的时候要通过开启事务来进行存储,这样能提高存储的效率,但我们也得知道的是频繁的开关事务是最消耗性能的,所有我这里优化的原则是-减少事务的开启与关闭。首先,我们来...

2019-09-18 17:11:20 242

原创 Android 利用控件显示HTML样式

Android 利用控件显示HTML样式android显示HTML样式的方法很多,此处介绍两种很简单的方法:TextView和WebView方法一、利用TextView或者GiftTextView直接显示这种方法优点是简单,直接设置即可,但缺点就是对样式兼容性不高,对应某些复杂的样式会显示不正确。所以此类方法只适用于显示几行简单的样式的需求,并且当有图片时还需要额外去处理图片。CharSe...

2019-09-17 10:59:42 1455

原创 Android AS中清空缓存中的第三方包或者gradle

Android AS中清空缓存中的第三方包或者gradle在实际利用AS开发android应用的时候,我们不可避免的会自动引用第三方架包或者各个版本的gradle,很多时候我们在引用的时候并没有去指定引用的版本,这就可能出现我们引用的版本不对,导致功能无法实现。我是在集成Mob推送的时候发现华为手机测试推送功能一切正常,但测试小米手机推送的时候就发现这个功能不正常,时灵时不灵的感觉,困了三四天才...

2019-09-17 10:05:22 354

原创 Android Popupwindow弹出窗口的另一种居中显示的方式

Android Popupwindow弹出窗口的另一种居中显示的方式网上有很多关于Popupwindow弹出框位置的文章,不管是居中显示,还是靠上,靠下等等大多数都是用的定位的方式来控制其显示位置的。本文通过另一种简便的方式来控制其居中显示。首先,我们来看看显示的效果图接下来就是正式开始实现我们知道,这个弹出框其实也是一个xml布局。下面的popupwindow_service_line...

2019-08-19 14:17:19 608

原创 Android 跨程序共享数据之访问其他应用数据(访问联系人)

Android 跨程序共享数据之访问其他应用数据(访问联系人)跨程序访问其他程序数据很简单,总的来说就是三步:一、动态申请运行时权限,二、按照其格式拼接对应URI获取数据,三、获取到数据后自己显示。本文以获取手机联系人的例子来实现。首先来看看最后实现效果由于这里只是做最简单的显示,只是用了最原始的listview。真机调试的,模拟器怎么都无法添加联系人动态申请获取联系人的权限代码中Ma...

2019-08-14 11:00:34 962

原创 Android 运行时权限申请之电话权限(兼容6.0以上)

Android 运行时权限申请之电话权限(兼容6.0以上)运行时权限的申请一般是危险权限的申请,在android 6.0以后,所有的危险权限都需要用户手动的确认是否开启。下面图片是所有的危险权限。不必牢记,需要用的时候直接查询即可。本文来看电话权限的申请。1.首先在AndroidManifest.xml中申明权限<!--拨打电话权限--><uses-permission...

2019-08-13 16:28:18 2643

聊天气泡.zip

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

2019-09-26

playMusicView.zip

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

2019-08-05

空空如也

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

TA关注的人 TA的粉丝

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