Android
hust_twj
这个作者很懒,什么都没留下…
展开
-
Android 10 使用 drawable xml 设置渐变背景的坑
1 背景先说明一下问题的背景。之前项目有个登录按钮,正常时其背景如下图所示,背景颜色为从左到右的渐变色。背景 xml 也很简单(没有设置 angle):<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" ...原创 2019-12-18 15:32:07 · 4340 阅读 · 0 评论 -
Android 使用Jetpack Lifecycle 创建可感知页面生命周期的Dialog、Banner等
问题背景:场景是这样的:activity A 中有一个弹框,弹框里面有个列表,点击弹框中列表的 item 进入 activity B,再从 activity B 返回 到 activity A 时,列表需要刷新(其实,每次弹框重新可见时都需刷新,如跳转、切后台、屏幕解锁等)。总的来说,弹框需要感知 activity A 的 onResume()生命周期方法。那么,实现这种需求,可以有如下方法:...原创 2019-11-22 20:32:32 · 3065 阅读 · 0 评论 -
Android 消息机制之 MessageQueue 消息队列
ss原创 2019-02-20 18:45:51 · 2515 阅读 · 0 评论 -
三天学会 Kotlin 笔记
第一天 Kotlin 基础常量变量if表达式when表达式ranges 范围懒属性延迟加载函数字符串模板集合类型Lambda第二天 面向对象面向对象数据类枚举类空判断错误处理类型检查与转换第三天 接口泛型扩展接口interface泛型Generics扩展Kotlin 与 Swift 很像,接口、扩展、泛型写法相似,面向...原创 2018-02-23 15:49:05 · 2971 阅读 · 0 评论 -
activity 的四种启动模式和 onNewIntent()
Android中Activity启动模式详解 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。 Android中Activity的启动模式分为四种:Activity的四种启动模式:1. standard 默认启动模式,每...转载 2018-03-06 12:01:11 · 857 阅读 · 0 评论 -
Android 利用 xml 文件实现 ImageView 的加载转圈动画
在请求数据返回之前,为了减少用户等待的焦虑感,经常需要有转圈加载等待的过渡效果。加载转圈动画效果如下(录屏软件有点问题,忽略上面部分,只看下面部分的转圈动画): 1、在 res/anim/ 文件夹下新建anim_circle_rotate.xml:<?xml version="1.0" encoding="utf-8"?> <set xmlns:androi...原创 2018-04-07 14:46:46 · 7073 阅读 · 1 评论 -
Kotlin 不再使用 findViewById 的原理探析
在Kotlin中,一个非常好用的特性是:可以直接使用控件 ID 对控件进行操作,而不需要像 Java 中先使用 findViewById() 来找到某个控件,然后才能操作该控件。举个栗子, activity_main.xml中有个TextView,其 ID 为 tv_name 的,将布局像下面这样引入进来后: 就可以直接使用tv_name: 可以看到,利用tv_name可以直接使用...原创 2018-05-12 12:22:11 · 12847 阅读 · 1 评论 -
SparseLongArray 和 LongSparesArray 的区别
SparseArray 是 Android 平台特有的,引入 SparseArray 的目的是替代 HashMap 从而节省内存空间,其用法与 HashMap很类似。由 SparseArray 又可以派生出 SparseLongArray 和 LongSparesArray。要说 SparseLongArray 和 LongSparesArray 的区别,先来说一下 SparseArray。...原创 2018-06-01 15:06:38 · 4615 阅读 · 0 评论 -
setLayerType 解决自定义Dialog 嵌套腾讯 WebView 后显示不出来
项目中有一个需求,客户端提供一个容器来承载 H5, 展示的内容全部交给前端。 于是,选择用 Dialog 里面嵌套 WebView 的方式。由于我们项目中使用的腾讯 X5,所以就没有用系统的 WebView了。 项目上线后,测试反馈说在某 4.4.2 的机型上,WebView 显示不出来,如下图所示(打了一下码),这就很尴尬了┭┮﹏┭┮ 可以看到,activity 的上覆盖了灰色透明...原创 2018-07-06 18:09:31 · 2346 阅读 · 0 评论 -
图解 Android View动画中 android:pivotX 和 android:pivotY 属性的含义
在 Android 动画中,缩放动画(scale标签)和旋转动画(rotate标签)均有 android:pivotX 和 android:pivotY 这两个属性,其值可以有多种形式,并不是很好理解。本文就用一个小 Demo 来展示这两个属性的含义,相信看了之后会有很直观的感受。android:pivotX 表示缩放/旋转起点 X 轴坐标,可以是整数值、百分数(或者小数)、百分数p 三种样式...原创 2017-11-21 11:07:02 · 30787 阅读 · 6 评论 -
Android从一个APP跳转到另一个APP的主界面或某页面,并传递数据
1. Android 从一个 APP 跳转到另一个 APP 主界面 Intent intent = new Intent(Intent.ACTION_MAIN); //前提:知道要跳转应用的包名、类名 ComponentName componentName = new ComponentName("com.example.hust_twj.sec...原创 2017-06-19 21:45:13 · 73384 阅读 · 22 评论 -
Android 之 LayoutParams
原创文章,欢迎转载。转载请注明来源: http://blog.csdn.net/hust_twj/article/details/78857739LayoutParams 是用 Java 代码来实现动态布局,它是 子控件 告诉 父控件 自己要如何布局时用的。LayoutParams 类简单的描述了位置,宽和高,它们可以设置成下面的这三种值: 1. 一个确定的值; 2. MAT原创 2017-12-21 10:15:36 · 613 阅读 · 0 评论 -
Android 开发常用技巧(持续更新...)
原创文章,欢迎转载。转载请注明来源: http://blog.csdn.net/hust_twj/article/details/612003541、防止按钮快速点击的工具类:2、XML中添加点击事件3、创建用于管理所有活动的类:4、扩大点击区域:5、给 ImageView 加遮罩(蒙层):6、定义 Layout布局 时向上转为基类 View7、同时居中和...原创 2017-03-10 16:54:34 · 955 阅读 · 0 评论 -
Android 4.3(API 18)及以下调用 RelativeLayout.mesure() 时出现 NullPointerException 异常
负责的一个新手引导的需求,友盟上报 Android 4.3(API 18) 的机型(公司APP 最低支持的安卓版本即为 4.3)中会出现 NullPointerException 的 bug。百度后知道了原因:http://blog.csdn.net/chengxu_hou/article/details/74940938。原来,只要是在 4.3 及以下的系统中调用 RelativeLayou原创 2017-11-15 16:36:41 · 2516 阅读 · 0 评论 -
Android 颜色透明度百分比转换为 十六进制
将 UI 小姐姐给的透明度百分比转换为十六进制:透明度百分比对应的十六进制:(说明:百分比计算出来会有小数,按照常规的四舍五入处理) 百分比:0% HEX: 00 百分比:1% HEX: 30 百分比:2% HEX: 50 百分比:3% HEX: 80 百分比:4% HEX: A0 百分比:5% HEX: D0 百分比:6原创 2018-01-15 16:50:31 · 3401 阅读 · 1 评论 -
解决 Android 中 View 的 setPivotX 和 setPivotY 不生效的问题以及设置缩放中心的方法
背景是这样的:有一个需求要对下方的关注按钮实现如下动画,动画的最后要根据滑动位置对关注按钮进行缩放,缩放结束时整体大小为控件原始大小的90%,最终效果图如下所示: 如图,关注按钮向上滑动到某临界位置时,按钮需要缩小;同样,向下滑动到相同的临界位置时,需要放大。在布局文件中,关注按钮整体布局为RelativeLayout,爱心ImageView和文字TextView居中。由于动画需要根据滑动位置原创 2017-12-22 21:47:39 · 20678 阅读 · 0 评论 -
Android 中 EditText 的 inputType 属性及其他常用属性详解
一、xml里面调用:<---输入数字->android:inputType="number"/> 二、Activity里的调用:EditText editText=(EditText)findViewById(R.id.edittext);intinputType=InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_VARIATION_NORMAL原创 2017-12-19 14:55:26 · 8662 阅读 · 0 评论 -
Android 防止多次重复点击的三种方法
在项目中经常会遇到对按钮、自定义控件的 Item 等防止多次重复的点击的问题,下面做一个小结。方法1:使用 RxJava 的 throttleFirst()具体代码如下: /** * 防止重复点击 * * @param target 目标view * @param listener 监听器 */ public static void pr原创 2017-12-07 16:02:00 · 47385 阅读 · 10 评论 -
Android消息机制Message的target==null的黑科技
Android的消息机制,就是Handler、Lopper、Message、MessageQueue之间的运作机制。本文不打算介绍它们之间千丝万缕联系,不了解的同学可以参考 之前的博客。这里面有个很细节的问题,估计很多人没有注意到,那就是 Message 的 target == null的情况,这有什么特殊含义吗?与 target 不为 null 的区别在哪里呢?这篇文章的目的就是要揭开 Mes...原创 2019-08-10 02:11:54 · 2816 阅读 · 0 评论 -
DataBinding错误 java.lang.NoClassDefFoundError: Failed resolution of: Landroid/arch/lifecycle/Observer
在学习DataBinding的时候,App出现奔溃。错误日志信息如下:2019-07-23 23:30:01.033 14075-14075/com.hust_twj.zademo I/art: Rejecting re-init on previously-failed class java.lang.Class<android.databinding.ViewDataBinding$...原创 2019-07-24 00:05:14 · 5969 阅读 · 0 评论 -
LeakCanary 内存泄露源码分析
写在前面本文分析的 LeakCanary 的源码版本为 v1.6.3 。现在最新的版本为 v2.0-alpha-2,已经全部用 Kotlin 重写了(网络库 okhttp 同样也用 Kotlin 重写了),这也从侧面反映了 Kotlin 是大势所趋。开始在 github 的官方指南链接中,我们可以看到,LeakCanary 检测程序内存泄露的入口是:LeakCanary.install(...原创 2019-05-28 19:01:41 · 908 阅读 · 0 评论 -
Mac 下配置 Gradle 环境
先说两个常用命令,分别是打开和保存配置文件:打开:open -e .bash_profile保存:source ~/.bash_profile1、查找Gradle路径右键最后面黑色图标的gradle并查看简介,可以得到其路径:因此路径为:/Applications/Android\ Studio.app/Contents/gradle/gradle-4.10.1/bin2. 配...原创 2019-04-13 12:42:41 · 511 阅读 · 0 评论 -
Android消息机制之HandlerThread
概述严格来说,HandlerThread 与Android 的异步消息机制关系不是太大,但毕竟 HandlerThread 里面包含了 Handler 以及 Looper,姑且放在这里吧。其实,HandlerThread 本质是一个线程,它继承自 Thread,内部使用了 Handler 和 Looper 来进行消息的分发、循环以及处理。示例这个例子中,展示了利用 HandlerThrea...原创 2019-02-22 22:39:11 · 1931 阅读 · 1 评论 -
Android消息机制之ThreadLocal浅析
概述ThreadLocal 不是 Thread,它是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,对数据存储后,只有在指定线程中才可以获取到存储的数据,对于其他线程来说则是无法获取到数据的。日常开发中用到 ThreadLocal 的场景不多,但是在 Android 系统中的 Looper、 ActivityThread、 AMS 等源码都用到了ThreadLocal。一般来说,当...原创 2019-02-21 18:49:03 · 467 阅读 · 0 评论 -
Android消息机制之 Looper 消息循环
哈哈原创 2019-02-28 13:05:26 · 1103 阅读 · 0 评论 -
Android 在 Fragment 中集成 React-Native(RN)步骤
1、创建 package.json 和 index.android.js 文件:package.json 代码如下,其中RN版本为 0.48.4:{ "name": "FragmentWithRN", "version": "0.0.1", "private": true, "scripts": { "start": "node node_modules/react-nati原创 2017-10-17 10:57:17 · 7189 阅读 · 6 评论 -
用 bat 批处理命令启动 Android Studio 自带模拟器
在 Android 动画中,缩放动画(scale)和旋转动画(rotate)均有 android:pivotX 和 android:pivotY 这两个属性,其值可以有多种形式,并不是很好理解。本文就用一个小 Demo 来展示这两个属性的含义,相信看了之后会有很直观的感受。android:pivotX 表示缩放/旋转起点 X 轴坐标,可以是整数值、百分数(或者小数)、百分数p 三种样式,比如 50、原创 2017-11-25 13:05:49 · 2845 阅读 · 0 评论 -
Android Studio错误:unreachable statement
最近刚用AS上写代码遇到一个错误:unreachable statement。上网上一查发现:我把代码写在return后面才导致这个错误的发生(太2了,非常不应该啊!)整理了一下以下情况可能出现这个异常:(1)在reutrn语句后写语句。(2)在throw语句后写语句。(3)break、continue语句之后定义语句。(4)“\u10100”//合法,相当于‘\u1010’和字符串“0”。(5)移原创 2017-03-27 11:33:00 · 5873 阅读 · 0 评论 -
使用requestWindowFeature(Window.FEATURE_NO_TITLE)去掉标题栏失效的解决方法
使用requestWindowFeature(Window.FEATURE_NO_TITLE)去掉标题栏失效,原因可能是创建Activity时继承的是AppCompatActivity而非Activity 。一、若创建Activity时继承的是 Activity: 第一种:常用的一种方法:requestWindowFeature(Window.FEATURE_NO_TITLE);//这行代原创 2017-03-22 22:57:29 · 4387 阅读 · 1 评论 -
Java或Android变量名前是否加m的规则
总结: 非公有(private/protected/default)变量前面要加上小写m; 静态变量(static)前面加上小写s; 其它变量以小写字母开头; 静态常量(static final)全大写。public class MyClass { public static final int CONSTANT_NAME = 42; public int publi原创 2017-03-16 17:12:35 · 4863 阅读 · 0 评论 -
未root的安卓真机使用sqlite3查看data目录下的数据库
没有root的安卓手机连接电脑直接使用ADB进行查看data目录下的数据库,会显示Permission denied ,即没有权限。通用的查看方式如下:shell@android:/data $ run-as com.your.packagerun-as com.your.packageshell@android:/data/data/com.your.package $ cd /data/d原创 2016-08-15 16:43:12 · 9712 阅读 · 0 评论 -
Glide 图片加载
Glide 是 Google 员工的作品(github链接),它完全基于 Picasso ,沿袭了 Picasso 的简洁风格,但在其上做了大量优化与改进。两者区别如下:在内存占用方面, Glide 默认的 Bitmap 格式是 RGB_565 格式(一个像素占16位),而 Picasso 为ARGB_8888 格式(一个像素占32位),因此 Glide内存开销比Picasso 要小一半;在磁盘原创 2016-08-06 16:58:55 · 2647 阅读 · 2 评论 -
android 事件处理机制之 requestDisallowInterceptTouchEvent
当手指触摸到屏幕时,系统就会调用相应 View 的 onTouchEvent,并传入一系列的 action 。当有多个层级的 View 时,在父层级允许的情况下,这个 action 会一直向下传递直到遇到最深层的 View 。所以 touch 事件最先调用的是最底层 View 的 onTouchEent,如果 View 的 onTouchEvent 接收到某个 touch action 并作了相转载 2016-09-02 09:35:55 · 666 阅读 · 0 评论 -
View事件分发机制
最近准备面试,貌似好多都会问到View事件的分发机制这个问题。于是阅读习惯博文,并总结一下:View事件分发与三个方法有关:dispatchTouchEvent、onTouchEvent、setOnClickListener。 TOUCH事件有三个,分别为 DOWN、MOVE、UP,其中 MOVE 可能出现 0 次或多次。无论是 DOWN,MOVE,UP都会按照下面的顺序执行: dispat原创 2016-08-21 17:18:31 · 356 阅读 · 0 评论 -
Android应用程序启动过程源代码分析
前文简要介绍了Android应用程序的Activity的启动过程。在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程序的启动过程。在上一篇文章Android应用程序的Activity启动过程简要介绍和学习计划中,我们举例子说明了启动Android应用程转载 2016-08-20 21:19:59 · 988 阅读 · 0 评论 -
ScorllView相关问题总结
1、如何判断ScrollView是否已经滑动到了最底部? public class MainActivity extends Activity implements OnTouchListener{ private ScrollView scrollView; private TextView textView; @Override protected void onCr原创 2016-08-31 09:28:27 · 429 阅读 · 0 评论 -
Android进程间通信(IPC)机制Binder介绍
转载自:http://blog.csdn.net/luoshengyang/article/details/6618363在Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中。那么,不在同一个进程的Activity或者Service是如何通信的呢?这就是本文中要介绍的Binde转载 2016-08-20 21:23:18 · 461 阅读 · 0 评论 -
Android应用程序的Activity启动过程简要介绍和学习计划
在Android系统中,Activity和Service是应用程序的核心组件,它们以松藕合的方式组合在一起构成了一个完整的应用程序,这得益于应用程序框架层提供了一套完整的机制来协助应用程序启动这些Activity和Service,以及提供Binder机制帮助它们相互间进行通信。在前面的文章Android进程间通信(IPC)机制Binder简要介绍和学习计划和Android系统在新进程中启动自定义服务转载 2016-08-20 21:08:10 · 550 阅读 · 0 评论 -
Android异步任务类AnsycTask三个泛型参数以及对应方法的解析
异步任务类AnsycTask为抽象类,其三个泛型参数为:Params,Progress 和 Result,分别对应如下三个方法:1、doInBackground(Params...):该方法运行在子线程中,处理一些耗时的任务,如网络和数据库的操作;2、onProgressUpdate(Progress...):子线程中的publishProgress()方法被调用后,UI 线程将调用onProgre原创 2016-08-17 14:46:03 · 1687 阅读 · 0 评论 -
四种色彩模式ARGB_8888、ARGB_4444、 RGB_565、 ALPHA_8的区别
A:透明度R:红色G:绿B:蓝Bitmap.Config ARGB_8888:由4个8位组成,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位(4字节)Bitmap.Config ARGB_4444:由4个4位组成,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位 (2字节)Bitmap.Config RGB_565:没有原创 2017-05-21 20:51:37 · 38785 阅读 · 2 评论