android
文章平均质量分 70
ScottePerk
这个作者很懒,什么都没留下…
展开
-
android逆向工程反编译指南(详细教程)
要反编译一定要用到工具。apktool是谷歌官方推出的反编译软件,只能说还能用。而且至今没有好用的IDE。android反编译就是通过apktool这个工具来实现的。其他的GUI环境,例如AndroidKiller都是给apktool套了一个壳而已。不过不得不提的是AndroidKiller这个软件还是非常的好用的,虽然已经不再更新,里面的提供的一些小工具还是非常的实用。...原创 2022-07-20 21:11:36 · 6019 阅读 · 0 评论 -
GlideModule AppGlideModule和Generated API详解
GlideModule是3.x下的,已经废弃,这里还是有必要简单介绍下。首先下定义,GlideModule是干什么的,源码文档的第一句话就告诉我们使用来做“懒配置”的。但我没发现到底懒在哪里了?官方文档也没说,想了半天,发现可能是我理解错了,这里的“懒”根本就不是“延迟”的意思,而是“懒惰”的意思。说白了就是统一配置,这样在使用的时候就不用每个都配置了。这样我们就可以“偷懒”了。与其说是“懒配置”,我觉得用“预配置“可能更好点。紧接着官方给了一个例子。}}https。...原创 2022-07-17 18:39:53 · 1136 阅读 · 0 评论 -
android文件系统管理全解析——内部存储和外部存储 /data/data和/sdcard/Android/data区别
文件系统是android一个重要的部分。我们需要保存app的一些数据。或者我们需要用到系统的一些数据,如相册等。那么就需要对文件系统有一定的了解。android文件系统有一个非常让人困惑的地方,就是获取的文件名和路径可能是不确定的。例如下面的代码,这个代码是非常常用的。但这个代码在不同的android版本可能出现的结果不同。可能出现下面的结果。storage和sdcard的区别这里有一个非常困惑的问题,就是storage和sdcard有什么区别?在SDK19(android4.4)开始,androi原创 2022-07-11 00:14:13 · 11968 阅读 · 2 评论 -
Jetpack Compose Scaffold和BottomAppBar(底部导航)
Jetpack Compose 以下简称JCJC提供了Scaffold这个组件来实现一些导航的效果,例如顶部菜单,底部导航,旁边的抽屉菜单等等,Scaffold的意思是脚手架,也就是Scaffold这是提供的一个支架,或者说固定了一些控件实现的位置。下面通过实现BottomAppBar来说明。bottomBar是Scaffold的一个属性,类似的属性还有topbar,这篇文章只介绍bottomBar。topbar可以看这篇文章:topBar主要用到的类其实就是BottomAppBar,这个类也没什么特原创 2022-06-10 15:13:18 · 1228 阅读 · 0 评论 -
Jetpack Compose Scaffold和TopAppBar(顶部导航)
Jetpack Compose Scaffold 实现TopAppBar 顶部导航原创 2022-06-10 13:31:22 · 1300 阅读 · 0 评论 -
android Jetpack之Lifecycle的使用
Lifecycle是Jetpack提供的一个用于监听生命周期的库。我们知道在使用Activity和Fragment的时候,特别是两者一起使用的时候,生命周期将变得非常的复杂。而且我们需要在Activity和Fragment的生命周期方法里面执行非常多的操作,如地理位置,打开关闭资源等。这会造成很高的耦合。Lifecycle就是为了减低生命周期的耦合而设计的。目的是让各种资源自己监听生命周期变化,在独立的类里面实现相应的生命周期逻辑。Lifecycle已经包含在androidx里面,也就是下面的包,默认情况原创 2022-05-23 22:15:09 · 1400 阅读 · 0 评论 -
Android resource linking failed (全网最详细,最全面的解决方案)
这个错误遇到两次了。有必要记录一下。1.解决办法1(无效)注意图片路径,显示的是.gradle/caches/transforms-2这个目录,看情况,网上看到有人是transforms-1,不过我没有这个目录。按照网上的说法删除这个目录,并且invaild and restart。没有效果。2.解决办法2(有效)主要问题是appcompat的问题。我AS版本是3.6.1,原来使用的是1.4.1版本,这个版本太高了,换成1.2.0就可以了。constraintlayout虽然不是这个问题的原因,但原创 2022-04-25 16:30:44 · 59407 阅读 · 5 评论 -
android assert,raw和drawable目录的区别
1.drawable这是我们最熟悉的,drawable有一个很重要的点是会根据手机的分辨率自动的缩放图片。这可能也是被叫做drawable的原因。如果我们完全不希望我们的图片会被压缩,我们可以考虑放在assert或者raw目录下。2.assets很重要的一点是assets和res是同级的,而不是和res/drawable同级。在res下面的文件才会被R类引用。assert不会被R.java文件读取。也就是我们不能通过R.assets.xxx这样的方式获取下面的资源。通过系统提供的AssetManag原创 2022-04-07 20:22:58 · 439 阅读 · 0 评论 -
海信电视进入工厂模式,方便adb
这种方法适合最小的那种遥控器,没有数字键的那种,黑色的。进入设置-声音设置-声音平衡此时按遥控器的菜单、OK,菜单、OK,反复两次,就会进入工厂菜单,然后该方法适用于最新的VIDDA系统。默认是U模式,改为M模式,重启就会看到android的设置界面。然后打开开发者模式就行了。...原创 2022-03-19 17:39:54 · 19342 阅读 · 2 评论 -
ViewPager的PageTransformer和transformPage方法详解
通过PageTransformer这个接口可以实现ViewPager在滑动的时候的一些动画效果。PageTransformer接口只有一个transformPage方法。 void transformPage(@NonNull View page, float position);这个方法第一个参数表示当前正在滑动的页面,第二个参数就比较难以理解了。不过没关系,特地画了图来解释。在我们第一次加载ViewPager没有滑动的情况下,page0是位于position0到position1之间。位于pos原创 2022-03-04 18:02:28 · 2145 阅读 · 0 评论 -
关于ViewPager的setCurrentItem方法
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2022-03-01 20:32:19 · 3886 阅读 · 0 评论 -
自定义View解惑之 getColor R.color.colorPrimary获取的颜色不对
在自定义View的时候,可以通过下面的代码获取colorPrimary的颜色。但获取到的颜色好像是不一样的。 mPrimaryColor=ContextCompat.getColor(getContext(),R.color.colorPrimary);比如下图:这是一个自定义的圆形进度条,底部圆环的颜色和ToolBar的颜色肉眼看起来是不一样的。但我设置的颜色都是colorPrimary,并且没有自定义过这个颜色。事实上,这两个地方的颜色就是一样的,看起来不一样只是因为错觉。看起来不一样只是原创 2022-02-12 11:17:35 · 1749 阅读 · 0 评论 -
android 资源的引用方式 @android ?android ?attr的区别
1.@android的使用先来说说@android。一般用法是@android/color/xxx或者@android/drawable/xxx。顾名思义,就是可以获取系统提供的颜色或者图标。@android只有这三种用法,@android/color,@android/drawable,@android:mipmap。1.1@android/drawable其中@android/drawable定义在sdk/platforms/android-29/data/res/drawable-xxdpi原创 2022-02-07 22:25:53 · 2665 阅读 · 0 评论 -
自定义View之 获取属性
以ProgressBar为例,如果我们需要自己实现一个ProgressBar,那么我们需要自定义一些属性在xml中提供给用户使用。比如下面的自定义View,我们需要radius这个属性作为圆形进度条的半径。有一个style属性用来设置进度条的样式,可能是圆形,直线形,或者其它形状。 <com.xzh.viewdemos.ProgressBar android:layout_height="wrap_content" android:layout_width="原创 2022-02-03 19:37:54 · 2574 阅读 · 0 评论 -
自定义View解惑 为什么默认情况下设置wrap_content和match_parent一个效果?
在我们自定义View的时候,在默认情况下,也就是继承View之后,什么都不干。我们设置这个自定义的View的宽高都为wrap_content。public class CustomView extends View { public CustomView(Context context) { super(context); } public CustomView(Context context, @Nullable AttributeSet attrs) {原创 2022-01-29 09:54:06 · 1701 阅读 · 0 评论 -
Android Context详解(全解析)
我们最常用的Activity,Service,Application都是Context的子类。所以知道Context的具体实现是非常有必要的。下面是Context的体系结构图:Context本身是一个抽象类。他的实现类是ContextImpl。而ContextWrapper是一个包装类(装饰设计模式)。在我们用IDE查看Context继承关系的时候,我们是不能直接看到ContextImpl这个类的,通过这种手段让程序员不能直接看到ContextImpl这个类,而只能看到ContextWrapper这个原创 2022-01-21 10:56:32 · 12412 阅读 · 0 评论 -
Dagger2实战详解以及Hilt的使用
Dagger2是一个依赖注入(DI)框架。那么什么是依赖注入?其实我们一直在使用依赖注入,只是没有提到这个概念。例如下面最简单的例子。Engine engine对象的来源要么是自己在构造函数里面new出来,要么是通过setEngine()从外部传入。这两种方式都是依赖注入。都是需要我们手动new对象的。而我们要讨论的是另外一种依赖注入方式,就是要把new对象的操作统一放在一个地方一起操作,而不是在业务代码里面到处new对象。这种方式有个专门的名称叫做控制反转(IOC),控制反转的意思就是new对象不是由原创 2021-10-21 17:15:20 · 2107 阅读 · 0 评论 -
Android反编译apktool,dex2jar和jd-gui的使用和一键反编译查看apk
这无疑是最重要的,不过难度很高需要专门做安全的人来做才有效果。可以获取别的资源文件。如果要破解代码,那难度就更高了。还有一个就是混淆看有没有效果,或者混淆出问题了。原创 2021-10-13 18:31:33 · 6531 阅读 · 0 评论 -
FragmentPagerAdapter和FragmentStatePagerAdapter
在Fragment和ViewPager结合使用的时候。会用到PagerAdapter作为ViewPager的适配器。通常在实现ViewPager的时候,我们需要自己定义ViewPager,而在Fragment和ViewPager结合使用的时候。官方为我们提供了两个实现类FragmentPagerAdapter和FragmentStatePagerAdapter来帮助我们更快的实现效果。1.官方...原创 2019-10-11 16:41:12 · 340 阅读 · 0 评论 -
Fragment栈管理
1.基本栈管理定义两个Fragment并且分别实现他们的add,remove和repalce方法。public class MainActivity extends AppCompatActivity { private Fragment1 fragment1; private Fragment2 fragment2; private FragmentMana...原创 2019-10-11 16:36:17 · 1455 阅读 · 0 评论 -
GreenDao使用笔记
使用的GreenDao版本为3.2.21.引入GreenDao// 在根 build.gradle 文件中添加:buildscript { repositories { jcenter() mavenCentral() // add repository } dependencies { classpath 'co...原创 2018-10-30 11:50:55 · 226 阅读 · 0 评论