Android RectF类的inset()方法

最近在研究 MPAndroidChart 的源码,我去年接触到这份开源代码,刚看的时候真是和看天书一样。不久前我想自己写图表的自定义控件,发现自己真的难以写出扩展性好、灵活性高的自定义控件。于是想起来自己曾经看过的 MPAndroidChart 的代码,再把它拿出来研究研究。

研究的过程中,我发现里面有一些方法在百度上搜索不到相关的帖子,想到以后有新手玩家想搜索这个方法却搜不到是多么沮丧,于是就到Google官方文档看了这个方法,用中文写了出来,同时也鼓励新手玩家慢慢养成看官方文档的习惯。

研究源码是一件困难的事情。著名的源码的产生的流程一般是这样的:一个高手(或者是一个团队)花了好长一段时间来写代码,优化代码,进行了多次的反馈然后进行迭代升级。想扫几遍就读懂它是不可能的。我们看源码就要有读经典书籍的心态:一次看不懂,就多看几次,看了一个月看不懂,就多看几个月,不会的知识点就把它补上。读源码可能一时之间看不到有什么用,可能读再久也看不到有什么用。但读源码应该能让我们更接近成为一个真正的程序员,而不是一个只会使用开源框架、只会复制粘贴的码农吧。

前面只是一些胡思乱想的东西,下面进入正题。
先上个效果图。

效果图

红色矩形那一块区域是我自己写的一个自定义 View,在里面画了一个矩形。

关于RectF的inset()方法。官方文档如下:

官方源码截图

大概意思就是:通过(dx,dy)插入矩形。如果 dx 是正的,则两边向内移动,使矩形变窄。如果 dx 是负的,则两边向外移动,使矩形更宽。这同样适用于 dy 和顶部和底部。

实现效果图的关键代码如下:

关键代码

附上源码
上传限制最少的积分是2分,这是要搞什么鬼啊。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Android 背景图: ```java import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.RectF; import android.util.AttributeSet; import android.view.View; public class BackgroundImageView extends View { private Bitmap mBackgroundBitmap; private Matrix mMatrix; public BackgroundImageView(Context context) { this(context, null); } public BackgroundImageView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public BackgroundImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } private void init() { // 加载背景图片 mBackgroundBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.background_image); // 初始化矩阵 mMatrix = new Matrix(); mMatrix.setScale(1, 1); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (mBackgroundBitmap == null) { return; } // 设置矩阵的尺寸 RectF rectF = new RectF(0, 0, getWidth(), getHeight()); mMatrix.setRectToRect(new RectF(0, 0, mBackgroundBitmap.getWidth(), mBackgroundBitmap.getHeight()), rectF, Matrix.ScaleToFit.CENTER); // 绘制背景图片 canvas.drawBitmap(mBackgroundBitmap, mMatrix, null); } } ``` 这个继承自 View ,重写了 onDraw 方法,在该方法内部绘制了背景图片。在 init 方法中加载了背景图片,并初始化矩阵用于缩放背景图片。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值