View系列
文章平均质量分 79
任缥缈
天狼啸月的追逐
展开
-
通过xml画圆弧,再也不用求UIP图了
直接上代码,怼UI:<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><!-- 左右负边距,就是一条直线, 然后高度高出布局的一半, 左右负责yuan弧度大小 top控制举例控件底部举例--> <item android:left="-150dp" android:right="-150d原创 2020-09-17 17:42:43 · 575 阅读 · 0 评论 -
从源码角度理解Activity 与 Window、PhoneWindow、DecorView 四者之间的关系
从Activity的源码分析,我们得知,每个activity都持有一个Window对象:public class Activity extends ContextThemeWrapper{ @UnsupportedAppUsage private Window mWindow;}但是Window是一个抽象类,他只有唯一的实现类PhoneWindow,本质上来讲,activity持有的W...原创 2019-11-09 20:47:43 · 504 阅读 · 1 评论 -
Android开发中更新UI的几种常用方式
Android开发中,我们经常会头疼UI更新的问题,尤其是跨线程更新UI。今天我们就来聊一聊具体有哪些能够可靠更新UI的的方式: 1、EventBus更新UI; 2、RunOnUiThread更新UI; 3、Handller; 4、runOnUiThread + EventBus更新UI; 5、runOnUiThread + Interface接口; 6、子线程 + runOnUiThr原创 2017-10-31 18:08:46 · 1783 阅读 · 0 评论 -
自定义TextView任意长度文本下自动改变文字大小以完全显示
前段时间开发了一个新的需求,其中一个列表下有几个文本,根据UI的设计设置了文本大小,开发完成后,在测试中文本显示也没发现异常,后来随着业务的增加,发现部分文本的内容很长,在低分辨率的手机上没法完全显示,而IOS端则没有发现这个问题,一交流,IOS说是他们那边的文本显示能实现自动缩放大小以完全显示。现在琢磨着通过自定义的方式实现文本自动缩放大小以完全显示并充满的功能。大致思路是:自定义TextView原创 2017-10-31 17:04:59 · 1133 阅读 · 0 评论 -
为什么不能在子线程中更新UI
首先声明一点:子线程里面是可以更新UI的——创建一个空白的Activity,在其xml文件中放一个空白TextView,Java代码如下:@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layou...原创 2018-03-01 16:17:39 · 8789 阅读 · 5 评论 -
从源码角度分析View的工作原理
一、几个重要的概念:1、MeasureSpec概述: 作用上简单地说就是测量View的Width/Height尺寸。一个子View的Width/Height尺寸同事受自身尺寸参数LayoutParams和父View尺寸的影响。测量过程中系统会将View的LayoutParams根据父View的MeasureSpec参数情况转换成自身的MeasureSpec,然后再根据自身的MeasureSp...原创 2018-02-26 23:14:22 · 418 阅读 · 0 评论 -
一图详解Android View的事件分发机制
转载请注明出处:http://blog.csdn.net/haoyuegongzi/article/details/78344600研究了许久的Android View点击事件的分发机制,到今天稍微有了一点头绪,写此博文,小作总结。 本文参考了郭霖的 Android事件分发机制完全解析,带你从源码的角度彻底理解(上): http://blog.csdn.net/guolin_blog/a原创 2017-10-25 18:17:38 · 688 阅读 · 0 评论 -
ViewPager+TimerTask实现Gallery画廊效果
先来一张效果图 前期要做一个画廊的轮播效果,当时参考网上的一些思路,通过Gallery实现了,但Gallery作为一个已经过时的控价,现在还在用的话,感觉有点out,跟不上技术的发展,跟不上大神大佬们速度,于是乎琢磨着怎么通过ViewPager来实现。通过查阅一些资料和反复调试,终于实现了,具体实现如下:<RelativeLayoutxmlns:android="http://schemas.a原创 2017-10-27 15:57:54 · 351 阅读 · 4 评论 -
ImageView按照比例裁剪缩放图片,保持图片不变形失真
图片裁剪加载真的头疼,搞不好就是加载不满imageview,要么就是图片变形失真了。反正是很难满足要求。如果要求不是特别高,我们可以通过ImageView的scaleType属性来控制图片加载裁剪缩放的效果;当我们的ImageView有最大宽度最大高度的时候,还可以配合adjustViewBounds属性来控制。好了现在我们不多废话,分两组来检验scaleType属性变化带来的加载效果;一是...原创 2019-08-02 15:56:19 · 3953 阅读 · 0 评论 -
带计时功能的线程安全的TextView
开发中,我们通常会用到倒计时功能,其实要实现倒计时功能很简单,方案也很多。但通常倒计时会和View刷新联动起来。为了方便使用,这里我封装了一个带计时功能的线程安全的TextView。很简单。代码如下:public class TimerTextView extends AppCompatTextView { boolean startTime = false; Context c...原创 2018-12-18 23:39:01 · 184 阅读 · 0 评论 -
不用自定义View,CardView实现圆角、原型、阴影等高级功能
CardView是google在5.0中提供带圆角和阴影的布局,继承自FrameLayout。常用属性解说:android:cardBackgroundColor :设置CardView的背景颜色,这个很好理解app:cardCornerRadius:设置CardView四周的圆角大小app:cardElevation:设置阴影尺寸app:cardMaxElevation:设置阴影的最大...原创 2018-11-15 14:52:23 · 915 阅读 · 0 评论 -
不用自定义,ImageView实现圆角的两种方式
不多废话,直切主题。方案一、利用CardView嵌套ImageView实现圆角。具体实现方式见文章《CardView的使用》方案二、利用Glide的RequestOptions.bitmapTransform来实现,很简单,具体如下:RoundedCorners corners = new RoundedCorners(50);RequestOptions roundedOptions =...原创 2018-11-15 15:31:32 · 333 阅读 · 0 评论 -
Android App页面滑动标题栏颜色渐变
通常,我们会被要求实现类似支付宝首页的特效:随着界面的滑动,标题栏的背景透明度渐变。在实际开发中,常见的滑动有列表RecyclerView(ListView)滑动,NestedScrollView(ScrollView)嵌套滑动等等。本文主要从上述两方面来探讨滑动效果。一、RecyclerView滑动标题栏渐变废话不多说,直接撸代码:布局文件如下:&lt;LinearLayout xm...原创 2018-12-17 21:56:15 · 1826 阅读 · 0 评论 -
给TextView设置行间距、行高,以及字间距
通常我们在给TextView设置字符串的时候,多行文本显示时总感觉文字太过密集,不美观,我们很希望TextView能够像Word文档那样能够设置行间距,字间距等;其实Android的TextView也是具有这样的功能的,下面我们来看看:一、原代码及效果图如下布局代码:效果图:二、行间距属性lineSpacingExtra:表示额外的行间距数值,单位通常为dp,值可以为负数,小数和0。...原创 2018-12-18 00:10:00 · 4714 阅读 · 0 评论 -
对《View的工作原理》一文的补充一
随着工作经验的丰富,接触源码的增多,发现原本所写的博文有很多遗漏的地方,比如现在,这篇博文对《View的工作原理》的补充一样。主要是涉及到自定义ViewGroup类型的View的时候对Margin参数的梳理。具体如下:自定义ViewGroup类型的View的时候对Margin参数的处理主要涉及到一个方法generateLayoutParams()和一个类MarginLayoutParams;...原创 2019-10-20 17:28:53 · 221 阅读 · 0 评论 -
约束布局ConstraintLayout笔记
下面8个属性中,constraint后面的Left、Right、Top、Bottom是指View自己的左边还是右边,是上面还是下面;to后面的Left、Right、Top、Bottom是指目标View的左边还是右边,是上面还是下面;可以这样理解:当前布局的View A的上/下/左/右边是在目标参照物View B的上/下/左/右边layout_constraintLeft_toLeftOf:目标...原创 2020-03-15 16:37:22 · 887 阅读 · 0 评论 -
View的状态是如何保存的
BaseSavedState是View的一个内部静态类,他实现了Parcelable接口,会把控件的属性(如selStart)序列化到Parcelable容器,这个内部类在View的onSaveInstanceState()方法里面以及onRestoreInstanceState(()方法里面都会被创建一个局部变量并保存数据。然后Activity的onSaveInstanceState、onRes...原创 2020-04-28 10:53:44 · 1128 阅读 · 0 评论 -
View的绘制流程概要
1、View的绘制流程是从ViewRootImpl.java的requestLayout()方法开始的,而ViewRootImpl.java的对象是在WindowManagerGlobals.java的addView()方法里面创建的,与之同时创建的还有Window.java的实现类PhoneWindow.java的对象,并将DecorView添加到PhoneWindow里面去,而且我们从源码角度...原创 2020-04-28 16:08:36 · 152 阅读 · 0 评论