自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(252)
  • 收藏
  • 关注

原创 OkHttp初识拦截器

OkHttp拦截器

2022-10-11 21:14:09 314

原创 Android短信Messaging数据库字段分析

Android短信Messaging数据库字段分析

2022-07-30 13:55:25 227

转载 cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头

cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头

2022-07-25 12:49:45 9425

转载 Android自定义控件:三个构造函数

Android自定义控件:三个构造函数

2022-07-23 11:42:40 177

原创 <? extends T> 和 <? super T> 的使用

<? extends T> 和 <? super T> 的使用

2022-07-21 23:13:58 210

转载 Ubuntu adb 报错:no permissions (user in plugdev group; are your udev rules wrong);

Ubuntu adb 报错:no permissions (user in plugdev group; are your udev rules wrong);

2022-07-05 19:58:32 247

转载 HashMap 的底层结构和原理

1. 讲讲 HashMap 的底层结构和原理HashMap 就是以 Key-Value 的方式进行数据存储的一种数据结构嘛,在我们平常开发中非常常用,它在 JDK 1.7 和 JDK 1.8 中底层数据结构是有些不一样的。总体来说,JDK 1.7 中 HashMap 的底层数据结构是数组 + 链表,使用 Entry 类存储 Key 和 Value;JDK 1.8 中 HashMap 的底层数据结构是数组 + 链表/红黑树,使用 Node 类存储 Key 和 Value。当然,这里的 Entry 和 Nod

2022-05-29 22:21:20 2815

转载 Android 自定义组合控件-编写一个登录界面

看完这篇文章你可以学到什么知识呢?自定义组合控件封装view,只暴露接口,模块独立,设计思想。会用到正则表达式如何禁止EditText在获取到焦点的时候拉起键盘学会登录中获取验证码的倒计时效果EditText的内容添加与删除效果图分析首先分析一下!其实对于UI来说,也是可以封装起来的,比如说,我们这里面涉及到了手机号码的检查、涉及到验证码的检查,涉及到是否同意协议来控制按钮是否可用,这些动作我们都可以隐藏起来。把这些所有看得见的,都当成一个View,这个View具备这些功能。然后使

2022-03-06 15:58:46 357 1

转载 Android 开发如何禁止EditText选中复制粘贴

