![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
文章平均质量分 90
wandryoung
专注 笃行 求真
展开
-
Gradle笔记_5-管理多模块构建
Gradle笔记_5-管理多模块构建5.1 解剖多模块构建通常,一个多模块项目有一个根目录,在其子文件夹中包含所有的模块。为了告知 Gradle 项目的结构以及哪个文件夹包含那些模块,需要在项目的根目录提供一个 settings.gradle 文件。每个模块都可以提供自己的 build.gradle 文件。下面是多模块项目结构:在项目的 settings.gradle 文件中声明了所有的模块,如下所示:include ':app', ':library'该代码确保了 app 和 libr原创 2021-02-19 11:20:33 · 1040 阅读 · 0 评论 -
Gradle笔记_4-创建构建Variant
Gradle笔记_4-创建构建Variant开发一个应用时,通常有几个不同版本。最常见的情况是,测试版本和生产版本,可能 baseUrl 不同,Logger 开关不同等。除此之外,你的应用可能还有一个免费版和付费版。这样的话,就需要处理四种不同的版本:免费测试版、付费测试版、免费生产版、付费生产版。不同版本的不同配置让项目变得是非复杂。在 Gradle 中有一些便捷和可扩展的概念用来定位这些常见问题。构建类型:每个由 Android Studio 创建的新项目都会生成 debug 和 rel原创 2021-02-09 15:56:22 · 1286 阅读 · 0 评论 -
Gradle 笔记_1 - Gradle 基础
Gradle 笔记 - Gradle 基础《Gradle for Android 中文版》笔记理解 Gradle 基础Gradle 构建的脚本–build.gradleGradle 有约定优于配置的原则,即为设置和属性提供默认值。基于 Groovy 的领域专用语言(DSL)。Groovy 是一种基于 Java 虚拟机的动态语言。想创建自己的任务和插件,那么对 Groovy 有更深层次的理解就显得尤为重要。项目和任务Gradle 中,最重要的两个概念是项目和任务。每一次构建都包括至少原创 2021-01-26 11:33:54 · 162 阅读 · 4 评论 -
Gradle笔记_3-依赖管理
Gradle笔记_3-依赖管理《Gradle for Android 中文版》笔记Gradle文档build.gradle 文件中添加一行依赖代码,Gradle 将会从远程仓库下载依赖库,项目中就可以使用其中的类了。3.1 依赖仓库repositories { jcenter()}Gradle 支持三种不同的依赖仓库:Maven、Ivy 或静态文件或文件夹。在构建(build)的执行阶段依赖从依赖仓库中被获取出来。Gradle 也有本地缓存,所以一个特定版本的依赖只会在你的机器上下载原创 2021-01-26 11:45:26 · 333 阅读 · 0 评论 -
Gradle笔记_2-基本自定义构建
Gradle笔记_2-基本自定义构建《Gradle for Android 中文版》笔记理解Gradle文件Android Studio创建项目,会默认生成三个 Gradle 文件。MyAppbuild.gradlesettings.gradleappbuild.gradlesettings 文件settings.gradle 文件内容如下示例:include ':app', ':commonlite'rootProject.name='MyApp'settings原创 2021-01-26 11:39:21 · 191 阅读 · 0 评论 -
EditText输入内容拦截和监听删除
public class ExtendEditText extends AppCompatEditText { public ExtendEditText(Context context) { super(context); } public ExtendEditText(Context context, AttributeSet attrs) { super(context, attrs); } public ExtendEdi原创 2020-11-12 09:53:30 · 2649 阅读 · 2 评论 -
Android设置文字中粗
UI设计图中给出了字重为中粗(Medium),而android中的文字只有默认和加粗(bold)。目前找到两种方式比较有效:给TextView 的 TextPaint 设置 伪粗体 setFakeBoldText(true)给TextView 的 TextPaint 设置文字边框宽度 setStrokeWidth(1.2f)kotlin代码如下:textView.paint.isFakeBoldText = truetextView.postInvalidate() // 或者 textVi原创 2020-07-30 16:08:14 · 2474 阅读 · 0 评论 -
流式布局初探
背景最近项目中用到了流式布局,最初就决定自己写一个,发现一时竟然没有思路。虽然自定义控件的博客看了不少,也写过简单的自定义控件,但是真正自己独立写出一个流式布局,还是有些考验的。查找了几篇博客,思路大同小异,理清思路,自己开干写了一下。中间改了几个问题,觉得可以正常使用后,这才有了这篇博客。我想说,会写流式布局了,表示你对ViewGroup的测量(onMeasure)和布局(onLayout)...原创 2020-01-20 15:10:31 · 300 阅读 · 0 评论 -
xutils 的 LogUtil
偶然翻到 xutils 源码中的 LogUtil 工具类,觉得挺不错,果断 copy 过来备用。它巧妙运用了 Throwable ,可以定位到 类名 -> 方法名 -> 行号,对于调试来说,非常方便。代码如下:import android.text.TextUtils;import android.util.Log;public class LogUtil { //...原创 2019-06-14 15:14:21 · 255 阅读 · 0 评论 -
ViewPager打造真正意义的无限轮播
文章目录1 简述2 实现思路3 具体实现3.1 实现无限滚动3.2 添加指示器3.3 自动轮播3.4 点击跳转4 总结5 参考1 简述ViewPage 不仅常用于页面导航切换,也常用来实现轮播图。百度一下,可以找到很多关于轮播图的实现文章。曾翻看过多篇相关文章,get 到一些要点,然而觉得自己实现一下,会更加深刻,如果加上自己独特的思路,也是对自己的一个锻炼,对代码一个积累。2 实现思路V...原创 2019-06-19 17:42:39 · 1137 阅读 · 1 评论 -
GestureDetector简单应用实现长按和双击
要实现 Android 双击 功能,我们可通过记录两次点击时间,用两次点击时间间隔来判断实现双击功能。也可以通过手势 GestureDectector 的监听 实现双击功能。如下代码所示,创建 GestureDetector 同时注册 SimpleOnGestureListener 手势监听,实现长按(onLongPress)和双击(onDoubleTap)回调方法。为 view 设置触摸监听 ...原创 2019-06-21 17:15:07 · 3030 阅读 · 0 评论 -
ViewPage 联动效果自带角标
文章目录1. 简介2. 要点2.1 角标如何布局2.2 如何与Indicator实现联动3. 实现3.1 布局3.2 导航栏3.3 导航栏与ViewPager联动3.4 tab切换效果4. 代码5. 参考1. 简介常常羡慕于别人分享的自定义ViewPager联动效果。近期项目中用到联动效果,找来一个不错的框架用到了项目中。发现有几个问题:一是难以适应自己项目的设计风格;二是适应自己项目的交互比...原创 2019-06-17 21:18:00 · 525 阅读 · 0 评论 -
利用ViewPage的PagerTransformer定制页面切换效果
1. 简述定制ViewPage的页面切换效果其实非常简单,只需用到ViewPager 的一个方法和一个接口 PagerTransformer。顾名思义,接口 PagerTransformer2. PagerTransformer3. 例子和效果4. 参考...原创 2019-07-12 17:40:22 · 2076 阅读 · 0 评论 -
ViewPager禁止滑动和修改滑动速度
1. 简介2. ViewPager 禁止滑动3. ViewPager 的scroller4. 参考原创 2019-08-23 12:46:14 · 6825 阅读 · 0 评论 -
ScrollView 嵌套 RecyclerView 冲突问题
开发中使用ScrollView 嵌套 RecyclerView 时遇到了滑动冲突和显示不全问题。自己尝试解决了一下。由于项目需求,需要 ScrollView 高度是 wrap_content,ScrollView 内是一个 LinearLayout ,LinearLayout 里添加了多个 RecyclerView 。SrcollView 有一个最大高度 maxHeight 。对于可能出现的 ...原创 2019-08-30 16:36:30 · 540 阅读 · 0 评论 -
TextView之自定义Span—MarkerViewSpan,TextView中添加View
关于 Span ,我们常用的有 ForegroundColorSpan(前景色,即字体颜色)、BackgroundColorSpan(背景色)、AbsoluteSizeSpan(绝对大小,设置字体大小)、ImageSpan(插入图片)等,更多可参考import android.graphics.Canvas;import android.graphics.Paint;import andro...原创 2019-09-12 12:39:48 · 2084 阅读 · 1 评论 -
利用Appliaton的ActivityLifecycleCallbacks管理Activity
文章目录1 简介3 代码1 简介有时候我们是需要管理应用的 Activitiy,作一些统计、退出应用等操作。通常我们会写一个工具类,使用一个栈 Stack 管理所有的 Activity,需要在 BaseActivity 中重写 onCreate 方法,使用工具类将 Activity 添加到栈中,在结束页面时要将 Activity 从栈中移除。其实 Application 有一个内部类 Act...原创 2019-06-14 14:16:14 · 435 阅读 · 0 评论 -
下载 build-toos 失败问题
最近更新了新版的AndroidStudio,提示我下载build-toos:28.0.3, 我就点了一下,弹出下载弹框,下载竟然失败了,提示我查看 Event Log。看了 Event Log,告诉我试着设置了一下,发现没有用。于是查了一下百度,找到了一篇博客:https://blog.csdn.net/qq_42356693/article/details/86571561下面是摘录的重...转载 2019-05-27 11:52:55 · 211 阅读 · 0 评论 -
Activity背景透明和窗口化
说明最近项目中有个需求,要将VideoView放在Dialog中,而且VideoView上方悬浮一个半透明的全屏按钮。 发现…有BUG,视频亮度变暗了,好像是被一个蒙层遮盖了。百度了一下,找了几个解决方法。使用mVideo.setZOrderOnTop(true);将VideoView放到最上层,视频确实正常了,但是全屏按钮看不见了,但点击事件还有。改变屏幕的亮度,WindowManager原创 2017-06-20 11:33:50 · 8055 阅读 · 0 评论 -
笔记:事件分发机制(二):ViewGroup的事件分发
前言前面我根据郭大神的博客做了View的事件分发的笔记 笔记:事件分发机制(一):View的事件分发 对View的事件分发有了一个比较深入的了解。 本篇还是就郭大神的博客 Android事件分发机制完全解析,带你从源码的角度彻底理解(下) 做一下笔记。从源码角度深入分析和理解一下ViewGroup的事件分发。ViewGroupViewGroup是View 的子类,一般作为容器,盛放其他V原创 2017-06-23 17:36:20 · 503 阅读 · 0 评论 -
VideoView循环播放视频
VideoView循环播放视频· 本地视频· 网络视频原创 2017-06-21 17:52:02 · 13220 阅读 · 1 评论 -
笔记:事件分发机制(一):View的事件分发
一直以来虽然对事件分发机制多少有些了解,看过一些博客,但自己没有真正从源码层次分析过。我觉得心中模糊的知识,不去加以验证和分析就不算真正明白,而不能纯熟运用的就不算真正熟练。其实知道的知识点有很多,但大多数只知其然,多少会用一点,但不知其所以然,所以一直是庸手,因为知之而不精,用之而不能游刃。所以,需要由浅入深的渗透学习。把知道的和会用的变成精通的,再广泛涉猎。此所谓,会别人之不会,用别人之不明,原创 2017-06-22 09:59:54 · 380 阅读 · 0 评论 -
属性动画1:基础知识和ValueAnimator
参考博客和文章 [1] Developers>API Guides>Property Animation [2] 安卓开发艺术探索 [3] 启舰: 自定义控件三部曲之动画篇(四)——ValueAnimator基本使用 [4] Carson_Ho:Android 属性动画:这是一篇很详细的 属性动画 总结&攻略 [5] 李海珍:插值器源码与曲线图 [6]pengkv原创 2017-06-30 10:50:50 · 859 阅读 · 0 评论 -
属性动画2:ValueAnimator高级进阶(一)
参考博客: [1] 启舰: 自定义控件三部曲之动画篇(五)——ValueAnimator高级进阶(一) [2]郭霖:Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法 [3] Developers :ValueAnimator [4] Android开发艺术探索 [5] Carson_Ho: Android 属性动画原创 2017-07-16 15:10:31 · 888 阅读 · 0 评论 -
Android 插值器(Interpolator)源码和曲线图
这篇关于插值器的博客,非常不错哦!转载过来来学习一下。android动画(一)Interpolator作者:李海珍一:简介interpolator可以翻译成插值器。Android中interpolator最底层的接口如下:package android.animation;/** * 时间插值器定义了一个动画的变化率。 * 这让动画让非线性的移动轨...转载 2019-06-24 09:36:49 · 1326 阅读 · 0 评论 -
一个关于SharedPreferences的工具类
简介 之前,我使用的SharedPreferences的工具类,都是使用静态方法或单例,虽然使用起来还可以,但实用性上还是会有所欠缺。比如这个场景,我们需要将某些相关信息(比如用户信息、设备信息等)单独保存到一个SP文件,在需要时,统一清除掉。 假如不单独保存到一个SP文件,在需要清除某类信息时,就要通过key一个一个删除。如果单独保存,使用单例模式,势必要增加一个工具类。再如果原创 2017-11-24 17:12:14 · 259 阅读 · 0 评论 -
ViewPager动态添加删除及刷新页面
目录:前言PagerAdapter 的刷新1 源码解析2 例子FragmentPagerAdapter的刷新1 源码解析2 例子ViewPager相关知识点1. 前言在此之前,我总是不得其解,同样都提供了notifyDataSetChanged()方法,为什么 ListView 的adapter使用刷新的方法非常好用,而 ViewP原创 2018-01-10 22:13:34 · 8800 阅读 · 1 评论 -
DateFormatUtil,好用的日期格式化工具类
这是一个日期格式化和解析的工具类。使用很方面哦。。。可以根据需求修改,增加常量,添加非空校验等。主要功能:格式化、解析、转换。import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/** * Created ...原创 2018-10-15 19:03:41 · 1974 阅读 · 0 评论 -
Android的数据存储
Android的数据存储方式有哪些?Android的5中存储方式:· SharedPreferences(配置共享)· File I/O(文件存储):内存和外部存储· SQLite(数据库):数据库操作,数据库增删改查· ContentProvider(内容提供者)· 网络存储:上传数据和网络请求数据数据存储的三个维度 存储方式 安全 效率 量级 网络存储丢...原创 2018-10-31 11:37:47 · 607 阅读 · 0 评论 -
WebView加载html图片不显示问题
参考链接[1] webview加载https链接(终极解决方案,包括https链接加载http图片显示失败)[2] Android WebView 图片显示不了 http和https混合问题近期在项目中出现了一个问题,WebView加载html时,部分图片显示不出来,一直显示裂图,多方搜索,可能是因为http和https的混合问题。原因在Android5.0 以及以上的系统,当Web...原创 2018-11-06 12:14:03 · 7024 阅读 · 0 评论 -
Android Studio快捷键
键盘快捷键Android Studio 为许多常用操作提供了键盘快捷键。 表 1 按操作系统显示了默认键盘快捷键。注:除了下面表 1 中的默认键映射外,您还可以选择多种预设的键映射,也可以创建自定义键映射。如需了解有关自定义键盘快捷键的详细信息,请参阅下面的配置自定义键映射。表 1. Windows/Linux 和 Mac 操作系统的默认键盘快捷键。 说明 ...原创 2018-12-29 11:31:24 · 101 阅读 · 0 评论 -
RecyclerView相关博客
RecyclerView相关博客【鸿洋_】[1] Android RecyclerView 使用完全解析 体验艺术般的控件[2] Android 优雅的为RecyclerView添加HeaderView和FooterView加载刷新[1] android 打造真正的下拉刷新上拉加载recyclerview(一):使用[2] android 打造真正的下拉刷新上拉加载recyclervi...原创 2019-01-29 18:44:41 · 167 阅读 · 0 评论 -
EditText软键盘的显示隐藏及焦点问题
简介EditText作为Android输入框,对于Android开发来说,是不能再熟悉的一个控件。但是,使用EditText 有很多的细节需要注意。比如它的一些常用属性、焦点问题、软键盘的显示隐藏等。在此,我做一些笔记,方便自己使用和记忆。EditText 基本知识示例代码:<EditText android:layout_width="match_parent" a...原创 2019-04-12 11:38:33 · 3491 阅读 · 0 评论 -
Android 实现金额从右向左输入
简介最近项目涉及到了金额输入,觉得这不是个小case,真正实现起来发现一时不太好弄,于是搜了一些博客看了一下,使用以后,发现多少有些bug,还是觉得不如自己实现。简单看一下效果描述: 小数点后保留两位输入没有输入显示:¥0.00输入一位显示:¥0.03 (输入3)再输一位显示:¥0.37 (输入7)继续输入显示:¥3.78 (输入8) –>¥378.42 (输入4,原创 2017-03-30 17:18:41 · 1475 阅读 · 0 评论