![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
Brick farmers
我们不生产代码,只做代码的搬运工
展开
-
viewPager的adapter--FragmentInstancePagerAdapter
viewPager的adapter原创 2023-12-08 16:12:49 · 498 阅读 · 0 评论 -
android之图片选择器--pictureselector
pictureselector原创 2023-11-23 14:14:58 · 2238 阅读 · 1 评论 -
Android图像选择之 PictureSelector
一款针对Android平台下的图片选择器,支持从相册获取图片、视频、音频&拍照,支持裁剪(单图or多图裁剪)、压缩、主题自定义配置等功能,支持动态获取权限&适配Android 5.0+系统的开源图片选择框架。废话不多。开干!!添加依赖: //图片选择器 api 'io.github.lucksiege:pictureselector:v3.11.1' //图片压缩 api 'io.github.lucksiege:compress:v3.11.1'原创 2023-09-15 12:23:15 · 2785 阅读 · 1 评论 -
java堆栈解析
(2)在栈中查找有没有存放值为"abc"的地址,如果没有,则开辟一个存放字面值为"abc"的地址,接着创建一个新的String类的对象o,并将o的字符串值指向这个地址,而且在栈中这个地址旁边记下这个引用的对象o。上例中,当我们将str1的值改为"bcd"时,JVM发现在栈中没有存放该值的地址,便开辟了这个地址,并创建了一个新的对象,其字符串的值指向这个地址。以上两段代码说明,只要是用new()来新建对象的,都会在堆中创建,而且其字符串是单独存值的,即使与栈中的数据相同,也不会与栈中的数据共享。原创 2023-09-15 10:17:07 · 240 阅读 · 0 评论 -
java 中的volatile关键字
在java的多线程的内存模型中存在main memory和work memory。对于共享变量的访问,线程是先从main memory中copy一份到work memory中,操作完毕后再把work memory中的变量值写回到main memory。如果将变量声明为volatile,则可以保证变量的可见性,实现的原理也很简单粗暴,声明为volatile的不允许copy到work memory中。volatile 是java中用来解决多线程的共享访问问题的,不过它解决的是变量级别的。原创 2023-09-15 10:16:19 · 71 阅读 · 0 评论 -
Java HashMap实现详解
同时,我们也可以发现,当数组长度为15的时候,hash值会与15-1(1110)进行“与”,那么 最后一位永远是0,而0001,0011,0101,1001,1011,0111,1101这几个位置永远都不能存放元素了,空间浪费相当大,更糟的是这种情况中,数组可以使用的位置比数组长度小了很多,这意味着进一步增加了碰撞的几率,减慢了查询的效率!在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。原创 2023-09-15 10:09:28 · 78 阅读 · 0 评论 -
安卓安卓点击下拉菜单实现:PopMenu
PopMenu实现下拉菜单原创 2023-02-17 17:37:26 · 321 阅读 · 1 评论 -
安卓图片裁剪之Android-Image-Cropper简单使用
一个好用的图片裁剪框架原创 2023-02-15 10:32:34 · 2169 阅读 · 2 评论 -
android实现view震动效果
要实现view的震动效果,只需要对需要的view添加动画即可原创 2022-12-27 17:36:27 · 647 阅读 · 0 评论 -
ViewPager + Fragment + RadioButton的使用
viewPager + Fragment + radioGroup原创 2022-12-27 15:56:41 · 199 阅读 · 0 评论 -
通过drawable实现不一样的ProgressBar
通过drawable实现自定义颜色的进度条原创 2022-12-27 15:41:17 · 263 阅读 · 0 评论 -
Android 动态申请权限
安卓权限申请工具类原创 2022-12-21 15:04:35 · 568 阅读 · 0 评论 -
手机一些信息的获取(电池相关、versionName、屏幕相关等)
【代码】手机一些信息的获取(电池容量、电量、versionName)原创 2022-12-20 18:04:28 · 260 阅读 · 0 评论 -
EditText设置密码可见与不可见
输入用户密码是每一个app必备的功能。密码若需要设置可见不可见可采用如下方式:if (isChecked) { // 密码可见 edView.transformationMethod = HideReturnsTransformationMethod.getInstance()} else { // 密码不可见 edView.transformationMethod = PasswordTransformationMethod.getInstance()}// 切换密码是否可见时,e原创 2022-04-13 11:08:16 · 913 阅读 · 0 评论 -
Andriod中的内存溢出问题总结
Andriod中的内存溢出问题总结万恶的staic 尽量不要用大图片的加载course多线程多内存的影响一、 Android的内存机制 Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似。程序员通过new为对象分配内存,所有对象在java堆内分配空间;然而对象的释放是由垃圾回收器来完成的。C/C++中的内存机制是“谁污染,谁治理”,java的就比较人性化了,给我们请了一个专门的清洁工(GC)。 那么GC怎么能够确认某一个对象是不是已经被废弃了呢?原创 2022-04-02 14:11:43 · 527 阅读 · 0 评论 -
Android高效权限管理框架:EasyPermissions
Android现在将所有的权限归为了两类,一类是普通权限,一类是危险权限。对于普通权限,系统会自动帮我们进行授权,不需要手动操作。对于危险权限,必须要由用户手动进行点击授权才可以,否则程序无法完成相应的功能。下面介绍今天的主角:EasyPermissionsEasyPermissions 是一个包装库,用于在面向 Android M 或更高版本时简化基本系统权限逻辑。开始撸:首先,引入依赖: // android x: implementation 'pub.devrel:easyperm原创 2022-03-30 16:03:11 · 5280 阅读 · 0 评论 -
android布局优化之< merge /> 和 <ViewStub />
在activity被初始化后。执行到onCreate后, 会执行setContentView()。这个哪怕是个初学者也会知道。但这里有一个小问题:如果layout的嵌套过于复杂,会出现绘制过度或者加载变慢等问题。那就需要对layout进行优化。那么优化方式多种多样,比如约束布局 - ConstraintLayout:ConstraintLayout 是一个ViewGroup,可以在Api9以上的Android系统使用它,它的出现主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。从 A原创 2022-03-30 15:08:01 · 2803 阅读 · 0 评论 -
ConstraintLayout 约束布局 实现负数布局
以前相对布局RelativeLayout可以利用layout_marginTop="-320dp"达到自己想要的效果,但是ConstraintLayout是不行的,但是我们可以利用Space达到相同的效果<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"转载 2022-03-29 16:02:38 · 518 阅读 · 0 评论 -
自定义一个android通用shape样式的TextView
在开发中经常遇到需要各种样式的shape定义来实现一些圆角、渐变等UI效果。所以每一次都需要自己去定义,然而这个过程会产生很多问题,比如命名规范就是一个很头疼的问题。而且文件多了以后也会增加包体积。可复用的概率又很低。所以需要一个通用样式的shape。今天他来了。。。首先,在values中定义一个xml:shape_asster.xml<?xml version="1.0" encoding="utf-8"?><resources> <declare-st原创 2022-03-24 10:12:03 · 2576 阅读 · 0 评论 -
移除List数组中的某一个元素
近期在开发中遇到了需要移除数组中某一个元素的业务。具体例子如下:假如有一个数组中有{1,2,3,1,1,4,5,6,1}等元素,如果需要移除掉数组中所有的元素“1”。如此。首先想到的是循环这个数组。挨个判断挨个移除。后来发现在kotlin中有可以直接使用的函数:moveIf,下面说一下用法:kotlin实现(两者是一样的):list.removeAll { x -> x in "1" }//或者list.removeIf { x -> x in "1" }END...原创 2022-03-21 13:54:19 · 2957 阅读 · 0 评论 -
在drawable目录下的文件中添加一张图片
应用场景如下(需要动态加载一个图片,但是只能拿到drawable目录,图片文件在mipmap中):binding.rbUnDamage.setButtonDrawable(R.drawable.draw_disabled_button)1、首先,在res下新建drawable文件夹2、新建一个资源文件。类型为:layer-list3、添加如下代码:<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="原创 2021-12-14 09:52:25 · 6543 阅读 · 0 评论 -
Android之官方屏幕适配:ScreenMatch
Android ScreenMatch屏幕适配是一种简单适用的适配方式,是由Android官方推出的适配方法。废话不多说直接上干活:1.首先下载安装ScreenMatch插件,Ctrl+Alt+S打开Plugins2、创建dimens.xml并存放在values目录下下载地址:dimens下载点这里3、生成values-sw384dp~values-sw1365dp :使用鼠标左键点击任意文件夹点击ok弹出Over, adapt successful提示表示生成成功,继续点击ok转载 2021-11-09 13:41:56 · 399 阅读 · 0 评论 -
android 调用系统下载
android直接调用系统的下载方法进行文件下载,不废话,直接上代码:首先,创建系统下载的工具类,DownloadManagerUtil.java:import android.app.DownloadManager;import android.content.Context;import android.net.Uri;import android.os.Environment;public class DownloadManagerUtil { private Con原创 2021-07-01 16:24:09 · 1876 阅读 · 0 评论 -
android 加载PDF
项目中用到了在线加载PDF,原本以为是一件很简单的事情,只要一个webView就可以搞定。但是最终被狠狠的打了脸。经过不懈的努力。终于发现了下面的sdk,支持本地预览和在线预览。不多说。上代码首先,添加依赖:implementation 'com.wdeo3601:pdf-view:1.0.4'注意:添加该依赖后,若要正常运行,所有module的minSdkVersion不可小于21,即 android 5.0xml引入:<com.wdeo3601.pdfview.PDFVi转载 2021-07-01 15:49:42 · 871 阅读 · 3 评论 -
配置webView加载h5页面
如下都是常用配置。直接粘贴即可 vBinding.wvSign.webChromeClient = object : WebChromeClient() { override fun onProgressChanged(view: WebView?, newProgress: Int) { if (newProgress == 100) { vBinding.progressBar.isGone原创 2021-06-17 14:05:37 · 627 阅读 · 0 评论 -
解决webView页面点击返回按钮直接退出Activity的问题
在webView页面中,如果点击Android手机的返回按钮,默认则会直接退出webView所在的Activity页面。但是我们有时候需要的是点击返回按钮。返回web页面的上一页。所以需要监听返回按钮解决方案如下:webView.setOnKeyListener { view, keyCode, keyEvent -> if (keyEvent.action == KeyEvent.ACTION_DOWN) { if (keyCode == KeyEven原创 2021-06-17 11:56:12 · 1556 阅读 · 0 评论 -
解决webView加载http请求图片不展示问题
使用webView加载图片时。如果请求方式为http,则会影响图片展示。只需要在代码中加如下代码即可:webSettings.blockNetworkImage = false //解决图片不显示 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { webSettings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW原创 2021-06-17 11:51:12 · 1043 阅读 · 0 评论 -
android 限制小数点后面位数及小数点前面位数(可自定义)
Android在Edittext中限制小数点后面的位数及小数点前面的位数,代码如下:java实现: private int behind = 2 //小数点后面限制位数 private int front = 3 //小数点前面限制位数 editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int star原创 2021-05-08 11:45:57 · 689 阅读 · 0 评论 -
关于Android 获取权限也无法读写的问题
有一部分手机。即使获取了权限也无法读写。这个问题很逆天,解决很简单,在app里边的application里添加android:requestLegacyExternalStorage="true"END原创 2021-04-22 20:51:46 · 711 阅读 · 0 评论 -
实例化Fragment并调用其方法
一个关于获取Fragment实例的扩展函数。可用于获取Fragment和调用实例Fragment中的方法传值新建FragmentManget.kt :import androidx.annotation.IdResimport androidx.annotation.Sizeimport androidx.fragment.app.Fragmentimport androidx.fragment.app.FragmentManagerimport androidx.fragment.app.原创 2021-04-08 16:29:16 · 665 阅读 · 1 评论 -
图片压缩框架--Tiny
最近项目中用到了图片压缩的知识点。在此记录一下。Tiny优势:Tiny在异步线程池中压缩图片,并在压缩完成后将结果返回到主线程一、支持的压缩类型图片压缩框架支持的压缩数据源类型:BytesFileBitmapStreamResourceUri(network、file、content)单个数据源压缩以及批量压缩,支持的压缩类型:数据源—>压缩为Bitmap数据源—>压缩为File数据源—>压缩为File并返回压缩后的Bitmap批量数据源—>批量压原创 2021-03-24 17:24:19 · 1019 阅读 · 0 评论 -
设置状态栏颜色
沉浸式状态栏好看吗?废话不多。直接上代码:先添加依赖: implementation 'com.readystatesoftware.systembartint:systembartint:1.0.3'添加设备系统工具类:OSUtil.javaimport android.os.Environment;import android.text.TextUtils;import java.io.File;import java.io.FileInputStream;import java.i原创 2021-03-19 16:30:41 · 424 阅读 · 0 评论 -
Kotlin动态设置View前景色扩展函数
在java代码里动态设置Tint 和 Res 值。话不多说。上代码:新建 kotin类:ViewResSetterfun View.setBackgroundTintRes(@ColorRes colorRes: Int) { val colorStateList = ContextCompat.getColorStateList(this.context, colorRes) setBackgroundTintColor(colorStateList)}fun View.set原创 2021-03-09 19:03:25 · 717 阅读 · 0 评论 -
利用Kotlin扩展函数实现线程切换
工具类:private val handler = Handler(Looper.getMainLooper())private val coreSize = Runtime.getRuntime().availableProcessors() + 1private val fix: ExecutorService = Executors.newFixedThreadPool(coreSize)private val cache: ExecutorService = Executors.newCa转载 2021-03-08 10:49:56 · 905 阅读 · 0 评论 -
利用Matisse实现相册图片选择
关于选择相册图片,Android有原生的支持。但是不能多选。市面上关于图片选择的框架很多。但是可能是本人水平有限,测试过很多个。各有各的缺陷。目前Matisse是比较好用的。不废话。直接上效果图:这个框架的UI封装的有蓝色和灰色两种。可以自由选择。来说一说用法1、首先,引入框架依赖:implementation 'com.zhihu.android:matisse:0.5.3-beta3'版本我这里用的是最新的:0.5.3-beta3。后续版本更新的话。可以在GitHub中查看。在Mati原创 2021-03-04 10:52:15 · 1538 阅读 · 3 评论 -
ARouter实现Module之间跳转
随着开发趋向于模块化,ARouter使用则也越来越多。用于模块化之间的通信问题。如果需要在各个模块之间相互跳转,则按下方方式实现,已淌过坑。首先,在根目录(项目)的 build.gradle 中添加如下代码classpath 'com.alibaba:arouter-register:1.0.2'然后在每个有跳转需求的Module中均需添加配置。implementation 'com.alibaba:arouter-api:1.5.1'集成完成以后,依旧在每个需要跳转的Module中添加如下原创 2021-03-01 14:38:45 · 1154 阅读 · 3 评论 -
Android 实现view点击水波纹效果
添加view的水波纹点击效果。只需要添加如下代码android:foreground="?android:attr/selectableItemBackground"如果是需要该页面全局均有效果,则在根目录添加。如果是单个view,则在对应view中添加。原创 2021-02-26 12:04:08 · 479 阅读 · 0 评论 -
解决项目中使用kotlin不能直接引用xml中id
kotlin新特性支持直接在kt文件中引用xml中view的id,省略掉了findViewById的步骤。使用起来比较简单。如果项目中出现不能直接引用的问题。则可能是插件的问题。添加如下代码即可:或者:附上:‘kotlin-android-extensions’END...原创 2021-02-26 11:45:49 · 2470 阅读 · 0 评论 -
多个方框样式的输入框
现在很多app中。输入验证码的时候都是多个输入框样式,如图具体实现方法新建 atts.xml<?xml version="1.0" encoding="utf-8"?><resources> <attr name="lineWidth" format="dimension" /> <attr name="lineColor" format="color" /> <attr name="stokesColor"转载 2021-02-25 15:49:35 · 523 阅读 · 0 评论 -
修复ScrollView 嵌套RecyclerView 滑动异常
异常情况普通Scrollview 嵌套RecyclerView 时,当recycerview数据量比较大,加载完数据后,会出现页面自动定位到recyclerview的位置导致页面自动滑动了解决在Scrollview 根布局 加上 android:descendantFocusability="blocksDescendants"属性<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" .转载 2021-01-21 13:44:05 · 126 阅读 · 0 评论