android
文章平均质量分 53
老仙儿
朝阳区 望京
展开
-
Android 实现菜单拖拽排序题
标签、拖拽、android转载 2022-08-04 10:40:43 · 539 阅读 · 0 评论 -
Android页面中的titleBar被状态栏遮挡
Android、FluttertitleBar被遮挡原创 2022-08-03 20:02:20 · 1685 阅读 · 0 评论 -
打包local .aar文件加载编译问题
打包,aar包加载,gradle版本原创 2022-07-13 16:30:33 · 1856 阅读 · 0 评论 -
fragment多层叠加时出现点击穿透
fragment多层叠加时出现点击穿透原创 2022-07-04 16:59:20 · 448 阅读 · 0 评论 -
判断手机是否连接网络
一、新的方法(适用6.0版本以上,api>=23)@SuppressLint("NewApi")private boolean isNetAccess() { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkCapabilities networkCapabilities = connecti.原创 2022-02-10 16:45:14 · 806 阅读 · 0 评论 -
java的bean对象,转换为json串
kotlin写法:val listType = object : TypeToken<List<LocalPano?>?>() {}.typeval target: MutableList<LocalPano> = LinkedList()target.addAll(value) // 数据赋值val gson = Gson()val json = gson.toJson(target, listType)java写法:Type listType.原创 2022-01-02 21:45:02 · 1872 阅读 · 0 评论 -
view.postDelayed() 不执行的原因
延时用的View.postDelayed()。而对比了下,用Handler.postDelayed()又没有问题。折腾了好一会。最后发现是执行view.postDelayed()之前,view被remove了注:我的代码中调用了removeHeaderView,这个view就在headView中如果在执行view.postDelayed()之前,view被remove了。那么View.postDelayed()就会因为View.mAttachInfo为null,而将action发送到Vi...原创 2021-10-09 09:56:54 · 791 阅读 · 0 评论 -
javax.crypto.BadPaddingException: error:1e000065:Cipher functions:OPENSSL_internal:BAD_DECRYPT
使用了AES的解密方法,对RSA的加密串解密,就会报这样的错误顺便列出来AES加密和解密,RSA加密和解密的方法:AES工具类:package com.ganji.officeb.utils;import android.text.TextUtils;import java.math.BigInteger;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.spec.Se原创 2021-08-25 19:48:04 · 4424 阅读 · 1 评论 -
Fragment 懒加载实践
开发中,Fragment 最常见的两种使用方式就是 ViewPager 嵌套 Fragment ,以及直接通过FragmentManager 来管理 Fragment,对应的交互场景相信大家心里都有一个原型,没有的话也没关系,后边会有例子的。但这和懒加载有什么关系呢?试想一下,如果每个 Fragment 都有默认的网络请求操作(也可能是其它耗时操作,这里以网络请求为例),那么多个在 Fragment创建过程中都会执行默认网络请求,无论 Fragment 是否对用户可见,显然有些浪费流量、影响性 App 性能转载 2021-08-06 14:59:52 · 225 阅读 · 0 评论 -
ContentResolver
概述ContentProvider虽说我们平时用的并不多,但是作为安卓四大组件之一,其地位不容忽视。ContentProvider的作用是为不同的应用之间数据共享,提供统一的接口,我们知道安卓系统中应用内部的数据是对外隔离的,要想让其它应用能使用自己的数据(例如通讯录)这个时候就用到了ContentProvider。ContentProvider如何共享数据ContentProvider通过uri来标识其它应用要访问的数据,通过ContentResolver的增、删、改、查方法实现对共享数据的操转载 2021-08-05 18:40:49 · 1526 阅读 · 0 评论 -
Android四个组件---Service
一、Service简介Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类, 只不过它没有UI界面,是在后台运行的组件。 Service是Android中实现程序后台运行的解决方案,它非常适用于去执行那些不需 要和用户交互而且还要求长期运行的任务。Service默认并不会运行在子线程中,它 也不运行在一个独立的进程中,它同样执行在UI线程中,因此,不要在Service中执 行耗时的操作,除非你在Service中创建了子线程来完成耗时操作。二、按使用方原创 2021-08-05 17:33:33 · 124 阅读 · 1 评论 -
okhttp,服务器返回的json数据,日志异常,不能打印log
问题: 请求方式 ----> POST Http 版本:http/1.1 请求头 ----> Content-Type: application/x-www-form-urlencoded 请求参数 ----> token: ZEdsaGJtaHZibWRtWVc0PSRkR2xoYm1odmJtZG1ZVzQ9JE1UWXlOVFExTmpFM05TNDNNVEE0JDRjNDRjZDkwZjViYzBkYzIwMDU3NWM1ZjU3NTYwZDYwu;...原创 2021-07-07 17:34:14 · 616 阅读 · 0 评论 -
动态设置ListView的分割线无效的解决办法
listView.setDivider(context.getResources().getDrawable(R.color.color_f11f1f1)); listView.setDividerHeight(1);原创 2021-06-01 18:03:18 · 104 阅读 · 0 评论 -
seekbar带有圆角的进度条
<SeekBar android:id="@+id/sb_playVoice" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center" android:paddingLeft="@dimen/dimen_10" android:paddingRight="@dimen/dimen_10" android:lay.原创 2021-05-28 18:26:49 · 2165 阅读 · 2 评论 -
gitlab远程仓库路径改变,导致本地无法pull/push代码的解决方法
场景:当本地项目在gitlab远程仓库的路径发生变化时,我们本地项目拉代码会失败;解决此问题步骤如下:执行命令一:git remote remove origin执行命令二:git remote add origin 新仓库地址觉得上面的不清晰,可以看下面详细步骤:提示的具体错误信息:解决方具体解决方法,下面分几个步骤,图中标注1,2,3,4,5补充:--------------------...转载 2021-03-29 16:36:09 · 853 阅读 · 0 评论 -
DecorView@ba3a7e3[InputHouseRentActivity] that was originally added here
场景:在activity中创建了一个dialog,并给dialog中加了一个回调出现的原因:dialog在回调的时候并没有dismiss解决方法:回调完之后dismiss就好了原创 2021-01-19 14:42:36 · 191 阅读 · 0 评论 -
ScrollView嵌套ListView,显示不全和位置不是顶部的解决办法
1、前言当你看到这篇文章的时候,其实你就已经错了,因为ScrollView 中嵌套 List 或 RecyclerView 的做法官方明确禁止。除了开发过程中遇到的各种视觉和交互问题,这种做法对性能也有较大损耗。ListView 等 UI 组件自身有垂直滚动功能,也没有必要在嵌套一层 ScrollView。目前为了较好的 UI 体验,更贴近 Material Design 的设计,推荐使用 NestedScrollView。在APP开发中会用到listview和某个Linearout一起滑动的情况,转载 2020-12-29 10:57:42 · 280 阅读 · 0 评论 -
关于onSaveInstanceState和onRestoreInstanceState的使用
背景如果系统由于系统约束(而不是正常的应用程序行为)而破坏了Activity,那么尽管实际 Activity实例已经消失,但是系统还是会记住它已经存在,这样如果用户导航回到它,系统会创建一个新的实例的Activity使用一组保存的数据来描述Activity在被销毁时的状态。系统用于恢复以前状态的已保存数据称为“实例状态”,是存储在Bundle对象中的键值对的集合。解决onSaveInstanceState()和onRestoreInstanceState()就是这样的背景下大展身手了。注意原创 2020-11-09 17:43:22 · 218 阅读 · 0 评论 -
android studio查看某个类修改历史
查看某个类的修改历史记录:(远端)查看某个类的修改历史记录:(本地)原创 2020-11-05 17:08:40 · 477 阅读 · 0 评论 -
Android 版本号---版本名
版本号 版本名 中文名 API Q android Q API 28 android 9.0 Pie 馅饼 API 27 android 8.1 Oreo 奥利奥 API 26 android 8.0 Oreo 奥利奥 API 25 android 7.1 Nougat 牛轧糖 API 24 android 7.0 Nougat 牛轧糖 API 23 android 6.0 Marshm.原创 2020-11-05 10:27:36 · 635 阅读 · 0 评论 -
recycleView,第一个item占据两行
先看效果图:Activity:(Activity的布局就不加了,就一个recycleView)public class MainActivity extends AppCompatActivity { private List<Fruit> fruitList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) {原创 2020-11-04 11:25:29 · 1574 阅读 · 0 评论 -
Android中开发需要的高效助推的命令总结
Android 开发中我们有时候需要借助一些命令帮助更好的高效率定位解决问题,本文就来介绍一些可能有些隐藏的而却非常好用的命令,可以帮我们快速找到问题,这些命令都是本人在开发中实践总结,个人觉得非常实用,所以可能对于你不是很有用,但是了解也是很好的,而 Android 中的命令很多的,有些个人觉得没多大用就不在这里提了,好了,下面就开始命令的分析总结。基础命令在说这些命令之前,得先提及一些基本命令用法:第一个:cat 命令主要用于查看文件内容,这个命令的重要性不言而喻,有时候我们想查看.转载 2020-10-21 11:14:53 · 172 阅读 · 0 评论 -
Android--剪贴板
Clipboard是Android提供的一个系统服务,它提供了一个全局的剪贴板,让文字、图片、数据,在多App间共享成为可能,今天,我们来了解下它的真面目,以及被玩坏的新姿势。老规矩,Google API文档镇楼:https://developer.android.com/guide/topics/text/copy-paste.html说实话,如果不是为了让Clipboard玩出花,我真不想写这一篇,因为——这文档写的真是太TM详细了。Clipboard应用我们先来看看一些App对Clip转载 2020-10-19 15:18:47 · 1474 阅读 · 0 评论 -
Android:子线程不能更新UI??可以!!
1、前言众所周知在Android中,子线程是不能更新UI的; 那么我在想,为什么不能,会产生什么问题; 是否真的就一定不能在子线程更新UI;2、能否在子线程中更新UI答案是可以的,比如以下代码:@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_m转载 2020-10-19 14:47:53 · 390 阅读 · 1 评论 -
TextView在不同分辨率上展示的行高问题,TextView行间距适配
TextView的自带行间距是由于绘制的汉字没有占满descent和ascent的空间引起的,且该行间距在不同的字号以及分辨率下表现不一。若能够去除掉这部分行间距,就能达到适配目的。最终适配方案如下:public class ExcludeInnerLineSpaceSpan implements LineHeightSpan { // TextView行高 private final int mHeight; public ExcludeInnerPaddingSpan原创 2020-09-29 14:31:10 · 410 阅读 · 0 评论 -
腾讯Android原生UI框架---QMUI
QMUI Android 的设计目的是用于辅助快速搭建一个具备基本设计还原效果的 Android 项目,同时利用自身提供的丰富控件及兼容处理,让开发者能专注于业务需求而无需耗费精力在基础代码的设计上。不管是新项目的创建,或是已有项目的维护,均可使开发效率和项目质量得到大幅度提升。功能特性大致如下:大致解读一下,就是功能有三大特性:可以全局配置 UI 样式,一处修改,全局生效,超级方便。 提供了丰富的 UI 控件库,各种动画,列表,Button,底部菜单,下拉刷新,各种 Tab,弹框等等,以原创 2020-09-22 18:40:26 · 1373 阅读 · 0 评论 -
Glide缓存key的问题
最近项目里面有个地方是在前面用glide加载图片后,后面再另外一个地方加载相同图片时没有复用glide的缓存,而是自己另外又重新缓存了一套。查找后发现问题是glide缓存的key不一致的问题。从key的生成可以看到和很多参数有关,逐一排查后,发现了width和height还有id不一样。下面直接上代码,解决方案:(代码的相互调用关系)File file = new File(ImageManager.getUrlPicLocalPath(this, "网络图片url"));if(file原创 2020-08-10 18:45:25 · 982 阅读 · 0 评论 -
AlarmManager.setRepeating不准确的问题,被setWindow()或者setExact()替代
背景:当我们想让Android应用程序定时为做一件工作时,我们往往会在一个BroadcastReceiver中使用AlarmManager.setRepeating()方法来实现。在API 19(即Kitkat)之后,这一方法将不再准确地保证每次工作都在你设置的时间开始。解释:Note:Beginning in API 19, the trigger time passed to this method is treated as inexact: the alarm will not ..转载 2020-07-01 10:24:55 · 2351 阅读 · 1 评论 -
javax.net.ssl.SSLHandshakeException: com.android.org.bouncycastle.jce.exception.ExtCertPathValidator
解决办法:将手机系统时间和网络时间同步就好了估计https是操作和时间戳有关,本机时间和服务器时间不一致,导致服务器端验证失败原创 2019-11-28 15:54:04 · 455 阅读 · 0 评论 -
Android 布局优化
在编写Android布局时总会遇到这样或者那样的痛点,比如: 有些布局的在很多页面都用到了,而且样式都一样,每次用到都要复制粘贴一大段,有没有办法可以复用呢? 解决了1中的问题之后,发现复用的布局外面总要额外套上一层布局,要知道布局嵌套是会影响性能的呐; 有些布局只有用到时才会显示,但是必须提前写好,虽然设置了为invisible或gone,还是多多少少会占用内存的...转载 2019-11-28 15:31:47 · 186 阅读 · 0 评论 -
阿里热更新hotfix
官方文档地址:https://help.aliyun.com/document_detail/69874.html?spm=a2c4g.11174283.6.552.KE7jWx集成开始:1、进入管理控制台2、新建产品下载aliyun-emas-services.json文件 后面配置需要的数据,都在该文件中二、SDK引入SDK引入有以下两种...原创 2019-11-22 18:22:21 · 305 阅读 · 0 评论 -
Room数据库框架的使用
google推出了自己的数据库框架:Room 有点类似于greenDao的使用官方介绍:The Room persistence library provides an abstraction layer over SQLite to allow fluent database access while harnessing the full power of SQLite1、首先我们需...原创 2019-11-21 14:57:55 · 559 阅读 · 0 评论 -
Android系统到应用启动流程分析
1、Android系统启动Android系统启动从用户按下电源键开始。 用户按下电源键,引导芯片代码从预定义的地方开始执行,加载引导程序BootLoader到RAM,然后开始执行。 启动引导程序BootLoader,用来引导Android系统的启动工作。然后,Linux内核启动。 Linux内核启动后,设置缓存、被保护存储器、计划列表、加载驱动等操作。当内核完成系统设...转载 2019-11-11 10:27:26 · 115 阅读 · 0 评论 -
使用luban压缩图片,报错 Didn't find class "android.support.media.ExifInterface" on path:
luban压缩library地址:https://github.com/Curzibn/Luban我使用的是这个版本 implementation 'top.zibin:Luban:1.1.5'使用方法如下:private <T> void withLs(final List<String> pics) { Luban.with(th...原创 2019-10-30 17:59:00 · 796 阅读 · 0 评论 -
studio编译的时候,出现com.android.builder.core.AndroidBuilder.mergeManifestsForApplication 的错误
android studio在编译过程中,由于添加第三方的依赖 可能导致manifest文件和并失败,报以以下错误:org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':maodiandian:processDebugManifest'. at org.gradle.api.internal.t...转载 2019-10-30 14:54:40 · 3922 阅读 · 0 评论 -
前置摄像头,水平翻转
private List<String> imgPaths = new ArrayList<>(); File file = new File(FILE_PATH); if (file.exists()) { if (mBitmap != null) { mBitma...原创 2019-10-17 18:06:28 · 942 阅读 · 0 评论 -
各个大神博客地址
本篇文章主要纪录我在学习过程中,发现的非常给力的CSDNBlog和个人Blog,这些Blog都有一个共同的特点,即内容详实,讲解透彻,也算是给后来的初学者指一条路吧!只要你下定决心跟随强者的脚步,成为人们眼中的大神,只不过是时间问题! 下面排名不分先后 CSDN 鸿洋:http://blog.csdn.net/lmj623565791翻译 2017-01-12 15:12:07 · 393 阅读 · 0 评论 -
zipalign命令无法使用的问题
E:cd E:\Sdk\tools (zipalign命令所在的文件夹)zipalign -v 4 F:\上线\test0.apk F:\上线\signed.apk以上是使用zipalign的步骤,如果zipalign命令不能使用,则需要下载zipalign.exe文件原创 2017-01-13 17:41:59 · 3429 阅读 · 0 评论 -
fragment预加载问题
我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个fragment都需要去加载数据,或从本地加载,或从网络加载,那么在这个activity刚创建的时候就变成需要初始化大量资源。这样的结果,我们当然不会满意。那么,能不能做到当切换到这个fragment的时候,它才去初始化呢?答案就在Fragment里的setU转载 2017-01-08 10:16:30 · 754 阅读 · 0 评论 -
universalimageloader
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢!大家好!差不多两个来月没有写文章了,前段时间也是在忙换工作的事,准备笔试面试什么的事情,现在新工作找好了,新工作自己也比较满意,唯一遗憾的就是自己要去一个新的城市,新的环境新的开始,希望自己能尽快的原创 2016-11-26 22:54:36 · 426 阅读 · 0 评论