View相关知识
理论结合实战
跑快点
不断地巩固自己,努力走好每一步。
展开
-
属性动画的基本使用
Android中动画大概可以分为补间动画,帧动画,属性动画三种(一)补间动画Animation分以下4种:1.TranslateAnimation 平移动画 x,y方向上的平移 对应xml标签 2.ScaleAnimation 缩放动画 x,y方向上的缩放 对应xml标签3.RotateAnimation 旋转动画 对应xml标签4.AlphaAnimation ...原创 2020-02-22 22:25:59 · 454 阅读 · 0 评论 -
事件分发机制分析
从源码中分析Android的事件分发机制,看懂了源码就知道了整个事件分发机制的流程,看事件分发机制之前我们要知道几个相关事件处理的方法,Android主要就是通过这几个方法对事件进行分发拦截处理的:(一)dispatchTouchEvent(MotionEvent ev) 该方法用于事件分发(二)onInterceptTouchEvent(MotionEvent ev) 该方法可拦截事件Vi...原创 2020-02-16 19:43:10 · 289 阅读 · 0 评论 -
SVG相关知识与应用
SVG,即Scalable Vector Graphics 可伸缩矢量图形,这种图像格式在前端中已经使用的非常广泛了。首先要解释下什么是矢量图像,什么是位图图像?1、矢量图像:SVG是W3C 推出的一种开放标准的文本式矢量图形描述语言,他是基于XML的、专门为网络而设计的图像格式,SVG是一种采用XML来描述二维图形的语言,所以它可以直接打开xml文件来修改和编辑。2、位图图像:位图图像的存...原创 2020-02-13 22:09:57 · 1142 阅读 · 0 评论 -
Canvas的应用实例
(一)实现水平滑动相册中间被选择的部分图片高亮显示效果实现原理:1.需要两组图片,一组为高亮显示图,一组为对应的暗色显示图2.水平滑动这里使用了HorizontalScrollView3.显示图片的控件为LinearLayout中动态添加ImageView4.通过ImageView的setImageDrawable来给控件设置显示图片5.这里主要使用了自定义Drawable类,并对图...原创 2020-02-09 23:48:24 · 1159 阅读 · 0 评论 -
Canvas的基本使用
(一)Canvas上的图形绘制RectF mArcRect=new RectF(0,0,300,300);1.绘制画布带透明度的颜色值canvas.drawARGB(255,255,0,0);canvas.drawColor(Color.RED);2.绘制矩形canvas.drawRect(mArcRect,mPaint);canvas.drawRoundRect(mArcRect,...原创 2020-02-05 13:45:27 · 1225 阅读 · 0 评论 -
android中图片滤镜效果
对图像进行一定的过滤处理,颜色值时32位的int值,ARGB :A—Alpha值,RGB—颜色值1、Alpha滤镜处理MaskFilter类进行处理BlurMaskFilter–用来绘制模糊阴影EmbossMaskFilter – 用来实现浮雕效果2、颜色RGB的滤镜处理1、色彩的平移运算—加法运算在最后一列加上某个值,这样就可以增加特定色彩的饱和度色彩的反转/反相;增加饱和度2...原创 2019-04-20 22:49:44 · 1856 阅读 · 0 评论 -
android中Xfermode的使用
通过使用Xfermode将绘制的图形的像素和Canvas上对应位置的像素按照一定的规则进行混合,形成新的像素,再更新到Canvas中形成最终的图形。我们一个像素的颜色都是由四个分量组成,即ARGB,A表示的是我们Alpha值,RGB表示的是颜色S表示的是源像素,源像素的值表示[Sa,Sc] Sa表示的就是源像素的Alpha值,Sc表示源像素的颜色值D表示的是目标像素,目标像素的值表示[Da,...原创 2019-04-20 22:09:20 · 2285 阅读 · 0 评论 -
Android shader相关用法实例
Shader —着色器,Canvas的drawXXXX这个方法是画具体的形状,画笔的shader定义的就是图形的着色和外观(一)BitmapShader–位图图像渲染,用BitMap对绘制的图形进行渲染着色,简单来说是用图片对图形进行贴图 例如:圆形头像,放大镜效果(二)LinearGradient 线性渲染 例如:霓虹灯文字,倒影图片(三)SweepGradient 渐变渲染/梯度...原创 2019-04-20 20:07:22 · 230 阅读 · 0 评论 -
Scrollview嵌套Listview显示一行问题解析
从源码的角度分析Scrollview嵌套Listview显示一行问题,主要关注ScrollView和ListView的Measure过程,ScrollView的OnMeasure()方法@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { **//这里调用了父类的on...原创 2019-03-10 16:02:02 · 381 阅读 · 0 评论 -
从setContentView开始,了解view的加载过程
从setContentView(R.layout.activity_main);为入口分析View的UI绘制过程public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(save...原创 2019-03-09 13:32:44 · 182 阅读 · 0 评论 -
雷达扫描效果SweepGradient的使用
实现效果如图: 实现原理: 原理很简单主要通过SweepGradient对圆进行扫描渐变效果,注意渐变颜色要从不透明到透明,通过不断旋转画布来实现扫描效果,注意这里画布原点在(0,0)点需要将其平移到控件的中心位置,不然会以(0,0)这个点进行旋转 代码如下:public class RadarScanView extends View { private static final原创 2017-05-31 16:42:09 · 2478 阅读 · 0 评论 -
自定义AttributeSet属性
在做项目的时候,用没人写的代码和看Android源码时,经常看attr.xml的使用,每次都不知道是什么意思,今天网上查了些资料,终于明白了,这里做一个笔记,方便以后使用这里与一个关于AttributeSet的应用场景:一个自定义控件的有些属性内容是随着外部条件而动态改变的,for example:一个自定义的ListView控件,需要在底部添加一个View,而这个View在不同的模块使用原创 2015-09-12 20:28:51 · 4213 阅读 · 0 评论 -
初步学习自定义view
在现实世界中,我们画画需要两样东西:笔(或者任何能涂画的东西)和纸(或者任何能被画的东西),同样地,Android也给我们提供了这两样东西:Paint和Canvas,一个是画笔而另一个呢当然是画布啦~~,我们可以看到在onDraw方法中,画布Canvas作为签名被传递进来,也就是说这个画布是Android为我们准备好的,不需要你去管,当然你也可以自定义一张画布在上面绘制自己的东西并将其传递给父类,原创 2015-09-23 10:11:39 · 460 阅读 · 0 评论 -
自定义瀑布流控件WaterfallFlowLayout
效果如下图所示: 实现效果:每个子项的宽度相同高度可能不同的布局 实现思路: 1.由于项宽度相同,则高度需要根据图片比例进行计算得出 2.用一个数组来存储每一列的总高度,将子控件添加到总高度最小的那一列的后面 3.通过onMeasure()方法计算出控件的高度,控件的高度为所有列高中最大的值,并自定义LayoutParams类,将子控件的left,top,right,bottom封装到原创 2017-05-26 17:10:11 · 1428 阅读 · 0 评论 -
自定义流式布局FlowLayout
应用截图 实现思路: 1.继承自ViewGroup 2.重写onMeasure()方法,根据测量模式测量出控件的宽度和高度(其中包含了子控件的margin值),通过setMeasuredDimension(newWidthSize, newHeightSize);设置控件的宽高 3.实现onLayout()方法,对它的每一个子View进行布局设置,规则为从左到右依次排列,该行放不下原创 2017-05-26 10:07:59 · 313 阅读 · 0 评论 -
自定义圆形进度条
实现效果 实现思路: 1.绘制背景圆形 2.绘制中间文字进度,需要计算文字绘制的起点,保证文字在控件的中心,这里用到了measureText()方法对文字宽度进行测量,文字绘制是从基线开始绘制,所以要通过FontMetrics来计算文字文字y坐标上的位置才能放在中间显示(具体计算参考代码) 3.绘制进度圆弧, 圆弧起点角度固定,通过显示进度值动态改变圆弧的结束角度来绘制圆弧一.自定义Vi原创 2017-05-27 16:19:28 · 537 阅读 · 0 评论 -
Paint基本用法
Paint 基本使用 1.1 负责设置获取图形绘制、路径相关的 1.setStyle(Paint.Style style) 设置画笔样式,取值有 Paint.Style.FILL :填充内部 Paint.Style.FILL_AND_STROKE :填充内部和描边 Paint.Style.STROKE :仅描边、 注意STROKE、FILL_OR_STROKE与FILL模式下外轮廓的位置会扩原创 2017-05-26 17:48:37 · 1702 阅读 · 0 评论