
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 · 4635 阅读 · 0 评论 -
Android 使用Jetpack Lifecycle 创建可感知页面生命周期的Dialog、Banner等
问题背景:场景是这样的:activity A 中有一个弹框,弹框里面有个列表,点击弹框中列表的 item 进入 activity B,再从 activity B 返回 到 activity A 时,列表需要刷新(其实,每次弹框重新可见时都需刷新,如跳转、切后台、屏幕解锁等)。总的来说,弹框需要感知 activity A 的 onResume()生命周期方法。那么,实现这种需求,可以有如下方法:...原创 2019-11-22 20:32:32 · 3227 阅读 · 0 评论 -
Android 消息机制之 MessageQueue 消息队列
ss原创 2019-02-20 18:45:51 · 2647 阅读 · 0 评论 -
三天学会 Kotlin 笔记
第一天 Kotlin 基础常量变量if表达式when表达式ranges 范围懒属性延迟加载函数字符串模板集合类型Lambda第二天 面向对象面向对象数据类枚举类空判断错误处理类型检查与转换第三天 接口泛型扩展接口interface泛型Generics扩展Kotlin 与 Swift 很像,接口、扩展、泛型写法相似,面向...原创 2018-02-23 15:49:05 · 3006 阅读 · 0 评论 -
activity 的四种启动模式和 onNewIntent()
Android中Activity启动模式详解 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。 Android中Activity的启动模式分为四种:Activity的四种启动模式:1. standard 默认启动模式,每...转载 2018-03-06 12:01:11 · 905 阅读 · 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 · 7223 阅读 · 1 评论 -
Kotlin 不再使用 findViewById 的原理探析
在Kotlin中,一个非常好用的特性是:可以直接使用控件 ID 对控件进行操作,而不需要像 Java 中先使用 findViewById() 来找到某个控件,然后才能操作该控件。举个栗子, activity_main.xml中有个TextView,其 ID 为 tv_name 的,将布局像下面这样引入进来后: 就可以直接使用tv_name: 可以看到,利用tv_name可以直接使用...原创 2018-05-12 12:22:11 · 12894 阅读 · 1 评论 -
SparseLongArray 和 LongSparesArray 的区别
SparseArray 是 Android 平台特有的,引入 SparseArray 的目的是替代 HashMap 从而节省内存空间,其用法与 HashMap很类似。由 SparseArray 又可以派生出 SparseLongArray 和 LongSparesArray。要说 SparseLongArray 和 LongSparesArray 的区别,先来说一下 SparseArray。...原创 2018-06-01 15:06:38 · 4689 阅读 · 0 评论 -
setLayerType 解决自定义Dialog 嵌套腾讯 WebView 后显示不出来
项目中有一个需求,客户端提供一个容器来承载 H5, 展示的内容全部交给前端。 于是,选择用 Dialog 里面嵌套 WebView 的方式。由于我们项目中使用的腾讯 X5,所以就没有用系统的 WebView了。 项目上线后,测试反馈说在某 4.4.2 的机型上,WebView 显示不出来,如下图所示(打了一下码),这就很尴尬了┭┮﹏┭┮ 可以看到,activity 的上覆盖了灰色透明...原创 2018-07-06 18:09:31 · 2417 阅读 · 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 · 31504 阅读 · 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 · 74281 阅读 · 22 评论 -
Android 之 LayoutParams
原创文章,欢迎转载。转载请注明来源: http://blog.youkuaiyun.com/hust_twj/article/details/78857739LayoutParams 是用 Java 代码来实现动态布局,它是 子控件 告诉 父控件 自己要如何布局时用的。LayoutParams 类简单的描述了位置,宽和高,它们可以设置成下面的这三种值: 1. 一个确定的值; 2. MAT原创 2017-12-21 10:15:36 · 660 阅读 · 0 评论 -
Android 开发常用技巧(持续更新...)
原创文章,欢迎转载。转载请注明来源: http://blog.youkuaiyun.com/hust_twj/article/details/612003541、防止按钮快速点击的工具类:2、XML中添加点击事件3、创建用于管理所有活动的类:4、扩大点击区域:5、给 ImageView 加遮罩(蒙层):6、定义 Layout布局 时向上转为基类 View7、同时居中和...原创 2017-03-10 16:54:34 · 981 阅读 · 0 评论 -
Android 4.3(API 18)及以下调用 RelativeLayout.mesure() 时出现 NullPointerException 异常
负责的一个新手引导的需求,友盟上报 Android 4.3(API 18) 的机型(公司APP 最低支持的安卓版本即为 4.3)中会出现 NullPointerException 的 bug。百度后知道了原因:http://blog.youkuaiyun.com/chengxu_hou/article/details/74940938。原来,只要是在 4.3 及以下的系统中调用 RelativeLayou原创 2017-11-15 16:36:41 · 2541 阅读 · 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 · 3639 阅读 · 1 评论 -
解决 Android 中 View 的 setPivotX 和 setPivotY 不生效的问题以及设置缩放中心的方法
背景是这样的:有一个需求要对下方的关注按钮实现如下动画,动画的最后要根据滑动位置对关注按钮进行缩放,缩放结束时整体大小为控件原始大小的90%,最终效果图如下所示: 如图,关注按钮向上滑动到某临界位置时,按钮需要缩小;同样,向下滑动到相同的临界位置时,需要放大。在布局文件中,关注按钮整体布局为RelativeLayout,爱心ImageView和文字TextView居中。由于动画需要根据滑动位置原创 2017-12-22 21:47:39 · 20916 阅读 · 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 · 9148 阅读 · 0 评论 -
Android 防止多次重复点击的三种方法
在项目中经常会遇到对按钮、自定义控件的 Item 等防止多次重复的点击的问题,下面做一个小结。方法1:使用 RxJava 的 throttleFirst()具体代码如下: /** * 防止重复点击 * * @param target 目标view * @param listener 监听器 */ public static void pr原创 2017-12-07 16:02:00 · 47986 阅读 · 10 评论 -
Android消息机制Message的target==null的黑科技
Android的消息机制,就是Handler、Lopper、Message、MessageQueue之间的运作机制。本文不打算介绍它们之间千丝万缕联系,不了解的同学可以参考 之前的博客。这里面有个很细节的问题,估计很多人没有注意到,那就是 Message 的 target == null的情况,这有什么特殊含义吗?与 target 不为 null 的区别在哪里呢?这篇文章的目的就是要揭开 Mes...原创 2019-08-10 02:11:54 · 2915 阅读 · 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 · 6072 阅读 · 0 评论 -
LeakCanary 内存泄露源码分析
写在前面本文分析的 LeakCanary 的源码版本为 v1.6.3 。现在最新的版本为 v2.0-alpha-2,已经全部用 Kotlin 重写了(网络库 okhttp 同样也用 Kotlin 重写了),这也从侧面反映了 Kotlin 是大势所趋。开始在 github 的官方指南链接中,我们可以看到,LeakCanary 检测程序内存泄露的入口是:LeakCanary.install(...原创 2019-05-28 19:01:41 · 932 阅读 · 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 · 534 阅读 · 0 评论 -
Android消息机制之HandlerThread
概述严格来说,HandlerThread 与Android 的异步消息机制关系不是太大,但毕竟 HandlerThread 里面包含了 Handler 以及 Looper,姑且放在这里吧。其实,HandlerThread 本质是一个线程,它继承自 Thread,内部使用了 Handler 和 Looper 来进行消息的分发、循环以及处理。示例这个例子中,展示了利用 HandlerThrea...原创 2019-02-22 22:39:11 · 1993 阅读 · 1 评论 -
Android消息机制之ThreadLocal浅析
概述ThreadLocal 不是 Thread,它是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,对数据存储后,只有在指定线程中才可以获取到存储的数据,对于其他线程来说则是无法获取到数据的。日常开发中用到 ThreadLocal 的场景不多,但是在 Android 系统中的 Looper、 ActivityThread、 AMS 等源码都用到了ThreadLocal。一般来说,当...原创 2019-02-21 18:49:03 · 502 阅读 · 0 评论 -
Android消息机制之 Looper 消息循环
哈哈原创 2019-02-28 13:05:26 · 1153 阅读 · 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 · 7285 阅读 · 6 评论 -
用 bat 批处理命令启动 Android Studio 自带模拟器
在 Android 动画中,缩放动画(scale)和旋转动画(rotate)均有 android:pivotX 和 android:pivotY 这两个属性,其值可以有多种形式,并不是很好理解。本文就用一个小 Demo 来展示这两个属性的含义,相信看了之后会有很直观的感受。android:pivotX 表示缩放/旋转起点 X 轴坐标,可以是整数值、百分数(或者小数)、百分数p 三种样式,比如 50、原创 2017-11-25 13:05:49 · 2945 阅读 · 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 · 4505 阅读 · 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 · 4948 阅读 · 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 · 9770 阅读 · 0 评论 -
Glide 图片加载
Glide 是 Google 员工的作品(github链接),它完全基于 Picasso ,沿袭了 Picasso 的简洁风格,但在其上做了大量优化与改进。两者区别如下:在内存占用方面, Glide 默认的 Bitmap 格式是 RGB_565 格式(一个像素占16位),而 Picasso 为ARGB_8888 格式(一个像素占32位),因此 Glide内存开销比Picasso 要小一半;在磁盘原创 2016-08-06 16:58:55 · 2670 阅读 · 2 评论 -
android 事件处理机制之 requestDisallowInterceptTouchEvent
当手指触摸到屏幕时,系统就会调用相应 View 的 onTouchEvent,并传入一系列的 action 。当有多个层级的 View 时,在父层级允许的情况下,这个 action 会一直向下传递直到遇到最深层的 View 。所以 touch 事件最先调用的是最底层 View 的 onTouchEent,如果 View 的 onTouchEvent 接收到某个 touch action 并作了相转载 2016-09-02 09:35:55 · 686 阅读 · 0 评论 -
View事件分发机制
最近准备面试,貌似好多都会问到View事件的分发机制这个问题。于是阅读习惯博文,并总结一下:View事件分发与三个方法有关:dispatchTouchEvent、onTouchEvent、setOnClickListener。 TOUCH事件有三个,分别为 DOWN、MOVE、UP,其中 MOVE 可能出现 0 次或多次。无论是 DOWN,MOVE,UP都会按照下面的顺序执行: dispat原创 2016-08-21 17:18:31 · 372 阅读 · 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 · 446 阅读 · 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 · 40322 阅读 · 2 评论 -
Android Drawable之level-list使用简介
在Android开发中,有时候需要对一个ImageView设置很多不同图片以表示某种应用状态,比如,典型的是手机的信号强度从强到弱有多种状态图;wifi有解锁和未解锁状态,解锁和未解锁状态的图标也是很多种。如果每次都一一的通过ImageView设置图片的src来达到这一目的,实在是太过于繁琐,且维护和管理起来不便。因此,引入ImageView的setImageLevel和level-list实现这一转载 2017-05-22 08:03:30 · 3436 阅读 · 0 评论 -
Android 屏幕适配相关知识
1、几个概念 (1)分辨率。分辨率就是手机屏幕的像素点数,一般描述成屏幕的“宽×高”,安卓手机屏幕常见的分辨率有480×800、720×1280、1080×1920等。720×1280表示此屏幕在宽度方向有720个像素,在高度方向有1280个像素。 (2)屏幕大小。屏幕大小是手机对角线的物理尺寸,以英寸(inch)为单位。比如某手机为“5寸屏手机”,就是指对角线的尺寸,5寸×2.54厘米/寸=1原创 2017-12-12 11:22:30 · 1628 阅读 · 0 评论 -
Android Studio中使用adb shell查看SharedPreferences文件
在 Android Studio 最下面的 Terminal 中,输入:adb shellrun-as com.example.android //com.example.android:对应项目包名 可以ls查看当前目录下的所有文件,然后找到 shared_prefs,cd进入该文件:cd shared_prefs再ls查看 shared_prefs 目录中所有的文件,并用cat查看具体的S原创 2017-08-30 09:44:18 · 11840 阅读 · 2 评论 -
Android 通过 shape 实现三角形气泡效果
需要实现 UI 给出的下面两种图中带三角形气泡的效果:如果使用 .9 图,一方面会增加安装包体积,另一方面,拉伸后可能变形。将气泡分解可知,气泡由 正/倒三角形 和 圆角长方形 组成,于是可以通过组合来形成三角形气泡的效果。参考 这篇博文 绘制三角形。正三角形的 triangle_up.xml 如下:<?xml version="1.0" encoding="utf-8"?><layer-list原创 2017-11-22 11:08:04 · 28631 阅读 · 4 评论 -
uiautomatorviewer出现Unable to connect to adb. Check if adb is installed correctly解决方法
启动测试工具uiautomatorviewer时,若出现Unable to connect to adb. Check if adb is installed correctly错误: 解决办法如下:打开uiautomatorviewer.bat,找到uiautomatorviewer.bat文件最后一行:call "%java_exe%" "-Djava.ext.dirs=%javaextdir原创 2017-03-29 20:25:23 · 22107 阅读 · 11 评论