![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android 工作
笔记
碧云天丶
这个作者很懒,什么都没留下…
展开
-
Git找不到远程库
搜索 凭据管理器点击 Windows凭据往下拉,在普通凭据里面删除GitHub相关的凭据原创 2022-02-07 11:28:25 · 1553 阅读 · 0 评论 -
Android 利用RadioGroup做个标题选中放大效果
android:button="@null" 用来去除RadioButton小圆圈android:background="@color/transparent" 用来去除点击RadioButton时候出现的水波动画背景<RadioGroup android:id="@+id/rg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientatio.原创 2021-10-27 12:03:27 · 754 阅读 · 0 评论 -
Android Room使用记录
简单使用笔记MyDatabase@Database( entities = [xxxEntity::class], version = 1)abstract class MyDatabase : RoomDatabase() { // Dao abstract fun getXxxDao(): xxxDao companion object { @Volatile private var INSTANCE: MyDataba原创 2021-08-13 11:59:06 · 251 阅读 · 0 评论 -
Bintray 替代方案
参考打开 项目点击 tag点击 Releases点击 Draft a new releaseTag version: 0.2.7Release title: 0.2.7点击 Publish release打开网页JitPack输入 rgdzh1/BannerY 点击 Look Up搜索,等待结果网页中就能看到添加依赖的说明,如下:// 1.allprojects { repositories { maven { url 'https://jitpack.io' .原创 2021-07-04 01:02:58 · 357 阅读 · 0 评论 -
解决 The emulator process for AVD was killed
解决 “The emulator process for AVD was killed”最近我创建一个新的模拟器, Android 11版本, 启动时候发现提示"The emulator process for AVD was killed".我搜了些中文博客, 写的各种设置, 后来在Google上搜索到是因为Android 模拟器版本太低了导致的, 在Studio种更新下Android Emulator就好了.原文链接...原创 2021-03-22 11:26:07 · 1173 阅读 · 0 评论 -
Fiddler 配置安装
Fiddler 配置安装基本配置下载链接有Window,Linux,MacOs几种安装包安装配置安装比较简单HTTP配置监听,按照图中配置.HTTPS配置监听, 按照图中配置.该勾的勾上.监听Android查看电脑IP地址, cmd中输入ipconfig.手机与电脑链接上同一个Wifi, 进入手机Wifi网络详情,修改Wifi代理,选择手动,主机名: 写电脑ip端口写: Fiddler默认监听的8888在手机浏览器中输入localhost原创 2021-01-22 18:39:13 · 142 阅读 · 0 评论 -
Kotlin Android缓存库CoroutinesCache
RxJava+Retrofit如果想做缓存以前会用RxCache(停止维护). 迁移到Kotlin后,使用Coroutines+Retrofit请求网络想做缓存的话貌似资料还不是不多.CoroutinesCache 是用来做Coroutines+Retrofit缓存的,这个库Readme有点老,下面记录的是我使用的时候踩坑的笔记.依赖implementation "com.github.diefferson:CoroutinesCache:0.3.0"使用private val co.原创 2020-12-16 18:31:57 · 638 阅读 · 1 评论 -
使用Kotlin协程Channel做一个定时器
// 使用通道创建定时操作,和Go协程一样的.lifecycleScope.launchWhenResumed { // 1.创建通道 val channel = Channel<Int>() // 2.向通道发送数据 launch(Dispatchers.IO) { for (i in 1..100) { delay(150) // 延时0.15秒发送 channel.send(i)原创 2020-12-01 11:47:42 · 5549 阅读 · 0 评论 -
Android BottomNavigationView 添加消息提示(二)
这篇文章中使用的旧版本BottomNavigationView如何设置徽章material-components-android简介依赖implementation 'com.google.android.material:material:1.3.0-alpha03'android:theme="@style/AppTheme"必须使用Theme.MaterialComponents.xxx主题<style name="AppTheme" parent="Theme.Mate.原创 2020-11-23 17:20:55 · 301 阅读 · 0 评论 -
Android ImageView自定义BindingAdapter
这是一个很适用的小技巧以下代码都是来自开源项目PokemonGo代码@BindingAdapter("bindingAvator")fun bindingAvator(imageView: ImageView, url: String) { imageView.load(url) { crossfade(true) placeholder(R.mipmap.ic_launcher_round) }}@BindingAdapter("bind.原创 2020-11-19 16:07:32 · 601 阅读 · 0 评论 -
Android 百度定位对接
在控制台创建一个应用,选择好服务,配置APP key的SHA1值.下载开发包后开始配置:库配置libs: arm64-v8a armeabi x86_64 BaiduLBS_Android.jarbuild.gradle配置sourceSets { main { jniLibs.srcDirs = ['libs'] jni.srcDirs = [] }}dependencies { // 百度.原创 2020-10-19 15:29:13 · 335 阅读 · 0 评论 -
Android dp px dpi sp density解释
sp:字体单位, 手机字体调大,用sp标注的字体也会随之变大.其实用dp也可以标注字体大小,但是用dp标注字体的大小不会随手机字体大小调整变化.px:像素dpi:每英寸的点数,也称像素密度,即对角线像素值除以对角线英寸值dp/dip:每英寸如果包含160个像素点时,则1个像素点长度等于1dp.反过来讲就是1英寸的长度上有160个点,每个点大小用1dp表示.至于每dp能表示多...原创 2019-12-31 00:58:55 · 202 阅读 · 0 评论 -
ViewGroup拦截事件 子View为何触发子View CANCEL事件以及后续事件如何分发到父容器
ViewGroup拦截事件子View为何触发子View CANCEL事件以及后续事件如何分发到父容器类似的场景非常之多,例如,父容器需要水平滑动,子View需要垂直滑动等,一般我会重写父容器的onInterceptTouchEvent方法,如果手势水平移动,则父容器拦截事件,onInterceptTouchEvent方法返回true.这里就分析上面的场景Down下来时候, ViewGr...原创 2019-12-27 19:47:06 · 863 阅读 · 1 评论 -
ViewGroup中dispatchTouchEvent方法调用三次dispatchTransformedTouchEvent方法原由
第一次调用dispatchTransformedTouchEventboolean alreadyDispatchedToNewTouchTarget = false;//父控件不拦截此事件,intercepted等于false.if (!canceled && !intercepted) { ... //此事件为Down事件或者第二个手指触碰屏幕事件或者为鼠标事件,...原创 2019-12-27 19:44:33 · 980 阅读 · 6 评论 -
Android 解决65535方法数限制
Android 5.0 及更高版本minSdkVersion 等于21或者更高值, 默认情况下启用多 dex 文件,并且不需要依赖。Android 5.0 以下版本minSdkVersion 等于20或者更低值,则必须使用依赖库支持.修改Module下的 build.gradle 文件以启用多 dex 文件,并且添加依赖. android { defaultCon...原创 2019-12-23 19:35:48 · 637 阅读 · 0 评论 -
android 使用 InputConnection 监听并拦截软键盘的退格键
之前在做项目的时候有个需求是监听用户点击软键盘的退格键并在必要的时候拦截这个点击事件,以便在输入框删除文本的时候实现一些特殊的功能。当时我所能想到的常规方法是使用View.setOnKeyListener( View.OnKeyListener ll)方法,监听EditText上的key event:editText.setOnKeyListener(new View.OnKeyListener...转载 2019-12-02 21:16:16 · 1142 阅读 · 0 评论 -
Android proguard-rules.pro 混淆字典的使用
将准备好的混淆字典放在Module根目录下配置proguard-rules.pro文件#指定外部模糊字典-obfuscationdictionary ./proguard-keys.txt#指定class模糊字典-classobfuscationdictionary ./proguard-keys.txt#指定package模糊字典-packageobfuscationdict...原创 2019-10-16 22:23:50 · 2609 阅读 · 0 评论 -
Android TextView中文字不同颜色
strings.xml<string name="test_str"><Data><![CDATA[<font color="#008577">昨天</font>增长率为<font color="#FF0000"><b> +20%↑</b></font>]]></Data>&l...原创 2019-09-23 23:13:25 · 379 阅读 · 0 评论 -
Android Spannable的简单使用
EditText中使用Spannable//布局<EditText android:id="@+id/et" android:layout_width="match_parent" android:layout_height="wrap_content" />//代码 EditText etStr = (EditText) findViewB...原创 2019-10-01 22:38:19 · 291 阅读 · 0 评论 -
RadioGroup 使用
xml//布局<RadioGroup android:id="@+id/rb" android:layout_width="match_parent" android:layout_height="44dp" android:orientation="horizontal"> <RadioButton androi...原创 2019-09-23 23:13:09 · 990 阅读 · 0 评论 -
Android 选择联系人
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);startActivityForResult(intent, REDE_CONTACT);上述方式打开联系人界面在小米手机中会出现一个选择页面过渡环节, 有的机型甚至会直接打开文件管理页面.采用这种方式可以直接打...原创 2019-06-24 16:13:51 · 1097 阅读 · 0 评论 -
Android 批量获取街道经纬度
注册Azure账户Azure Maps文档注册Azure账号创建Azure Maps应用,获取Key,中间需要绑定信用卡。通过REST API获取地理编码所有地址信息都在一个文件中,将这些信息先插入Sqlite中。对表中,经纬度为null的地址联网查询。//联网地理编码btnQurey.setOnClickListener(v -&gt; { progre...原创 2019-03-16 16:57:42 · 413 阅读 · 0 评论 -
App Annie免费使用
简介视频排行榜可以查看各大商店里最近90天内APP的历史排名数据,并且可以进入任意APP页面里查看该APP的详细历史排名数据。下钻任意APP页面里每日排名:可以看到该款APP某日在哪些国家哪些类别中的排名情况。历史排名:可以看到该APP在所有国家中排名趋势走向。评论评分:可以看到所有用户对该APP得评价评分关键词(ASO):可以了解一款APP在应用商店中有多容易被用...原创 2019-03-13 16:08:25 · 5020 阅读 · 0 评论 -
Android onSaveInstanceState与onRestoreInstanceState使用模板
Activity被系统被动回收时候, 想要保存必要数据不被销毁时用到.public class MyAppCompatTextView extends AppCompatTextView { @Override public Parcelable onSaveInstanceState() { Bundle bundle = new Bundle(); ...原创 2020-03-21 13:45:13 · 166 阅读 · 0 评论 -
Android FileProvider 7.0及以上版本APP覆盖安装适配
参考一参考二FileProviderFileProvider是ContentProvider的子类, ContentProvider是向外部APP分享数据, FileProvider是用来向外部分享文件的.在7.0以后,含有file://的Uri所在的Intent离开当前APP是受限的.常用到FileProvider场景相机调用裁剪图片APK安装FileProvider使用...原创 2020-02-29 12:21:24 · 3038 阅读 · 0 评论 -
FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT 懒加载理解
参考文章1参考文章2Androidx中Fragment里的setUserVisibleHint方法被标记为@Deprecated让使用setMaxLifecycle方法.setMaxLifecycle方法作用是设置Fragment最大生命周期, 比如当前Fragment处于onResume,通过设置setMaxLifecycle(Lifecycle.State.STARTED),可以...原创 2020-01-08 22:28:58 · 11141 阅读 · 3 评论 -
判断ScrollView的子View是向上划出,向下划出,可见三种情况
在ScrollView中的回调方法onScrollChanged里有四个参数, 这四个参数分别代表的含义:/** * @param l 滑动后ScrollView可视界面的左上角在整个ScrollView的X轴中的位置 * @param t 滑动后ScrollView可视界面的左上角在整个ScrollView的Y轴上的位置 * @param oldl 滑动前Scrol...原创 2020-01-04 12:31:31 · 776 阅读 · 0 评论 -
Android PackerNg V2多渠道打包使用摘要
项目地址配置项目build.gradle配置dependencies { classpath 'com.android.tools.build:gradle:3.5.2' classpath 'com.mcxiaoke.packer-ng:plugin:2.0.1'}Module build.gradle配置android { signingConfigs { release { ... v2S.原创 2020-05-27 18:10:49 · 431 阅读 · 0 评论 -
Android Fragment回退栈实现思路
Demo地址场景Activity负责4个Fragment展示Activity底部有一个导航栏分析初始化@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityMain1Binding.inflate(getLayoutInflater()); setContentView(bindin.原创 2020-05-08 18:12:20 · 380 阅读 · 0 评论 -
Android viewBinding使用和注意事项
概述dataBinding双向绑定,viewBinding单向绑定.它用来替代findViewById(),可以看作轻量级的dataBinding.Kotlin中虽有synthetic特性,方便获取控件引用.但这个特性作用的范围是全局的, 很容易不小心引入其他布局中的控件引用造成空指针.注意事项Android Studio 3.6及以上才支持viewBinding.在Studio...原创 2020-05-08 13:53:48 · 2654 阅读 · 2 评论 -
Profiler 检测耗时方法与内存泄漏
Android Studio 检测耗时方法从Application中开始函数跟踪在清单文件中加入权限,必须要权限6.0以上.<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />在自定义Application中开始追踪public class MyApplication...原创 2020-05-03 17:47:35 · 1241 阅读 · 0 评论 -
Android 获取软键盘和状态栏以及底部导航栏高度
windowSoftInputMode属性释义adjustPan属性:假如键盘弹出后遮挡住了EditText控件,该控件获取焦点之后,整个DecorView会向上整体移动(也就是标题栏和内容栏),直到EditText控件出现在键盘的正上方位置.adjustResize属性:假如键盘弹出后遮挡住了EditText控件,该控件获取焦点之后,DecorView中的内容栏中(就是id=android...原创 2020-04-29 21:32:10 · 986 阅读 · 0 评论 -
ViewPager+Fragment组合与HorizontalScrollVIew滑动冲突解决
Demo地址重写HorizontalScrollView中onTouchEvent(),也可以重写它的dispatchTouchEvent(),但是重写dispatchTouchEvent()最后发现ViewPager页面切换的时候会出现页面跳跃.重写HorizontalScrollView中onTouchEvent()会存在一个问题,就是当手指从ViewPager边界划入时候,View...原创 2020-04-26 16:35:23 · 574 阅读 · 0 评论 -
Android ViewPager禁止滑动方法及原理
想要ViewPager禁止滑动,就要破坏它现有的事件分发消耗的逻辑.dispatchTouchEvent:分发事件onInterceptTouchEvent:拦截事件onTouchEvent:消耗事件ViewPager中重写了onInterceptTouchEvent,onTouchEvent方法,禁止ViewPager滑动无非是让ViewPager无法消耗手指触发的事件....原创 2020-04-23 16:16:18 · 3433 阅读 · 0 评论 -
Android 沉浸式状态栏归纳
参考文章沉浸式状态栏就是将标题栏颜色与状态栏颜色设置为同一种颜色,Android不同的版本设置沉浸式方法也不大一样.4.4时设置方法代码设置或者主题设置activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);主题设置,在values-v19文件夹下<style name="MDTheme" parent="Theme.Design.Light.NoActionBar">.原创 2020-06-20 17:51:52 · 355 阅读 · 0 评论 -
GitHub如何删除master分支
删除本地分支git branch -d master删除远程分支git push origin --delete :master问题解决本地master分支不被选中时才可以删除,查看分支是否选中命令:git branch删除GitHub上master分支前,也要看GitHub上master分支是否被选为默认分支了.如果master被选为默认分支了,是无法被删除的.选中GitHub项目Settings标签选中Branchs标签重新选Update,再确认.择默认分支后点击..原创 2020-06-07 21:08:48 · 5495 阅读 · 1 评论 -
Android-PickerView 定制用法记录
地址英文日期Android-PickerView没有月份用英文的控件,在Issues中有人贴出了方法.继承WheelView实现:public class EnglishMonthWheelView extends WheelView { public EnglishMonthWheelView(Context context) { super(context); } public EnglishMonthWheelView(Context context,.原创 2020-09-14 15:08:20 · 294 阅读 · 0 评论 -
Android ScrollView滚动到指定子View中的子View
ScrollView中一般嵌套一个LinearLayout,当想用代码操作ScrollView滚到到指定的子View一般操作为ScrollView.scrollTo(0,View.getTop()),但是有没有遇到这种方式无效的时候呢?View.getTop()是获取该View相对于父容器的高度,比如ScrollView包含ALinearLayout,然后ALinearLayout中包含BLinearLayout和CLinearLayout,TextView控件为CLinearLayout中子控件..原创 2020-08-31 15:54:49 · 2069 阅读 · 0 评论 -
Android自定义View多个declare-styleable节点属性冲突处理
同一个Library中,不同的自定义View需要用不同的declare-styleable,如果两个不同的declare-styleable存在相同的属性就会构建失败,下面就是解决该问题的方法.<?xml version="1.0" encoding="utf-8"?><resources xmlns:tools="http://schemas.android.com/tools"> <declare-styleable name="StepperIndicat.原创 2020-08-31 15:28:07 · 1096 阅读 · 0 评论 -
Android BottomNavigationView添加消息提示(一)
来源首先要写一个徽章布局notifications_badge.xml,我页面做了适配所以用的pt单位,也可以替换为dp,看项目情况.<merge xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@+id/notifications_badge" android:layout_width="wrap_content" .原创 2020-08-31 15:25:59 · 530 阅读 · 0 评论