该篇文章记录本人学习和使用Android过程中的关于View的各种我所不熟悉但是很有用的Api
1. android:clipToPadding
常用于RecyclerView中,默认为true,用途是设置是否要让该view的父布局去裁剪掉该view的paddinng值,
效果就是,假若RecyclerView的xml中设置了android:paddingTop = "10dp",
这时假若设置 clipToPadding为ture,即裁剪掉padding值,那么和我们日常观察的一样,就是仍然有边距进行滑动;
这时假若设置clipToPadding为 false ,那么之前空白的padding会顶上去的,往下拉padding又会呈现了
这个之后解决RecyclerView的滑动时效果还是很不错的
2. canvas,clipRect(left,top,right,bottom)
该Api用于View中的canvas绘制,该api用来表示裁剪画布的可见区域,也就是说后面画的内容只在这款区域进行显示。
作用说的很明显了,要想更加了解可以浏览这位博主的 android绘图canvas.clipRect()方法的作用
可视区域的显示还是显得尤为重要的。
3. canvas.save( ) 额 canvas.restore( )
- canvas.save( ):用来保存Canvas的状态
- canvas.restore( ):用来恢复Canvas旋转、缩放等之后的状态,当和canvas.save( )一起使用时,恢复到canvas.save( )保存时的状态。
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStrokeWidth(5);
paint.setStyle(Paint.Style.FILL);
paint.setAntiAlias(true);
canvas.rotate(90f,canvas.getWidth()/2,canvas.getHeight()/2);// 由于逆时针旋转画布,所以看见的是竖直的
canvas.drawLine(50,300,400,300,paint);
canvas.save();
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStrokeWidth(5);
paint.setStyle(Paint.Style.FILL);
paint.setAntiAlias(true);
// 以画布的中心点旋转
canvas.rotate(90f,canvas.getWidth()/2,canvas.getHeight()/2);
// 恢复画布的状态 即还原到save()的状态,即为画布为竖直
canvas.restore();
// 横向的一条线
canvas.drawLine(50,300,400,300,paint);
view.getLayoutParams 返回的类型是该View的父布局的类型.params , 可以根据返回的params来获得该view的margin信息, 信息包本身就是子控件向父布局申请控件大小的,包括宽高包括各种margin等。