项目练习
- 通用的Android练习模版设置,此文章介绍了怎么提高练习项目的效率,我从中学到了学习建立公共库,让工程中的其它module都使用共同库的依赖,避免重复导入第三方依赖
- Android studio 自定义顶部工具栏toolBar
- Android中为layout创建子文件夹,官方
- java折叠代码块
- gradle 各种版本下载
- Android Studio中使用Git进行代码管理(分支、合并)
- Android Studio 删除多余的import、
- Android Tools 属性解决列表测试预览问题
- Android Studio如何给默认创建的activity添加注释头
- Android获取应用签名(开发版SHA1和发布版SHA1) keytool命令需要到jdk安装目录的bin下打开cmd执行
- 利用keytool生成keystore文件 —
keytool -genkey -alias ccc -keyalg RSA -validity 36500 -keystore android.keystore
- Android Studio查看其它APP的布局结构
- android版本号
- 你不知道的Android Debug技巧
- 解决android studio 3.6 中文乱码的问题
- AndroidStudio 新建不同的Drawable文件夹
- Android Stadio—使用fbc快捷键快速生成findViewById
- Android 调试–接口测试之——Charles抓包及常见问题解决
- 修改adb默认端口----新建系统环境变量(ANDROID_ADB_SERVER_PORT)变量值即为adb的端口号
- Android中 @和?区别以及?attr/**与@style/**等的区别
- 浅谈 MVP in Android
- Android Library和Android APP、Java Library的区别和android studio中application module,library module,java module的区别
- 记录华为、魅族手机无法打印 Log 日志的问题
- Android 启动模式和 taskAffinity 属性详解
- android studio彻底删除moudle–>先删 setting.gradle 里 include 的这个 module,再删其他 module 里依赖(compile)的这个 module.
- 逐步发布开源库到JCenter–其中第10步ext扩展要放在build.gradle最上面,其中bintrayRepo 这里用的是Repository name,bintrayName用的是package name,关于user和apiKe请参考这篇文章
- 在单例模式中如何避免传入非Application的Context造成的内存泄漏
- implementation、api、compileOnly区别详解
- 修改第三方的aar重新打包
AndroidX
- Android学习小计:androidx中的Fragment懒加载方案
- 总是听到有人说AndroidX,到底什么是AndroidX
- 最新版本Android Studio强制使用androidx的降级方案
- MVVM Architecture - 入门级别mvvm
- 硬核讲解 Jetpack 之 LifeCycle 使用篇
- LiveDataReactiveStreams: Where RxJava meets LiveData–liveData结合Rxjava的优缺点
- Hello Kotlin Coroutines Kotlin由浅入深
- Coroutines: First things first
- 重温Retrofit源码,笑看协程实现
纠错
- 关于TaskExecutionException:Execution failed for task
':app:compileDebugJavaWithJavac’和
‘:app:transformJackWithJackForDebug’–对于tools:replace="android:icon"一样。如果同时存在则以,隔开
tools:replace=“android:theme,android:icon” - 当Retrofit2+RxJava2遇到为null的返回结果
- Android Studio 引用第三方包时,com.android.support 因版本冲突问题
- Manifest merger failed : Attribute application@appComponentFactory value
- 由于 Android P 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉
- Androidx和Android support库共存问题解决
- App is not indexable by Google Search
- 包名不要用大写,要全小写
- Type BuildConfig is defined multiple times->多数是因为app包名和moudle的包名一致导致的
- app打包失败,运行没问题,查看日志->找到在项目目录下app/build/reports/lint-results-release-fatal.html 文件,这个文件就详细描述了release时lint检测到的比较严重的结果,我们可以用浏览器打开这个文件!
Gradle
- Gradle的几个配置文件
- Gradle的基本配置
- Android Gradle依赖管理、去除重复依赖、忽略
- flavorDimensions和productFlavors——安卓gradle
- Android Gradle 常用配置
- Android 自定义打包apk文件名
- android获取MimeType的两种方法
- 不一样的Gradle多渠道配置总结
- ApplicationId 与 PackageName 的区别
Gson
- 解析集合
Type type = new TypeToken<List<TreeItem>>(){}.getType(); List<TreeItem> o = new Gson().fromJson(contactJson, type);
- Android 获取本地的json文件
- Gson反序列化中的NULL值替换(各种类型)
- 除了FastJson,你还有选择: Gson简易指南
事件
动画
系统UI
-
Android布局中的空格以及占一个汉字宽度的空格的实现
android:text="手 机 号" android:text="昵  称""
---- 
代表半个汉字的宽度, 
代表一个汉字的宽度 -
设置控件不可点击
view.setClickable(false)
,在注册了点击事件后,此方法就不起作用了,可以根据状态动态注册点击事件 -
控件高度
wrap_content
时,可设置minHeight
控制最小高度 -
代码设置drawableLeft
setBounds
方法一定要写在setCompoundDrawables
之前 -
dialog去掉黑色遮罩
dialog.getWindow().setDimAmount(0f);
-
给i空间设置颜色用16进制时,必须用完整的argb格式,比如
btn.setTextColor(0x9c9c9c)
可能会不显示(原因可能时默认认为时全透明的吧),此时如果改为btn.setTextColor(0xff9c9c9c)
显示就没问题了 -
shape画虚线需要在控件上添加
android:layerType="software"
-
部分Android机子人民币符号¥只显示一横 ------按文章写的把 ¥ 复制过去,然后全部替换
-
fragment的onActivityResult不会回调可能有两个原因,1:父activity的onActivityResult没有调用super.onActivityResult() 2.fragment不能调用activity的startActivityForResult方法
-
EditText
- 详解EditText输入监听TextWatcher 又一篇TextWatcher
- Android之自定义EditText光标和下划线颜色
- 监听EditText获取焦点用
setOnFocusChangeListener
- EditText禁止弹出软键盘(禁止编辑)
setInputType(InputType.TYPE_NULL)
- EditText代码中设置InputType为密码
setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD|InputType.TYPE_CLASS_TEXT)
- 设置minLines同时height必须为
wrap_content
不能指定高度。否则minLines会失效 - EditText横向滚动需同时设置三个属性
android:inputType="text"
android:maxLines="1"
android:scrollHorizontally="true"
亲测可用 - 限制输入长度(不区分中英文)
edit_title.setFilters(new InputFilter[]{ new InputFilter.LengthFilter(getResources().getInteger(R.integer.title_max))});
- 段落级Span解析
10.Android点击EditText之外的地方隐藏键盘 - Android 软键盘之 windowSoftInputMode 分析
-
LinearLayout
-
TextView
- android Textview 超出自动截断,显示"…"
- 消除TextView自带边界
- TextView 中设置一行显示字数
- android资源字符串格式化—使用String.format和CDATA实现一个常见的效果 和 android 字符串格式化和Android 中 %s %d %f占位符使用
- Android上的自定义字体 - 扩展TextView
- android 关于TextView getLineCount() 获得的值始终为0问题
- Html.fromHtml(String)过时的替代方法
- Android在代码中设置控件的drawableLeft,drawableRight,drawableTop,drawableBottom。
- SpannableStringBuilder的setSpan方法使用需注意点!
- Android-Linkify的使用
- textView行间距
lineSpacingExtra
- TextView追加数据
tv_cycle.append(content)
-
RecyclerView
- RecyclerView.ItemDecoration类
- GridLayoutManager setSpanSizeLookup()方法
- recyclerview实现单选
- Android时间轴(Timeline)效果的实现(使用RecyclerView)
- 局部刷新更新子项目notifyItemChanged
- FlexboxLayout流式布局
- RecyclerView系列之一简单使用
- RecyclerView系列之二ItemDecoration
- NestedScrollView嵌套问题(RecycleView…持续记录)
- Android开发ConstraintLayout+RecyclerView最后一个item显示不全-------1、recyclerview高度设置为0dp,2、添加app:layout_constraintBottom_toBottomOf=”parent”
-
NestScrollView
-
NestScollView滚动到最底部
new Handler().post(new Runnable() { @Override public void run() { nestScrollView.fullScroll(NestedScrollView.FOCUS_DOWN);//滚动到底部 } });
-
ViewPager
图形绘制
存储
- 浅谈Android的文件存储
- ContentProvider全解析和使用
- AndroidQ 适配-存储空间篇
- Android通过URI获取文件路径
- Android 存储路径详解
- Android 10适配要点,作用域存储
- android10以上 uri转file uri转真实路径
- Android Q(10) 文件存储适配
网络相关
- JAVA-使用gson校验字符串是否是json
- retrofit
Fragment
RxJava2
- 给初学者的RxJava2.0教程(一)
- RxJava强大的线程控制(subscribeOn和observeOn)
- map,flatMap,concatMap(变换操作符)
- RxJava 沉思录
- Transformer 在RxJava中的使用
- Rxjava学习:onNext、onComplete、doOnNext、doFinally、doAfterTerminate执行顺序
- RxJava So Easy! 带你从0手撸一个RxJava
其它
- Java方法注释中,添加尖括号的方法
- 不一样的 Java 日期格式化大全
- Java利用正则去除所有HTML标签
replaceAll("<[^>]+>",""))
- postman中post请求下form-data、x-www-form-urlencoded、raw、binary的区别
- Java工具包中的Formatter类
- Matisse选择多余的图片报错,闪退
- java字符串0.5转成500
((Double)(Double.valueOf("0.5" * 10000)).intValue()
- Android的单个或多个权限动态申请
- 在Android上优雅的申请权限
- Android6.0权限机制(三):6.0以前国产手机权限处理
- adb中ps命令的详解
- Handler.post()方法的执行时机
- Android WebView 不支持 H5 input type=“file” 解决方法