- 博客(383)
- 资源 (16)
- 收藏
- 关注
原创 resource android:attr/lStar not found.和unknown tag <:string>问题
检查androidx.core:core-ktx包的版本是否指定,没有指定版本需要指定版本号。原因与字符串数组有关。在你的string.xml检查你是否有空 或类似的东西。
2023-09-26 16:33:56 449
原创 android可见即可说实现方案
无障碍服务,科大讯飞, 热词注册,WindowManager,点击穿透效果,反射,AccessibilityNodeInfo.AccessibilityAction.ACTION_SET_PROGRESS
2023-09-18 17:53:14 1631 1
原创 Compose基础示例(列表,状态,Image,Text Field, 定时器)
【代码】Compose基础示例(列表,状态,Image,Text Field, 定时器)
2023-09-14 17:33:49 176
原创 Android开发中
文章目录idmap开发者模式正常主题monkey自测查看广播队列日志不显示shared_prefssetting存储本地数据库查询keyevent 输入logcat命令复制多个文件(文件夹下所有文件)到指定路径launcher冷启动IO 监听查看内存系统属性SystemProperties反射调用idmapadb shell idmap --inspect /data/resource-cache/vendor@overlay@.apk@vendor@priv-app@account.apk@idmap
2022-02-19 19:47:58 1566
原创 Paint绘制圆角矩形
import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Path;import android.graphics.RectF;import android.graphics.drawable.ColorDrawable;import android.util.AttributeSet;public class Ro.
2021-10-25 18:19:35 1920
原创 应用启动获取屏幕可绘制区域异常问题
平板开发屏幕尺寸获取异常导致应用启动页面失真问题在activity的onCreate方法中,setContentView之前监听ViewTreeObserver.OnGlobalLayoutListener的接口动态修改自己应用离屏幕边界的距离一般来说,在onCreate时我们是无法拿到View的高度和宽度的,当全局布局状态或视图树中视图的可见性发生更改时,可以听过监听这个接口来获取高度和宽度public class MyActivity implements ViewTreeObserver.O
2021-08-27 17:36:06 331
原创 JNI中Native方法的注册方式
文章目录JNI中native方法注册native方法静态注册native方法动态注册数据类型转换方法签名:使用javap自动生成方法签名JNIEnvJNI中native方法注册jni是Java Native Interface的缩写,Java本地接口,是Java与其他语言(native语言)通信的桥梁Native方法注册分为静态注册(多用于NDK开发)和动态注册(多用于framework开发)native方法静态注册AndroidStudio中新建一个lib包,本例仿照MediaRecord
2021-07-16 17:32:15 1135 6
原创 ServerSocket和Socket连接
文章目录概述:Socket和浏览器通信连接和通信Socket保持连接通信概述:ServerSocket类 TCP协议,服务器端,通过serveSocket.accept();方法获取socket实例Socket类 TCP协议 通过new Socket()获取实例,创建Socket对象的时候则需要声明一个IP地址和ServerSocket对象的端口号,这样才能对服务端发出连接请求客户端上的使用1.getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputS
2021-07-13 15:44:35 1684
原创 AndroidStudio编写测试类运行报错:Could not create task :app Test.main()
* Where:Initialization script 'C:\Users\Administrator\AppData\Local\Temp\TestTest_main__.gradle' line: 21 * What went wrong:A problem occurred configuring project ':app'.> Could not create task ':app:TestTest.main()'. > SourceSet with name 'm
2021-07-13 13:20:35 2946
原创 剔除重复依赖
标题类似 More than one file was found with OS independent path ‘META-INF’app的build.gradle中添加剔除android{ packagingOptions { exclude 'META-INF/**' exclude 'lib/arm64-v8a/libmediaplayer.so' }}
2021-04-23 17:25:39 2970
原创 使用AndroidViewModel初始化报错
Caused by: java.lang.RuntimeException: Cannot create an instance of class com.aiways.dmsgallery.vm原因是无法创建带参数的构造方法,原因是 ViewModelProvider默认创建无参的构造方法,如果有参数的构造方法将无法正常创建。而 AndroidViewModel 需要使用带 application参数的构造方法创建,解决办法是使用AndroidViewModelFactory创建AndroidVi.
2021-04-22 16:51:24 4915
原创 APK反编译的方法(未混淆)
文章目录需要的工具反编译方法过程需要的工具下载地址:链接:https://pan.baidu.com/s/1kEvmRyTQUp7ujnvsfELJZA 提取码:sb8m 复制这段内容后打开百度网盘手机App,操作更方便哦apktool 资源文件获取, 可以提取出图片文件和布局文件进行使用查看dex2jar 将apk反编译成java源码,将classes.dex转化成 .jar文件jd-gui 查看APK中classes.dex转化成出的 .jar文件,即源码文件反编译方法过程
2021-04-13 14:47:35 4714
原创 Binder机制和AIDL通信示例
文章目录介绍Binder工作流程AIDL通信实例介绍 Binder由四部分组成:Binder客户端、Binder服务端、Binder驱动、服务登记查询模块。Binder客户端是想要使用服务的进程。Binder服务端是实际提供服务的进程。Binder驱动:1.客户端先通过Binder拿到一个服务端进程中的一个对象的引用,2.通过这个引用,直接调用对象的方法获取结果。3.在这个引用对象执行方法时,它是先将客户端方法调用的请求传给Binder驱动;4.然后Binder驱动再将客户端请求传给服
2021-04-01 18:46:17 4709
原创 Jetpack之ViewModel和LiveData的使用
ViewModel介绍 ViewModel将页面所需的数据从页面剥离出来,页面只需要处理用户交互和展示数据。是介于View(UI)和Model(数据)之间的桥梁,使得视图和数据既能够分开,又可以保持通信。 ViewModel 独立于配置变化之外,例如activity旋转时页面会重建,生命周期也会结束后重新开始,但是这期间并不会影响ViewModel的生命周期,还是那个ViewModel...
2021-03-10 21:07:22 62
原创 Jetpack之ViewModel和LiveData的用法
文章目录ViewModel介绍ViewModel实例化ViewModel源码创建使用ViewModel与onSaveInstanceState()的区别ViewModel介绍ViewModel将页面所需的数据从页面剥离出来,页面只需要处理用户交互和展示数据。是介于View(UI)和Model(数据)之间的桥梁,使得视图和数据既能够分开,又可以保持通信。ViewModel 独立于配置变化之外,例如activity旋转时页面会重建,生命周期也会结束后重新开始,但是这期间并不会影响ViewModel的生命
2021-03-10 21:04:24 7937
原创 Jetpack之Navigation和NavigationUI
依赖 implementation 'androidx.navigation:navigation-fragment-ktx:2.3.1' implementation 'androidx.navigation:navigation-ui-ktx:2.3.1'navigation的主要元素Navigation Graph 一种xml资源文件,包含应用所有的页面...
2021-03-09 20:25:22 56
原创 Navigation和NavigationUI的使用
文章目录navigation的主要元素navigation的主要元素Navigation Graph 一种xml资源文件,包含应用所有的页面以及页面之间的关系,也就是fragment的放置的地方,NavHostFragement 一种特殊的fragment, 可以理解为fragment的容器,是fragment展示UI的地方,Navigation Graph中的fragment通过NavHostFragement展示...
2021-03-09 20:21:31 10098
原创 使用lifecycle解耦页面与组件
文章目录Lifecycle原理介绍Lifecycle对Activity生命周期监听Lifecycle对Service生命周期监听ProcessLifecycleOwner监听APP的前后台Lifecycle原理介绍Jetpack为我们提供了两个类,LifecyleOwner(被观察者)和LifecyleObserver(观察者),通过观察者模式实现对页面生命周期的监听。Lifecycle对Activity生命周期监听绑定activity的生命周期class LifeCycleListene
2021-03-05 20:29:59 7889
原创 Apk瘦身压缩体验
文章目录资源统一资源统一尽量一个项目使用同一套资源,对于绝大对数APP来说,只需要取一套设计图就足够了。鉴于现在分辨率的趋势,建议取720p的资源,放到xhdpi目录。相对于多套资源,只使用720P的一套资源,在视觉上差别不大,很多大公司的产品也是如此,但却能显著的减少资源占用大小,顺便也能减轻设计师的出图工作量了。不是xhdpi的目录都删除,而是强调保留一套设计资源就够了。资源图片引入前先进行压缩,不使用原图,...
2021-02-03 21:03:14 7927 2
原创 关于加密和编码的说明
@[TOC]古典密码学 起源于古代战争:在战争中,为了防⽌书信被截获后重要信息泄露,⼈们开始对书 信进⾏加密。 移位式加密 如密码棒,使⽤布条缠绕在⽊棒上的⽅式来对书信进⾏加密 加密算法:缠绕后书写 密钥:⽊棒的尺⼨ 替换式加密 按规则使⽤不同的⽂字来替换掉原先的⽂字来进⾏加密。 现代密码学可以加密任何⼆进制数据⾮对...
2021-01-29 21:40:00 40
原创 加密和编码解析
文章目录古典密码学移位式加密替换式加密现代密码学对称加密⾮对称加密签名与认证:hash算法编码和解码Base64编码URL 使⽤的百分号编码压缩与解压缩编码序列化古典密码学起源于古代战争:在战争中,为了防⽌书信被截获后重要信息泄露,⼈们开始对书信进⾏加密。移位式加密如密码棒,使⽤布条缠绕在⽊棒上的⽅式来对书信进⾏加密加密算法:缠绕后书写 密钥:⽊棒的尺⼨替换式加密按规则使⽤不同的⽂字来替换掉原先的⽂字来进⾏加密。现代密码学可以加密任何⼆进制数据⾮对称加密的出现使得密码学
2021-01-29 21:38:50 7217
原创 MultiTypeAdapter在recycleView中的使用和点击事件处理
概述 RecycleView中多种数据结构的item进行解耦,单一职责显示多种类型的item布局 MultiTypeAdapter会给items中每一种类型的itemData找到对应的itemViewBinder进行数据绑定 基于版本 implementation 'com.drakeet.multitype:multitype:4.2.0' itemViewBinder...
2021-01-28 21:19:09 63
原创 MultiTypeAdapter在recycleView中的使用和点击
文章目录概述一个itemViewBinder多种item数据类型多类型item数据注册显示效果图概述RecycleView中多种数据结构的item进行解耦,单一职责显示多种类型的item布局MultiTypeAdapter会给items中每一种类型的itemData找到对应的itemViewBinder进行数据绑定一个itemViewBinder/*** Author: yangtianfu* Date: 2021/1/28 20:13* Describe:每一种itemViewBind
2021-01-28 21:15:46 8020 1
原创 自定义TextView之drawableLeft与文本一起居中显示
```import android.annotation.SuppressLintimport android.content.Contextimport android.graphics.Canvasimport android.util.AttributeSetimport android.widget.TextView/*** Author: yangtianfu* Da...
2021-01-25 18:34:28 61
原创 kotlin中自定义TextView之drawableLeft与文本一起居中显示
import android.annotation.SuppressLintimport android.content.Contextimport android.graphics.Canvasimport android.util.AttributeSetimport android.widget.TextView/*** Author: yangtianfu* Date: 2021/1/25 18:08* Describe:drawableLeft与文本一起居中显示*/@Su.
2021-01-25 18:32:51 7499
原创 RecycleView实现横向带指示器翻页滑动,一行两列自定义布局
* * 1AutoGridLayoutManager * 2PageIndicatorView * 3PageRecyclerView * 4使用 首先看需求效果\ \ 在acvitity中有一个控件,需要实现这种分页效果,还要指示器,并且每页的两列不能太分散,使用GridView就很不好实现,这里用RecycleView展示,先看成型后需要用到的结构(需要用到哪些自定...
2021-01-21 16:07:51 353
原创 Android开发自定义view统一验证码输入框
文章目录布局文件自定义view输入监听布局文件<?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="wrap_content"> <LinearLayout
2020-12-23 10:45:45 6347
原创 使用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout打造折叠状态栏
文章目录布局监听CoordinatorLayout 属性AppbarLayoutCollapsingToolbarLayout效果图布局<?xml version="1.0" encoding="utf-8"?><layout xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" tools:ignore="ResourceN
2020-11-26 16:25:16 6807
原创 ScrollView高度不能充满全屏
android:fillViewport 属性解决ScrollView高度不能充满全屏的问题 <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:scrollbars="none" >...
2020-11-25 13:56:55 5778
原创 selector中使用state_enabled设置自定义控件可变背景drawable
<?xml version="1.0" encoding="utf-8"?><selector xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" tools:ignore="MissingDefaultResource"> <item android:state_enabled="false"
2020-11-25 13:55:16 5685
原创 Kotlin中关于DataBinding
文章目录android:visibility 可见性绑定和onClick绑定数据单向绑定的问题(数据改变更改视图)点击事件监听数据双向绑定问题调用类中的方法::Unresolved reference: BR常量值和变量组合绑定databinding中使用逻辑与运算符&&android:visibility 可见性绑定和onClick绑定 <data> <import type="android.view.View"/> <v
2020-11-13 17:34:28 5803
原创 Activity中多fragment使用NavHostFragment导航用法
文章目录创建navigation容器activity中引用fragment容器容器中在design视图下创建fragmentfragment间跳转fragment跳转动画转场动画创建navigation容器创建存放fragment的navigation容器容器nav_container,用来放fragment<?xml version="1.0" encoding="utf-8"?><navigation xmlns:android="http://schemas.andr
2020-09-18 16:27:25 17008 1
原创 kotlin中TabLayout和ViewPager2自定义tabview
文章目录xmltabview自定义item布局(tabIndicator底部指示器)动态tab数据ViewPager2适配器FragmentStateAdapterUI调用xml <com.google.android.material.tabs.TabLayout android:id="@+id/tab_layout_tips" android:layout_width="match_parent" andr
2020-09-17 16:14:36 7640
原创 自定义Switch备份
<Switch android:id="@+id/switch_bluetooth" android:layout_width="wrap_content" android:layout_height="31dp" android:switchMinWidth="51dp" app:layout_constraintRight_toRightOf="parent"...
2020-08-26 14:27:26 5603
原创 ViewPager2画廊效果
fun Int.dpToPx(displayMetrics: DisplayMetrics): Int = (this * displayMetrics.density).toInt()fun Int.pxToDp(displayMetrics: DisplayMetrics): Int = (this / displayMetrics.density).toInt()使用10.dpToPx(context.resources.displayMetrics)
2020-07-02 16:30:46 7469 1
原创 腾讯Matrix应用性能接入框架使用
文章目录Matrix Android ApkChecker创建的文件生成的文件Matrix Android ApkCheckerhttps://github.com/Tencent/matrix/wiki/Matrix-Android-ApkChecker jar包下载地址:https://jcenter.bintray.com/com/tencent/matrix/matrix-apk-canary/0.6.5/matrix-apk-canary-0.6.5.jar 创建检测报告
2020-06-30 19:29:00 8880
原创 BindingAdapter(kotlin自定义数据绑定)
ImageView@BindingAdapter("imageFromUrl")fun bindImageFromUrl(view: ImageView, imageUrl: String?) { if (!imageUrl.isNullOrEmpty()) { Glide.with(view.context) .load(imageUrl) .transition(DrawableTransitionOpti..
2020-06-01 16:58:26 8283
TabLayout和ViewPager的经典漂移(实现底部Tab的图文混排合联动以及切换时数据同步问题)
2017-07-24
HTML学习手册
2017-03-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人