Android开发
文章平均质量分 71
记录平时开发心得,分享交流。
chaoyu168
码农
展开
-
Android--Incorrect lazy initialization of static field.
volatile的:禁止指令重排序优化,也就保证了instance变量被赋值的时候对象已经是初始化过的,从而避免了上面说到的问题。例如线程1已经分配了地址给instance 但是还没有初始化, 此时线程2 判断intance不是null 直接返回。主要原因是线程安全问题。多线程有可能会对该方法调用造成实例化多次。在该方法加synchronized。原创 2022-10-26 20:32:58 · 895 阅读 · 1 评论 -
android--MediaRecorder.stop()报错java.lang.IllegalStateException
在Android P版本及以下版本出现,解决办法也比较简单:捕获异常规避。原创 2022-10-03 11:43:22 · 1447 阅读 · 0 评论 -
Android--混淆配置
android studio自带java语言的ProGuard工具,主要用来压缩、优化、混淆,然后配合Gradle构建工具实现混淆。在app module中统一配置混淆规则我们可以直接在app module中build.gradle文件配置所有module需要混淆的规则。这样,其他module中就无需开启混淆。原创 2022-09-17 13:15:52 · 2530 阅读 · 0 评论 -
Android--OpenGL坐标系
Android 手机中的坐标系(竖屏与横屏):顶点坐标系(竖屏与横屏):OpenGL坐标系(竖屏与横屏):一、世界坐标系(World Coordinates)学名:右手笛卡尔坐标系统。在OpenGL中,世界坐标系是以屏幕中心为原点(0, 0, 0),且是始终不变的。x轴正方向为屏幕从左向右,y轴正方向为屏幕从下向上,z轴正方向为屏幕从里向外。长度单位这样来定:窗口范围按此单位恰好是(-1,-1)到(1,1),即屏幕左下角坐标为(-1,-1),右上角 坐标为(1,1)。原创 2022-09-17 12:50:28 · 1166 阅读 · 0 评论 -
Android--内存泄露分析
一、内存泄露java中的内存泄露是指一个无用对象持续占有内存或无用对象的内存得不到及时的释放,从而造成的内存控件的浪费称为内存泄露。强引用(StrongReference):JVM 宁可抛出 OOM ,也不会让 GC 回收具有强引用的对象;软引用(SoftReference):只有在内存空间不足时,才会被回的对象;弱引用(WeakReference):在 GC(垃圾回收) 时,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存;虚引用(Phant...原创 2021-11-09 21:11:39 · 2111 阅读 · 0 评论 -
Android--扫描文件并统计各类文件数目
最近在模仿小米的文件管理器写一个自己的文件管理器,其中有一个功能是全盘扫描文件并显示每类文件的数目。刚开始使用单一线程,扫描速度简直惨不忍睹,换成多线程扫描以后,速度有较明显的提升,便封装了一个工具类,分享出来。一、遇到的问题首先描述一下遇到的问题:1 . Android端全盘扫描文件2 . 开一个子线程扫描太慢,使用多线程扫描3 . 统计每一类文件的数目(比如:视频文件,图片文件,音频文件的数目)二、解决思路接下来描述一下几个点的解决思路:1 . 首先目录的存储结构是树状结构,转载 2021-10-24 10:40:09 · 944 阅读 · 0 评论 -
Android--存储权限
Android11 更新了新的存储权限分区存储,将不再允许用户授权访问 Downloads 的根目录、每个可用 SD 卡的根目录以及其它应用的目录。应用仍然可以通过 Storage Access Framework API 或者文件选择器来帮助用户从共享存储中选取个别文件。Android SDK大于等于30(Android11)在AndroidManifest.xml中申请,并且代码中也需要动态申请:<uses-permission android:name="android.permis.原创 2021-09-04 20:37:59 · 10167 阅读 · 1 评论 -
Android--Notification横幅通知栏
一、概述1、Notification,是一种具有全局效果的通知,可以在系统的通知栏中显示。在发出一条通知后,手机最上方的状态栏会显示一个通知的图标,下拉状态栏后就可以看到通知的详细内容。2、样式其属性描述如下:1.代表:通知标题,通过 setContentTitle() 方法设置。2.代表:大图标,通过 setSmallIcon() 方法设置。3.代表: 通知内容,通过 setContentText() 方法设置。4.代表:通知消息5.代表:小图标,通过 setLar...原创 2021-05-08 21:29:15 · 4117 阅读 · 4 评论 -
Android--FAILED: out/soong/build.ninja
解决办法:source build/enusetup.shlunch aosp_arm-usermake -j4原创 2021-04-27 20:15:28 · 5446 阅读 · 1 评论 -
Android--<xliff:g> 标签
一、简介全称是:XML Localization Interchange File Format,-->XML本地化数据交换格式。%n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格%n$md:代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格,也可以设为0m,在输出之前放置m个0%n$mf:代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.00二、用法<resourc..原创 2021-04-14 21:41:46 · 368 阅读 · 1 评论 -
Android--ANR日志分析
https://blog.csdn.net/feelinghappy/article/details/99847856https://blog.csdn.net/wq892373445/article/details/105794663原创 2021-04-14 21:33:12 · 2670 阅读 · 1 评论 -
Android--String.xml中转义字符
常见的ASCII十进制交换编码:@ 对应 -----@-----: 对应 -----:-----  对应 -----空格-----  对应 -----空格-----! 对应 -----!-----" 对应 -----"(xml中需要在前面加入)-----# 对应 -----#-----$ 对应 -----$-----% 对应原创 2021-03-28 18:57:20 · 679 阅读 · 1 评论 -
Class.forName()的作用与使用总结
https://blog.csdn.net/fengyuzhengfan/article/details/38086743转载 2021-03-18 21:01:35 · 161 阅读 · 1 评论 -
Android--Button、TabLayout英文小写自动变为大写的问题
解决方法:1、如果是Button自动大写问题,直接设置Button的textAllCaps="false"即可。2、如果是TabLayout自动大写问题,定义一个style,如下:<style name="TabLayoutTextStyle" parent="TextAppearance.Design.Tab"> <item name="textAllCaps">false</item> <item name="a..原创 2021-03-13 21:34:50 · 2525 阅读 · 9 评论 -
Android--设置显示大小导致APP crash
问题原因:在设置中修改显示大小,APP需要重新刷新界面,app是作为一种异常走的onDestroy()方法,并不是正常的按返回键进行的退出执行的onDestroy(),这个时候系统会自动在onSaveInstanceState()方法里面临时性的保存之前的界面状态或者变量信息,方便在onCreate()的时候,从bundle里面直接取出来使用。但是毕竟是异常的状态,有些实体的信息或者fragment堆栈的状态恢复的时候就有可能错乱,导致显示效果出错或者crash。解决办法:复写onSaveInsta原创 2021-02-19 22:26:27 · 986 阅读 · 1 评论 -
Android--设置字体不随系统字体大小而变化
在Application中设置:@Override protected void attachBaseContext(Context base) { final Resources res = base.getResources(); final Configuration configuration = res.getConfiguration(); configuration.setToDefaults(); final Co原创 2020-09-04 20:55:30 · 1317 阅读 · 1 评论 -
Android--java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMerger
android项目在构建时不会报这个错,但是在打包就会报这个错,网上好多文章是:这个错的意思是在你的项目中引用了相同的包。并没有解决我的问题,我是APP 的AndroidManifest.xml 中的包名和项目下的AndroidManifest.xml包名改成不一致的就OK 了;...原创 2020-08-09 20:49:03 · 416 阅读 · 1 评论 -
Android--not permitted by network security policy
从Android9.0开始,Google为了Android的网络安全将不再默认支持Http的请求,所有的请求将需要使用Https,所以当使用大于等于9.0版本时,http的请求将会出现标题中的错误。当然我们如果依然需要使用Http,Google也提供了方法帮我们解决这个问题。方法一:服务器和本地应用都改用 https (强烈推荐)方法二:在APP下的AndroidManifest.xml application中添加:android:usesCleartextTraffic="true".原创 2020-08-09 20:42:45 · 623 阅读 · 1 评论 -
Android--自定义dialog解决margin失效问题
全屏dialog的margin<?xml version="1.0" encoding="utf-8"?><inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/dialogbackground" android:insetTop="50dp"/> <--相当于设置顶部margin<?xml versio原创 2020-05-26 21:49:10 · 1246 阅读 · 1 评论 -
Android--recycleview滚动条
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView.原创 2020-05-26 21:20:01 · 822 阅读 · 1 评论 -
Android--BottomSheet实现可拉伸控件
一、简介Bottom Sheet是Design Support Library23.2 版本引入的一个类似于对话框的控件。 Bottom Sheet中的内容默认是隐藏起来的,只显示很小一部分,可以通过在代码中设置其状态或者手势操作将其完全展开,或者完全隐藏,或者部分隐藏。二、使用1、添加依赖:implementation 'com.android.support:design:2...原创 2019-11-15 10:21:50 · 1976 阅读 · 1 评论 -
Android--高德地图fragment中定位
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" ...原创 2019-10-31 17:25:20 · 2206 阅读 · 0 评论 -
Android--注销登录用户
像我们经常用的app,当我们点击注销按钮之后,一般都会重新返回登陆界面,这时候我们再按返回键是没有用的。其实是将你的任务栈TaskStack清空,注销的功能就完成了。这里要设置Intent的FLAG,在执行完成Activity跳转的时候会清空TaskStack,并且将创建一个新的TaskStackIntent logoutIntent = new Intent(personActivit...原创 2019-10-25 15:44:15 · 1488 阅读 · 0 评论 -
Android--解决打开应用启动出现几秒白屏
闪屏原因剖析StartingWindow(Preview Window)我们正常开发中会在Activity的onCreate()方法中调用setContentView(View)设置该Activity的显示布局,那么问题就来了,既然我们设置了布局,为什么启动的时候还会白屏或者黑屏而不是显示我set的布局呢?下面就带领大家一起来剖析一下原因。当打开一个Activity时,如果这个Activit...原创 2019-10-24 10:12:12 · 1351 阅读 · 1 评论 -
Android--NFC读写
一、NFC APIAPI地址:https://www.android-doc.com/guide/topics/connectivity/nfc/nfc.html二、简介NFC的三种模式读卡器模式(Reader/writer mode)、仿真卡模式(Card Emulation Mode)、点对点模式(P2P mode)。(1)读卡器模式数据在NFC芯片中,可以简单理解成...原创 2019-08-01 10:55:28 · 5422 阅读 · 9 评论 -
git报错:remote: error: hook declined to update refs/heads/master
原因是git上传大文件,git单个最大文件不能超过100mb解决办法:删除大文件,查看提交历史git log回滚git reset commit_id原创 2019-07-30 08:56:59 · 19857 阅读 · 0 评论 -
Android--popupwindow实现底部弹窗
首先在res目录下新建anim目录,在anim目录下建两个动画效果文件,用来控制菜单的弹出和隐藏:image.pngpopshow_anim.xml:<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"&...原创 2019-07-17 10:44:17 · 915 阅读 · 0 评论 -
Android-知识点
一、setResult() 和 finish() 的顺序关系?A ——> startActivityForResult ——> B ——>setResult ——> finish ——> A——>onActivityResult ——>onRestart——>onStart——>onResume二、onSaveInstanceState...原创 2019-07-07 13:36:08 · 371 阅读 · 0 评论 -
上传本地代码及更新代码到GitHub
前提已经安装git第一次上传代码:1、github上创建自己的Repository2、建立git仓库,在本地代码右键选择Git Bash Here,输入:git init3、将项目的所有文件添加到仓库中(不要缺少后面的“.”)git add .4、提交到仓库git commit -m "commit first"5、将本地的仓库关联到GitHub,后面的h...原创 2019-06-10 17:09:08 · 221 阅读 · 1 评论 -
Android--高级工程师学习路线
https://blog.csdn.net/freekiteyu/article/details/87934375转载 2019-06-02 14:30:12 · 519 阅读 · 0 评论 -
Android--高德地图通过经纬度简单的实现轨迹回放
效果图:1、首先去高德地图官网去申请key,然后下载相关jar包。/** * Created by Administrator on 2019/5/31 * <p> * desc:轨迹回放 */public class TraceReloadActivity extends FragmentActivity { private AMap aMap; ...原创 2019-05-31 17:36:04 · 2886 阅读 · 2 评论 -
Android--等待loading
效果图:package utils;import android.app.Dialog;import android.content.Context;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.Windo...原创 2019-05-30 16:38:28 · 12719 阅读 · 2 评论 -
Android--HorizontalListView实现横向滑动
原理:继承AdapterView<ListAdapter>构造的HorizontalListView效果图:下面看源码:这是Activity的布局文件:activity_main.xml<LinearLayout android:layout_width="match_parent" android:layout_h...原创 2019-05-23 15:47:08 · 1671 阅读 · 0 评论 -
Android--获取RecyclerView item(子控件)控件及数据
JSONArray array = new JSONArray(); List<charge> chargesList = new ArrayList<>(); Map<String, String> mDeviceHeaderMap = new HashMap<>(); ...原创 2019-05-07 16:18:51 · 11961 阅读 · 0 评论 -
Android--自定义view详解(一)
一、概述自定义绘制的方式是重写绘制方法,其中最常用的是 onDraw()绘制的关键是 Canvas 的使用Canvas 的绘制类方法: drawXXX() (关键参数:Paint)Canvas 的辅助类方法:范围裁切和几何变换可以使用不同的绘制方法来控制遮盖关系二、自定义绘制知识的四个级别1、Canvas 的 drawXXX() 系列方法及 Paint 最常见的使用Can...原创 2019-04-28 00:22:51 · 701 阅读 · 0 评论 -
Android--屏幕适配
一、原理和使用方法详见:https://github.com/chaoyu168/ScreenXml二、主流的分辨率https://blog.csdn.net/jsonchumpklutz/article/details/83027894原创 2019-04-25 15:04:42 · 244 阅读 · 0 评论 -
Android--TabLayout+ViewPager+Fragment实现切页展示
一、TabLayout+ViewPager+Fragment方法的思路:创建存储多个Fragment实例的列表 创建PagerAdapter实例并关联到Viewpager中 将ViewPager关联到Tablayout中 根据需求改写Tablayout属性二、使用方法1、引入//TabLayout+ViewPager implementation 'com.and...原创 2019-04-23 23:44:18 · 1509 阅读 · 0 评论 -
Android--PickerView库下拉联动选择、时间选择
一、Github地址:https://github.com/Bigkoo/Android-PickerView二、简介这是一款仿iOS的PickerView控件,有时间选择器和选项选择器,新版本的详细特性如下:——TimePickerView 时间选择器,支持年月日时分,年月日,年月,时分等格式。——OptionsPickerView 选项选择器,支持一,二,三级选项选择,并且可以设...原创 2019-04-22 22:53:54 · 1550 阅读 · 0 评论 -
Android--GSYVideoPlayer框架实现播放视频
一、基于IJKPlayer(兼容系统MediaPlayer与EXOPlayer2),实现了多功能的视频播放器。 (请仔细阅读下方各项说明,大多数问题可在下方找到解答)。类型 功能 缓存 边播边缓存,使用了AndroidVideoCache;ExoPlayer使用SimpleCache。 协议 h263\4\5、Https、concat、rtsp、hls、rtmp...原创 2019-04-18 13:54:35 · 37169 阅读 · 30 评论 -
Android--实现搜索功能,历史记录显示
Demo地址:https://github.com/chaoyu168/searchHistory效果图:搜索界面,显示搜索历史,数据保存在本地数据库。词条维持在10条,短词条可以在三行全部显示完,多出的行数隐藏,长词条默认只显示两行,多出的部分隐藏,点击更多箭头展示全部词条,长按出现删除某个词条弹框,点击清理按钮可以清除所有历史记录。 布局使用到鸿洋大神的流式布局,GitHub地址:...原创 2019-04-12 11:44:31 · 12478 阅读 · 2 评论