@SuppressLint("ClickableViewAccessibility") public void disableCopyAndPaste(final EditText editText) { try { if (editText == null) { return ; } editText.setOnLongClickListener(new View.OnLong

2022-02-23 23:12:56 758

原创 关于 Java 中的 WeakReference

一. 简介WeakReference 如字面意思,弱引用,当一个对象仅仅被weak reference(弱引用)指向, 而没有任何其他strong reference(强引用)指向的时候, 如果这时GC运行, 那么这个对象就会被回收,不论当前的内存空间是否足够,这个对象都会被回收。二. 认识WeakReference类WeakReference 继承 Reference,其中只有两个构造函数:public class WeakReference<T> extends Reference&

2022-02-20 13:20:48 315

原创 handler.post 方法理解与解释

本文我想说明的是为什么要使用handler.post方法,它和常用的handler.sendmessage方法的区别是什么?1、先看handler.post在主线程中使用:new Handler().post(new Runnable() { @Override public void run() { mTest.setText("post");//更新UI } });可以看到,new了Runnable对像是开启了一

2022-01-27 15:02:01 2870

原创 Android 图片性能优化:Bitmap

一、引入        图片作为内存消耗大户,一直是开发人员尝试优化的重点对象。Bitmap的内存从3.0以前的位于native,到后来改成jvm,再到8.0又改回到native。jvm每个进程都有内存上限,而native则没有限制(不是没有影响,至少不会oom),所以把内存大户Bitmap挪到native可能是很多人的梦想,但native的管理和实现明显比jvm更为复杂,除非有现成实现,很少有人去动这一块。二、初识Bitm

2022-01-16 01:21:51 1975

转载 Android okhttp3.0 框架使用总结

Android okhttp3.0 框架使用总结

2022-01-09 11:20:54 60

原创 Java:volatile关键字

目录一、简介1.volatile 是什么?2.volatile 的作用二、并发编程的3个基本概念1.原子性2.可见性3.有序性三、锁的互斥和可见性四、Java的内存模型JMM以及共享变量的可见性五、volatile变量的特性1.保证可见性,不保证原子性2.禁止指令重排六、volatile不适用的场景1.volatile不适合复合操作2.解决方法七、volatile原理八、单例模式的双重锁为什么要加volatile一、简介1.volatile 是什么?    &

2022-01-02 15:58:36 52

转载 Android Zxing框架:生成二维码+扫码功能

Android 超简易Zxing框架 生成二维码+扫码功能

2020-09-11 21:55:36 243

原创 Android 动态设置控件高度

TextView textView= (TextView)findViewById(R.id.textview); // 这里(TextView 外层父布局是LinearLayout,如果不是应该变换)LinearLayout.LayoutParams linearParams =(LinearLayout.LayoutParams) textView.getLayoutParams(); //取控件textView当前的布局参数 linearParams.height = 20;// 控件的高

2020-09-11 15:05:55 683

转载 RecyclerView之ItemDecoration由浅入深

RecyclerView没有像之前ListView提供divider属性,而是提供了方法recyclerView.addItemDecoration()其中ItemDecoration需要我们自己去定制重写,一开始可能有人会觉得麻烦不好用,最后你会发现这种可插拔设计不仅好用,而且功能强大。ItemDecoration类主要是三个方法:public void onDraw(Canvas c, RecyclerView parent, State state)public void onDrawOv

2020-09-04 00:06:07 136

转载 isSelected() 的使用

今天在练习android的时候实现一个功能:发送一段文字,当点击该文本框的时候是文本加密,当再次点击该文本的时候文本框中的内容回复原样。实现该功能需要使用两个函数:(1)PasswordTransformationMethod.getInstance() 该函数的功能是将一段文字进行加密,将其变成一排点(2)HideReturnsTransformationMethod.getInstance() 该函数的作用和上一个函数的作用相反,其函数的功能则是将加密的文字进行解密,从而将其的明文显示出来。

2020-09-03 23:01:22 4675

转载 XRecyclerview有的手机不能加载更多

一、确定问题首先确定一下问题到底是什么,测试说xrecyclerview(一个github上的三方库,不知道的可以去github上找找,有细节上的bug整体来说很好用)的上拉加载更多功能在有的手机上可以加载更多,有的手机上不能加载更多,这说明这个功能是没有问题的,因为有手机可以实现,难道是手机的问题?拿来测试说的不能上拉加载更多的手机,连上adb,查看一下日志,没有很多信息,就是onLoadMore()接口方法没有被调用,打开crecyclerview源码,找到哪里调用了这个接口,如下:@Overrid

2020-08-29 16:10:38 162

原创 解决NestedScrollView嵌套RecyclerView滑动冲突导致无法正常调用加载更多功能

XML如下:<android.support.v4.widget.NestedScrollView android:id="@+id/nested_scroll_view" android:layout_height="match_parent" android:layout_width="match_parent"> <LinearLayout android:layout_height="match_parent" a

2020-08-29 14:04:28 4582

原创 Android 某些字体颜色设置方法

https://blog.csdn.net/Super_666/article/details/106825700?%3Ehttps://blog.csdn.net/LUFANZHENG/article/details/52850985?locationNum=4&fps=1

2020-08-27 10:16:56 194

转载 Android Studio 在layout文件夹下建立子文件夹

碰到一个问题。(不是太重要,强迫症发作一时忍不住了)。Android Studio 在layout文件夹下建立子文件夹:在说之前,我们可以在Android Studio 的res目录下 直接创建一个layout文件的。res/new /Android resource directory / recource type 下拉选择layout ,directory name 设置你选择的名称。但是你要是在这里面创建文件的话,会发现你建的文件压根没什么用。不信你试试,在你 setOncreateVie

2020-08-26 23:22:40 2310 7

原创 java任务调度之Timer定时器(案例和源码分析)

java任务调度之Timer定时器(案例和源码分析)Android 倒计时(Timer定时器)MainActivitypublic class MainActivity extends AppCompatActivity { private TextView tvTimer; private ImageView imageTimer; private int countDownNum = 9; private Timer mtimer; private Tim

2020-08-26 23:17:53 87

原创 Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音(全代码)

ListView的A-Z字母排序和过滤搜索功能并且实现汉字转成拼音的功能,我们知道一般我们对联系人,城市列表等实现A-Z的排序,因为联系人和城市列表我们可以直接从数据库中获取他的汉字拼音,而对于一般的数据,我们怎么实现A-Z的排序,我们需要将汉字转换成拼音就行了,接下来就带大家实现一般数据的A-Z排序功能,首先先看下效果图上面是一个带删除按钮的EditText,我们在输入框中输入可以自动过滤出我们想要的东西,当输入框中没有数据自动替换到原来的数据列表,然后下面一个ListView用来显示数据列表,右侧

2020-08-26 22:33:00 974

原创 SectionIndexer 详解

/** * 接口可以被adapter实现,使AbsListView的sections之间可以快速滑动 * 一个secton是一群列表,有很多相似点,例如他们可能以相同的字母开头,或者是来自同一个歌手的歌曲 * ExpandableListAdapters认为groups和sections是同一个缩放组,应该返回一个合适的位置 * 可以看一下AbsListView中setFastScrollEnabled(boolean)方法 */public interface SectionIndexer {

2020-08-25 22:19:13 153

转载 通过 PackageManager 获得你想要的 App 信息

一、前言开门见山,开篇明义。有些场景下,我们会需要获取一些其它 App 的各项信息,例如:App 名称,包名、Icon 等。这个时候就需要使用到 PackageManager 这个类了。本篇就 PackageManager 的使用,做一个详尽的讲解,助你拿到各项 App 的信息,当然也包括一些未安装的 App 的信息。二、需要提前了解的一些类当你需要获取到指定 App 的各项信息的时候,你需要操作一些 Android 为我们提供的对应的 Api。你首先需要获取 PackageManager(以下简

2020-08-24 23:29:39 307

转载 深入分析Java中的关键字Static

在平时开发当中,我们经常会遇见static关键字。这篇文章就把java中static关键字的使用方法的原理进行一个深入的分析。先给出这篇文章的大致脉络:首先,描述了static关键字去修饰java类、方法、变量、代码块的方法然后,从底层分析static关键字,接下来,给出static的一些使用场景和案例最后,对static进行一个总结,包括和普通变量的区分。OK,开始今天的文章。一、static关键字的基本用法1、static关键字基本概念我们可以以一句话来概括:方便在没有创建对象的情况下来进行调

2020-08-24 21:46:47 74

转载 Android-Editext的InputFilter

InputFilter主要是对输入的文本进行过滤的,里面只有一个filter方法//InputFilter接口,需要重写filter方法public interface InputFilter{ /** * @param source 输入的文字 * @param start 输入-0,删除-0 * @param end 输入-source文字的长度,删除-0 * @param dest 原先显示的内容 * @param dstart 输入-原光标位置,

2020-08-24 21:15:31 121

原创 Android 多语言切换

前言:Android应用的开发不可能仅仅针对某一个国家或者区域使用,因此APP必须支持多种语言,为了实现这个特性,Android给出了一个解决方案,在res文件夹下通过values+语言编码来实现多国语言的支持(中间採用连字符号-连接)比如:values-es代表英文,在网上看过不少关于多语言切换的文章,但都没有达到自己的效果。1、在项目res目录下新建需要的语言配置文件这里新建了3种语言文字,需要其他语种的自行添加语种简称中文(中国)values-zh-rCN中文

2020-08-22 16:42:59 4450

转载 Android 开发 PopupWindow弹窗

Android 开发 PopupWindow弹窗

2020-08-20 23:27:16 89

转载 TabLayout 踩坑之 onTabSelected没有被回调的问题

TabLayout 踩坑之 onTabSelected没有被回调的问题

2020-08-20 14:54:59 116

原创 小知识--TextUtils.isEmpty与String.isEmpty

1、TextUtils.isEmpty与String.isEmptyjava中,String 类下的 isEmpty( ) 返回的只是 字符串的长度是否为0,如果 字符串为null 就会直接报空指针。源码如下:public boolean isEmpty() { return count == 0; }android中,TextUtils.isEmpty(要判断的字符串) 会对 null 和长度进行判断,所以不会报空指针。源码如下:public static boolean isEmpty(@

2020-08-20 14:53:13 606 2

转载 Android控件-TabLayout使用介绍

Android控件-TabLayout使用介绍

2020-08-20 14:36:29 66

转载 Glide v4 目标

关于Target在Glide中,Target 是介于请求和请求者之间的中介者的角色。Target 负责展示占位符,加载资源,并为每个请求决定合适的尺寸。被使用得最频繁的是 ImageViewTargets ,它用于在 ImageView 上展示占位符、Drawable 和 Bitmap 。用户还可以实现自己的 Target ,或者从任何可用的基类派生子类。指定目标into(Target) 方法不仅仅用于启动每个请求,它同时也指定了接收请求结果的 Target 。Glide 提供了一个辅助方法 into

2020-08-17 23:25:05 81

原创 Glide只播放一次Gif以及监听播放完成的实现方案

需求:近段时间正好有一个需求,是要实现Gif图只加载播放一次,并且要在Gif播放完毕后回调给系统的需求。因为Glide 3系列的API与4系列还是有很大差距的,这里我们针对Glide 3.x和Glide 4.x的分别进行实现方案的说明。解决方案:在Glide3.x的解决方案:Glide.with(this).load("xxxurl") .listener(new RequestListener<Integer, GlideDrawable>() {

2020-08-17 23:16:01 3050

原创 Android NestedScrollView 嵌套ViewPager不显示和出现空白部分 解决方法

1、不显示问题–重写ViewPagerpublic class MyViewPager extends ViewPager { public MyViewPager(Context context) { super(context); } public MyViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override

2020-08-09 23:17:08 1517

原创 关于Static interface methods are only supported starting with Android N (--min-api 24): void butterkni

错误提示Static interface methods are only supported starting with Android N (--min-api 24): void butterkni大概意思就是静态接口方法只从Android N开始使用。解决方法因为静态接口需要在Java 8 下才支持使用,所以我们要使用静态接口,就需要在app的build.gradle文件中配置声明,使用Java 8编译。compileOptions { sourceCompatibility Ja

2020-08-08 17:24:49 404

转载 TabLayout 踩坑之 onTabSelected没有被回调的问题

一、 问题描述最近项目中有个需求:一个页面顶部有3个tab,每一个tab分别展示一个不同的页面,点击tab 切换到对应页面。进入页面是默认选中第一个页面。这不很简单的一个需求嘛?很明显,用TabLayout 分分钟实现,于是打开Android Studio ,几分钟后写下了如下代码:public class TabActivity extends AppCompatActivity { private TabLayout mTabLayout; @Override protec

2020-08-04 23:40:09 849

转载 Android 选择图片、上传图片之PictureSelector

GitHub:PictureSelectorhttps://blog.csdn.net/yechaoa/article/details/79291552

2020-07-31 22:14:05 291

转载 Android 系统拍照及打开系统相册 完美适配 Android 10、9、8、7、6、5、4

一、适配背景1、Android 4.4及以上设备  Android 4.4(简称 4.4)及以上设备 的图片文件路径与4.4以下设备的路径是完全不一样的,需要开发者自行拼接。2、Android 6.0 及以上设备  Android 6.0(简称 6.0 )及以上设备 在调用一些功能的时候,开发者系统申请权限,部分权限属于危险权限,涉及到用户隐私相关问题,现在应用市场都强制要求进行相关适配了,如果开发者还未适配,那么只能证明您的软件,用户量好像很低了,建议开发者进行跳槽吧。3、Android 8.0

2020-07-30 22:19:55 1581

空空如也

空空如也

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

TA关注的人

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