- 博客(33)
- 资源 (8)
- 收藏
- 关注
原创 升级 Android Studio Dolphin 遇到 gradle.properties 中文乱码问题
今天升级 Android Studio Dolphin | 2021.3.1 Patch 1,中的中文全变成乱码,原因是升级前文件格式为。
2022-11-08 15:17:41
1157
1
原创 点击非 EditText 区域时隐藏输入法的实现
有个常见的需求,就是在页面上编辑时打开输入法,点击其他位置时收起输入法。现在希望在每个界面都能实现这样的需求,因此我们可以在基类的 Activity 去实现这个需求:abstract class BaseActivity : AppCompatActivity() { override fun dispatchTouchEvent(ev: MotionEvent): Boolean { if (shouldHideSoftInput(ev)) hideSoftInput()
2020-11-30 15:09:50
255
原创 Android Studio 使用 ADB 无线调试设备
首先让设备跟电脑连接同一个局域网设备使用 USB 线连接电脑adb devices 查看设备是否连接成功(必须步骤)adb tcpip 5555 这里的 5555 是默认端口,可以修改adb shell ifconfig wlan0 查看设备 IP 地址连接:adb connect xxx.xxx.xxx.xxx:5555,这里端口如果为5555则不用输入断开连接:adb disconnect xxx.xxx.xxx.xxx:5555...
2020-06-19 12:13:34
531
原创 OkHttp3 4.x 流程解析
OkHttp 是什么OkHttp 是当前 Android 开发中主流的 HTTP 网络请求框架。由 Square 公司设计研发并开源。OkHttp 的 4.x 版本和 3.x 前的版本相比,最大的变动就是改为 Kotiln 来编写代码。截止当前,OkHttp 最新版本为 4.7.2。因此我们使用 4.7.2 的源码来分析网络请求的流程。OkHttp 基本使用首先看一个最基本的 GET 请求:val okHttpClient = OkHttpClient()val request: Request
2020-06-09 16:53:23
1415
原创 在 library 中找不到 BuildConfig.APPLICATION_ID 的解决方案
今天把 Android Studio 更新到了 4.0,编译时报出找不到BuildConfig.APPLICATION_ID的问题。找了资料才发现原来 Google 早已在 Android Studio 3.5 之后做出了变更:BuildConfig: Deprecate APPLICATION_ID in libraries. It is at best misleading, so it is marked as deprecated and replaced by LIBRARY_PACKAGE
2020-06-01 10:41:33
8910
6
原创 ViewGroup 的事件分发核心
我们知道,View是 Android 的最基本控件,不能再细分。而ViewGroup继承于 View,可以包含多个 View。手指触碰屏幕时,触摸事件可能由 ViewGroup 拦截处理了,也可能传递给 ViewGroup 内部的 Child View 去处理。ViewGroup 的事件分发核心就是方法 dispatchTouchEvent(MotionEvent) ,主要分为几步:@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {
2020-05-23 17:49:25
230
原创 LiveData 源码解析
LiveData 是什么基于观察者模式LiveData 是一种数据持有类,并且可以在给定的生命周期中对数据进行观察。意味着观察者可以和生命周期持有者成对添加。感知生命周期和其他可被观察的类不同的是,LiveData 是有生命周期感知能力的,这意味着它可以在 activities, fragments, 或者 services 生命周期是活跃状态(STARTED 或 RESUMED)时更新这些组件。自动解除数据订阅要想使用 LiveData(或者这种有可被观察数据能力的类)就必须配合实现了 Lif
2020-05-14 16:33:05
276
原创 扫描枪模拟键盘输入的实现
原理扫描枪模拟键盘输入,会在有焦点的 EdtiText 中输入文本,输入结束通常会添加回车换行。使用界面不显示输入框,但是希望使用扫描枪将 EditText 宽高分别设置为 1px;EditText 调用 requestFocusFromTouch() 获取焦点。注意点:如果设置了 inputType 属性,那么也需要设置 disgits 属性,否则会出现获取不到焦点的情况;...
2020-01-04 11:43:19
3044
原创 Android 多语言国际化框架
最近因为项目需求,在应用中修改语言并保存用户习惯。后来使用 Kotlin 封装了一下代码,写成框架放到了 JCenter 中,方便依赖使用。Github地址(含 Demo):MultiLanguage集成dependencies { implementation 'com.cyrus:language:1.0'}初始化框架在 Applicaiton 中初始化:overrid...
2019-11-22 22:23:24
662
原创 Android中使用Drawable绘制横竖虚线
横虚线<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <stroke android:color="#AAAAAA" android:dashGap="2dp" and...
2019-08-09 15:36:00
1793
原创 java.lang.SecurityException: Not allowed to change Do Not Disturb state - 免打扰模式异常
今天在使用 AudioManager 调节系统音量大小和切换静音的时候抛出了异常:System.err: java.lang.SecurityException: Not allowed to change Do Not Disturb stateSystem.err: at android.os.Parcel.readException(Parcel.java:1683)System.e...
2019-07-08 22:04:47
5919
原创 Android Studio检查警告:Call to 'toArray()' with pre-sized array argument 'new String[list.size()]'
当使用如下代码将集合转成数组时:List<String> list = new ArrayList<>();String[] array = list.toArray(new String[list.size()]);会报出警告:Call to ‘toArray()’ with pre-sized array argument ‘new String[list....
2019-03-19 21:45:44
4994
原创 Program type already present: com.google.gson.FieldNamingPolicy$5 / FieldAttribute等错误解决方案
当 Android Studio 报错:Program type already present: com.google.gson.FieldNamingPolicy$5或者Program type already present: com.google.gson.FieldAttributes可能的原因是主项目 app 和 module 分别引入了 Gson,导致包重复。解决方法:在...
2019-03-07 16:18:50
6296
原创 Android消息机制源码流程解析
模型Message:消息实体,携带着需要处理的各种任务信息Handler:作为 Message 的 Target,用于创建、发布、处理 Message。MessageQueue:消息队列,内部实现使用的是单链表,用于存取 Message。Looper:消息循环,不断执行loop()方法从 MessageQueue 取出 Message,按分发机制分发给 Handler架构Hanl...
2019-01-13 16:12:18
301
原创 ArrayList中modCount的作用
在AbstractList中,有一个全局变量madCount,记录了结构性改变的次数。结构性改变指的是那些修改了列表大小的操作,在迭代过程中可能会造成错误的结果。madCount交由迭代器(Iterator)和列表迭代器(ListIterator)使用,当进行next()、remove()、previous()、set()、add()等操作时,如果madCount的值意外改变,那么迭代器或者列表...
2018-12-29 17:32:58
2672
1
原创 ImageView图片和TextView文字的底部对齐
有时我们需要做到大文字小图片在一行显示,并且图片跟文字的底部对齐,如图:以RelativeLayout为例:1. 当ImageView设置了alignBottom属性,对齐的方式是这样的:可以看到TextView和ImageView的视图底部对齐了,但这不是我们要的效果;2. 当ImageView设置了alignBaseline属性,对齐方式是这样的:此时的Imag...
2018-12-22 22:43:48
6970
2
原创 刷新媒体库的几种方式
操作MediaStore/*** 向 MediaStore 中插入图片数据,并产生一个缩略图* 不需要指定路径,会自动将图片保存至 Picture 目录下*/public static void MediaStore.Image.Media.insertImage( ContentResolver cr, Bitmap source, String title, Str...
2018-11-24 17:10:55
2107
原创 Android Studio Flamingo 的 gradle-8.0-all.zip 下载(包含其他版本)
Android Studio Dolphin 正式版已经发布了,同时 gradle 的版本也进行了更新。跟往常一样,在 AS 上下载 gradle 的速度实在是太慢了,导致项目一直无法编译,在此将下载出来的 gradle-7.5.1分享出来
2017-11-06 14:49:43
66546
45
原创 Glide加载相同URL时由于缓存无法更新图片的问题
在使用Glide加载图片时,如果设置了缓存,那么无论图片是否有了更新,只要URL不变,那么就会使用内存缓存或者磁盘缓存的图片,导致加载出来的图片没有更新的问题,因此有两种解决方法:如果是本地图片,可以采取取消缓存的方式,这样是比较简单的操作: Glide.load(url) .skipMemoryCache(true) // 不使用内存缓存 .diskCacheStrateg...
2017-07-30 22:50:55
14074
4
原创 覆写ProgressDialog的setMessage方法无效的问题
最近在工作项目里发现以前的开发人员写的一个CustomDialog,是继承了ProgressDialog并重写了layout的,并在BaseActivity中对其进行封装,其中有一句setMessage(CharSequence message)并不起作用,无论写了什么内容,展示的都是layout中默认的String,进代码中查看发现并没有覆写setMessage(CharSequence mes...
2017-07-30 22:37:43
2163
原创 更改TimePicker、DatePicker的Spinner样式默认分隔线颜色
从源码看,DatePicker和TimePicker都是一个FrameLayout,有两种布局,一种是Material Design的时钟样式,一种是下图的Spinner样式,如图(DatePicker):在xml文件中(date_picker_legacy、time_picker_legacy)可以看到DatePicker和TimePicker是多个NumberPicker构成的,Spi...
2017-04-04 23:01:19
4395
4
原创 Git cmd下git log中文乱码的解决方案
之前使用git log打印日志的时候,中文显示正常,但是最近更新了最新的2.12.1版本之后,发现在CMD下使用git log,中文全部变成十六进制。在网上找了各种解决方法都不好使,结果卸掉新版本装回旧版本之后,发现又可以了。可能是更新太快,跟系统不兼容有关。在这里放上资源,有遇到一样问题的同学可以尝试一下。Git-2.9.3-rebase-i-64-bit.exe...
2017-03-24 11:23:45
4482
3
原创 SwitchCompat控件颜色的修改
在开发中经常见到切换开关的UI需求,在android.support.v7.widget包下,有个开关控件叫做SwitchCompat,但是在xml下并没有发现它有一个属性是用来更改颜色的。但是在style中,有一个属性叫colorControlActivated,它控制着CheckBox、EditText、Switch、Spinner、RadioButton等控件的默认色调,通过这个属性我们...
2017-03-21 21:32:03
2265
原创 Android Studio 中 Gradle 的升级和配置问题
前不久,Android Studio 2.3正式版发布了,该版本包含一些新特性,包括对WebP支持的更新;ConstraintLayout库支持更新和布局编辑器的部件面板;提供一个新的App Link助手可以帮助你在应用中构建URI的统一视图。在更新完之后,会提示gradle-3.3版本的更新,此时要注意几点:1. 更新gradle的几个配置文件,都在你的项目目录下,一个是buil...
2017-03-07 13:22:12
37692
3
转载 ConstraintLayout完全解析
转自:http://blog.csdn.net/guolin_blog/article/details/53122387本篇文章的主题是ConstraintLayout。其实ConstraintLayout是AndroidStudio 2.2中主要的新增功能之一。我们都知道,在传统的Android开发当中,界面基本都是靠编写XML代码完成的,虽然Android Studio也支持可视化的方式...
2017-03-07 12:02:12
1315
原创 依赖ConstraintLayout报错:Could not find com.android.support.constraint:constraint-layout:1.0.0-beta5
ConstraintLayout是Android Studio 2.2中主要的新增功能之一,方便开发者使用图形化界面来完成UI布局,减少布局嵌套。更多的使用方法,可以参考这篇文章:ConstraintLayout完全解析在进行布局转换时,我们需要添加依赖:compile'com.android.support.constraint:constraint-layout:1.0.0-b...
2017-02-15 09:28:31
20378
1
原创 自定义可缩放图片的ImageView
自定义ImageView,实现图片的缩放多指的图片缩放,最大放大倍数是4倍 双击的图片缩放,有两个缩放等级 与ViewPager兼容,在图片放大的情况下可移动图片 使用到的知识点有:Matrix矩阵的操作,GestureDetector手势监测器,Runnable等大致思路(参照ZoomImageView代码,在下方): 继承OnGlobalLayoutListener,实现on...
2016-11-10 01:20:11
1161
转载 Android AsyncTask完全解析,带你从源码的角度彻底理解
转自:http://blog.csdn.net/guolin_blog/article/details/11711405我们都知道,Android UI是线程不安全的,如果想要在子线程里进行UI操作,就需要借助Android的异步消息处理机制。之前我也写过了一篇文章从源码层面分析了Android的异步消息处理机制,感兴趣的朋友可以参考 Android Handler、Mes
2016-10-23 22:46:40
367
转载 控件WebView的使用
转自:Android:控件WebView显示网页WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用。webview有两个方法:setWebChromeClient 和 setWebClientsetWebClient:主要处理解析,渲染网页等浏览器做的事情setWebChromeClient:辅助WebView处理Javascrip
2016-08-25 19:10:19
575
原创 自定义View的基本步骤
当系统自带的传统布局不满足需求时,我们就需要自定义自己想要的View了。自定义一个View需要四个步骤:自定义View的属性; View的构造方法中获取自定义属性; 重写onMeasure()方法;(非必要,但大多数时间必要,有时候可以利用onSizeChanged()代替) 重写onDraw()方法。一、自定义View的属性:1.首先需要先新建一个继承自View的类。我们以...
2016-07-23 11:06:46
722
原创 Activity的生命周期
Activity是Android四大组件之一,是与用户交互的一个重要组件。在使用每一个Activity时,都需要在AndroidManifest.xml中进行相应的<activity>声明。返回栈Android使用任务(Task)来管理活动,一个任务就是一组存放在栈里的活动的集合,这个栈叫做返回栈(Back Stack)。栈是一种后进先出(Last In, First O...
2016-07-11 13:47:56
803
原创 Looper、Message、Handler和HandlerThread之间的关系
Android中,使用AsyncTask来执行简单的后台线程,但是AsyncTask较适用于短暂的、不重复的运行任务。因为从Android3.2起,AsyncTask不再为每个实例创建线程,而是利用一个Executor在单一的后台线程上运行所有的AsyncTask后台任务,相当于所有的AsyncTask实例在同一个队列中排队运行,所以长时间且重复运行的AsyncTask会影响其他实例的运行,导致堵...
2016-07-05 12:50:13
1078
原创 Android中的MVC设计模式
随着应用功能的持续扩展,应用往往会变得过于复杂、难以理解。以Java类组织代码,再把Java类分层,有助于我们整体视角设计和理解应用。一般来说Android把应用对象分成模型、控制器和视图三大层次,基于MVC(Model-View-Controller)的架构模式进行程序设计。使用MVC分层模型,可以帮助我们更好地设计应用,还可以提高每一个类的可复用性。模型(Model):存储着应用的数...
2016-07-02 13:23:34
815
gradle-8.0-all.zip
2023-06-09
gradle-7.5.1-all.zip 下载
2022-10-27
gradle-7.3.3-all.rar
2022-05-10
gradle-7.2-all.zip
2022-01-28
gradle-7.0.2-all.rar
2021-08-03
gradle-6.7.1-all.rar
2021-08-03
gradle-6.5-all.rar
2020-10-13
gradle-5.4.1-all.rar
2020-08-03
gradle-6.1.1-all.rar
2020-07-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人