- 博客(104)
- 收藏
- 关注
原创 Mac 上解压缩 RAR 文件
RAR 在十几年前的互联网曾叱咤风云般的存在。在那时,你所能见到的压缩文件几乎都是 RAR 格式,大家在 Windows 上使用的压缩、解压缩软件基本都是 WinRAR。Mac 加压缩 RAR 工具推荐虽然这些年使用 RAR 格式的压缩包的情况在逐渐减少,但是你还是经常能在国内各种网站下载到使用 RAR 格式的压缩文件,可遗憾的是默认情况下在 Mac 上不能直接打开 RAR 文件解压缩,也没有 Mac 版 WinRAR。
2023-03-06 16:17:37 1627
转载 Java对象大小计算
结合第一章《理论篇》的知识,猜想一下,在64位虚拟机下,Java对象的大小。这是在代码中打印对象大小的方法。在 Maven 项目的。学习和掌握该知识,有助于分析。“应用系统的堆到底该设置为多大?3.1 指针压缩的 JVM 参数。3.2 借助 jol-core。本文计算的是Java对象在。2.1 Object对象大小。2.2 包含实例数据的对象。对齐填充(数组对象才有的)打印对象大小的 API 是。
2023-03-02 21:42:43 1054
原创 Java泛型全解析
无论为泛型的类型形参传入哪一种类型的实参,对于Java来说,他们依然被当成同一个类处理,在内存中也只占用一块内存空间,可以灵活的封装,并且同时有可以限定类型,泛型的接口和类更像是一种通用的模型,模型内部的类型由使用者自己限定。"用于操作具体的某个泛型类的时候,还未确定最终使用时,采用的对象类型,就用问号作为占位的含义。使用泛型接口或类的时候,虽然可以不加部分,但是推荐加上,不然还要强制类型转换等麻烦操作。可以有多个限定条件,存在多个限定条件的时候,使用&连接。使用类型通配符的类是各种该类的泛型的父类。
2023-01-17 18:54:05 532
原创 java多态的理解
多态方法调用的优先级: this.show(O(o )、super.show(O(O )、this.show )、super.show (super )、super (o ) )对象后,用该父类引用调用子类重写的方法,此时多态就出现了。多态是方法的多态,不是属性的多态(多态与属性无关)。多态的存在要有3个必要条件:继承,方法。,父类引用指向子类对象。
2022-09-16 10:31:57 112
原创 taskAffinity详解
一个Android应用程序功能通常会被拆分成多喝Activity,而各个Activity之间通过Intent进行连接,而Android系统,通过栈结构来保存整个App的Activity,栈低的元素是整个任务栈的发起者。一个合理的任务调度栈不仅是性能的保证,更是提供性能的基础。当一个App启动时,如果当前环境中不存在App的任务栈,那么系统就会创建一个任务栈。
2022-08-25 10:18:49 1302
原创 Annotation Processor
当我们依赖一些第三方的库时,可能会遇到com.android.support冲突的问题,就是因为开发者使用的compile或api依赖的com.android.support包与我们本地所依赖的com.android.support包版本不一样。RetentionPolicy.SOURCE表示修饰的注解只在源码中保留,编译后就被遗弃了,也就是class文件中就不存在了。该依赖方式会传递所依赖的库,当其他module依赖了该module时,可以使用该module下使用api依赖的库。...
2022-07-25 16:17:11 4082
原创 ImageView比例缩放
备注: adjustViewBounds只有在ImageView一边固定,一边为wrap_content的时候,设置为true,可以让ImageView的比例和原始图片一样的效果。
2022-06-11 15:01:43 571
原创 时间转换 2021-08-03T06:06:41Z
fun formatDateTime(value: String?, format: String = "yyyy-MM-dd HH:mm"): String { if (TextUtils.isEmpty(value)) return "" return try { //系统类 DateTime(value).toString(format) } catch (e: Exception) { "" }}也是好不容易找到.
2022-05-16 15:37:43 324
原创 Debug.startMethodTracing,trace文件找不到
是因为生成文件的路径不是sd卡的根目录,网上的代码大部分还是不靠谱的。生成的文件在sd卡:Android/data/packagename/files/xxx.trace参考文章:启动优化工作选择 - 白一粥 - 博客园...
2021-12-02 11:45:09 658
转载 音频开发_如何获取单词的音频mp3文件
1.gstatic oxfordhttps://ssl.gstatic.com/dictionary/static/sounds/oxford/no--_gb_1.mp3https://ssl.gstatic.com/dictionary/static/sounds/oxford/yes--_gb_1.mp32.有道词典http://dict.youdao.com/dictvoice?type=1&audio=sheilahttp://dict.youdao.com/dictvoic
2021-11-16 00:13:15 1022
原创 流式布局FlowLayout使用
原先用的是三方的流式布局,后来发现google自己也有,效果是一样的。<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" an
2021-10-19 13:37:04 1503 1
转载 Notification
最近时不时地有人问我这样或那样的通知如何实现,所以本文将根据个人经验对Notification做个总结,以供参考!什么是通知(Notification)通知是一个可以在应用程序正常的用户界面之外显示给用户的消息。通知发出时,它首先出现在状态栏的通知区域中,用户打开通知抽屉可查看通知详情。通知区域和通知抽屉都是用户可以随时查看的系统控制区域。作为安卓用户界面的重要组成部分,通知有自己的设计指南。在Android 5.0(API level 21)中引入的 Material Design 的变化是
2021-10-19 11:52:32 650
原创 BottomNavigationView底部图标和文字的显示问题
一、BottomNavigationView3个以上图标不显示文字当图标大于3个时,显示图标和当前页的文字。调用BottomNavigationView的setLabelVisibilityMode方法可以解决布局设置:<com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bnv_main" app:menu="@menu/bottom_nav
2021-10-17 11:34:52 2870 2
转载 发布aar包到maven仓库
Android:发布aar包到maven仓库以及 maven插件 和 maven-publish 插件的区别在日常开发中,不可避免的需要把自己的 library 发布到 maven 仓库中,这样使用起来也更加方便。发布 aar 包到 maven 仓库,主要是使用 Gradle 提供的插件: maven 插件(旧版),在 Gradle 6.2 之后,就完全被弃用了(增加了@Deprecated注解) maven-publish 插件 maven插件,是 Gradle 1.0 的..
2021-10-12 13:40:21 2451
转载 资源id与资源名称互相转换
Android 资源名称(name)和id互相转换,动态获取一、通过传递图片名称,获取对应的图片idpublic int getId(String name){ Resources res=getResources(); //return res.getIdentifier(name,null,null);//带上地址 例如 包:type/name (org.anjoy.act:drawable/ic) return re
2021-09-12 12:08:54 433
转载 非静态内部类不能定义静态成员变量和静态方法
非静态内部类不能有静态成员!成员内部类必须先实例化外部类对象然后再实例化成员内部类;非static的内部类,在外部类加载的时候,并不会加载它,所以它里面不能有静态变量或者静态方法。1、static类型的属性和方法,在类加载的时候就会存在于内存中。2、要使用某个类的static属性或者方法,那么这个类必须要加载到jvm中。基于以上两点,可以看出,如果一个非static的内部类如果具有static的属性或者方法,那么就会出现一种情况:内部类未加载,但是却试图在内存中创建static的属性和方..
2021-09-04 10:08:52 933
原创 Handler之同步屏障机制(sync barrier)
分析中,发现不错的文章分析,暂时做个记录:https://www.cnblogs.com/wytiger/p/13031145.html
2021-06-09 10:13:51 202 1
原创 布局动画 LayoutTransition
在API 11后,添加了两个能实现在创建后添加控件仍能应用动画的方法,分别是android:animateLayoutChanges属性和LayoutTransition类。他们的API 等级必须>=11。使用方法:ViewGroup使用LayoutTransition即可为布局变化应用动画效果。ViewGroup#setLayoutTransition(LayoutTransition) android:animateLayoutChanges="true"通过...
2021-05-19 18:39:07 472 7
原创 SeekBar高度设置、自定义样式
最近在自定义SeekBar的滑块、拖动条时,发现底部的背景和滑块一样高,鼓捣了半天也没有效果,主要还是SeekBar的高度、滑块高度、拖动条高度定义未搞清楚,现在做个记录以便以后参考:1、滑块高度:可以在自定义Drawable文件中,通过<size android:height="10dp" android:width="10dp" />设置<selector xmlns:android="http://schemas.android.com/apk/r...
2021-05-14 15:14:06 2999 7
原创 Broadcast广播的分类
BroadcastReceiver(广播接收器),属于Android四大组件之一。在分析ANR产生原因时,涉及到部分广播的知识,我将针对广播类型,做个记录:1. 普通广播(Normal Broadcast)即开发者自身定义intent的广播(最常用),也就是并行广播。发送广播使用如下:Intent intent = new Intent();//对应BroadcastReceiver中intentFilter的actionintent.setAction(BROADCAST_AC...
2021-04-30 14:42:04 2539 2
转载 Android ANR 原理分析
ANR 简介ANR:Application Not Responding,即“应用程序无响应”。Android 运行时,AMS 和 WMS 会监测应用程序的响应时间,如果应用程序主线程(即UI线程)在超时时间内对输入事件没有处理完毕,或者对特定操作没有执行完毕,就会上报 ANR。ANR 的触发分为以下几类, InputDispatching Timeout:输入事件(包括按键和触屏事件)在5秒内无响应,就会弹出 ANR 提示框,供用户选择继续等待程序响应或者关闭这个应用程序(也就是杀掉这个应用
2021-04-30 11:51:45 1868 1
原创 android 跳转到当前应用的详情、设置页面
分析三方权限申请源码时,发现不错的逻辑,做个记录: Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) .setData(Uri.fromParts("package", getPackageName(), null)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);...
2021-04-28 11:03:20 2654 4
原创 自定义控件-时间轴
由于项目中有需求,就简单的封装一个,先记录一下,有时间上传到github。1、先增加自定义属性:<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="global_TimelineLayout"> <!--时间轴左偏移值--> <attr name="global_line_margin_left" for
2021-04-25 09:41:55 653 4
转载 android存储路径详解
前言前两天因为开发一个app更新的功能,我将从服务器下载的apk文件放在了内部存储目录(测试手机为小米,路径为:data/user/0/packagename/files)下面,然后安装的时候一直安装不了,提示解析包出错。后来查询发现,安装apk是调用了PackageInstaller,没有相关权限,这个无法获取内部路径,所以会安装不了。借机也复习了一遍Android下面存储相关的知识点,特来总结一番。存储分类对于Android存储目录,我总结成一张思维导图,如果有需要原图的,请在..
2021-04-20 17:53:38 13765 2
转载 toast能在子线程中弹出吗
Android人知道在安卓中不能在子线程中更新ui,为什么呢?真的不能吗?先做个试验,我们在子线程中调用toast,看看有什么效果,按照上边一句话的意思,这里应该会报错显示不能再子线程中刷新ui吧val thread = object : Thread() { override fun run() { Toast.makeText(this@MainActivity, "123", Toast.LENGTH_LONG).show() }}thread.start
2021-04-18 23:14:54 483 2
原创 获取顶部状态栏高度
//获取顶部status bar 高度private int getStatusBarHeight() { Resources resources = mActivity.getResources(); int resourceId = resources.getIdentifier("status_bar_height", "dimen","android"); int height = resources.getDimensionPixelSize(resourceId);.
2021-03-18 10:16:21 635
原创 maven设置每次构建获取最新jar包版本号
一般开发过程中,版本都是SNAPSHOT版本的。在跨工程引用的时候,获取最新版本的jar。经常就是不断的更新版本,通过版本变更来获取最新版本的jar。其实是可以声明变化版本,让gradle每次编译都去获取最新时间戳版本的jar(目前只可以解决相同分支jar问题,如果是多分支合作,代码获取会存在问题)。build.gradle中的依赖是通过设置maven依赖实现。我们知道,maven可以说是通过一个坐标定位来确定唯一一个包的,所说的坐标定位分别是groupId,artifactId和versi...
2021-03-17 11:55:08 3021
原创 小米手机电量和性能的白名单
小米手机Note 3有个“电量和性能”设置,如果没有把app设置为无限制,侧app在后台很容易被杀,导致每次重新启动app,针对该情况,做了个判断/** * 电池优化设置 */object BatteryOptimization { /** * 判断当前APP是否有加入电池优化的白名单(目前只限于小米 Note3手机) */ fun isIgnoreBatteryOptimization(activity: Activity?):...
2021-02-03 14:20:30 3246 2
原创 hashcode方法的重写
重写hashCode()方法的基本规则a、注意事项1、同一个对象多次调用hashCode()方法应该返回相同的值2、两个对象通过equals()方法比较返回true时,这两个对象的hashCode()方法应返回相等的值3、对象中用作equals()方法比较标准的Field,都应该用来计算hashCode值b、计算步骤 1、各数据类型field的计算方式Field类型 计算方式 boolean hashCode = (f?0:1); 整数类型(byte、sho..
2021-01-10 21:54:24 1962
转载 drawable 资源目录加载顺序
1、同一张图片放在不同文件夹下有什么不同?Android默认的资源检索顺序?比如真机分辨率是xxhdpi,那么如果将图片放在xhdpi下图片会被放大,而将图片放在xxxhdpi中图片会被缩小。drawable-xxhdpi文件夹下有这张图就会优先被使用,在这种情况下,图片是不会被缩放的。但是,如果drawable-xxhdpi文件夹下没有这张图时, 系统就会自动去其它文件夹下找这张图了,优先会去更高密度的文件夹下找这张图片,我们当前的场景就是drawable-xxxhdpi文件夹,然后发现这里也没有
2020-12-24 19:02:08 584 1
转载 Scrollview嵌套webview空白
最近在做一些页面详情页的时候,因为需要用到ScrollView嵌套webview进行部分网页的显示。因为之前用的是6.0的android版本测试的,所有没有发现问题。后来在android9.0的版本测试的时候,才发现会出现,webview的页面显示为空白或者高度为0这两种情况。网上查了好多解决方案,基本都不能用,虽然有一个在onPageFinished里面重新设置webview的高度,但是这种限死高度的事情肯定是会有问题的,所有基本也可以放弃这个方案。最后通过测试webview的加载过程,在初始化的
2020-11-13 10:51:08 382
原创 AbstractProcessor使用小结
1、没有注册信息,也就没有目标类生成使用 google auto-service添加依赖,一定别忘了加 annotationProcessor,auto-service 的原理是找到被@AutoService标记的自己写的Processor,然后生成注册信息,如果没依赖 annotationProcessor 就没有注册信息,也就没有目标类生成build.gradledependencies { implementation 'com.google.auto.service:au
2020-11-11 18:01:33 3306
原创 加速maven构建
maven仓库用过的人都知道,国内有多么的悲催。还好有比较好用的镜像可以使用,尽快记录下来。速度提升100倍。<url>http://maven.aliyun.com/nexus/content/groups/public</url>android工程配置如下:...
2020-11-04 21:56:28 173
原创 DrawerLayout常用方法
1、当DrawerLayout滑动出来的时候,默认是会给侧边栏下面部分的界面蒙上一层阴影,如果需要去除阴影:drawer.setScrimColor(Color.TRANSPARENT);//也可以设置为想要的颜色2、DrawerLayout的侧边滑动可以通过设置锁定模式来禁用:drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);备注:这样设置侧边栏弹出之后无法使用滑动来关闭,只能通过点击空白区域来关闭侧边栏,可以..
2020-10-30 18:05:10 781
转载 Jetpack 之 LifeCycle 组件使用详解
一、LifeCycle 简介LifeCycle 是一个可以感知宿主生命周期变化的组件。常见的宿主包括 Activity/Fragment、Service 和 Application。LifeCycle 会持有宿主的生命周期状态的信息,当宿主生命周期发生变化时,会通知监听宿主的观察者。LifeCycle 的出现主要是为了解决: 系统组件的生命周期与普通组件之间的耦合性。系统组件指:Activity/Fragment、Service 和 Application。 普通组件指:将代码按照功能或者作用
2020-09-27 13:57:59 115
转载 ItemTouchHelper基本用法
ItemTouchHelper是谷歌提供的用于实现Recyclerview 拖拽效果的帮助类,今天我们来学习下它的基本用法首先ItemTouchHelper需要实现它的一个内部抽象类CallBackpublic class ItemTouchHelperCallback extends ItemTouchHelper.Callback { private IMoveAndSwipeCallback iMoveAndSwipeCallback; public...
2020-09-21 16:51:45 3306
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人