从绘制圆弧思考定位


如下图所示,我想在屏幕的在150*150的小矩形中间画一个画弧。开始的时候我会去考虑
150*150的居中显示的圆心怎么拿到啊?是不是要根据手机尺寸来计算?半径也要自己去指

定。按这个计算来说,圆心坐标为(160,240),半径为75,但我见到的代码让我对这个想法
产生的怀疑。

下面的自定义View代码中getWidth()=225,getHeight=225,我开始很奇怪,getWidth和
getHeight()得到的不是手机的尺寸吗?怎么会是这么个奇怪的值啊?宽高一样的!!
后来我猜想,因为在xml配置文件中我设置的View为150*150dip,(对于HVGA)转化成像素
就是225pix。也就是150dip=225pix-->1dip=1.5pix。
接着又有奇怪的事情:
RadialGradient rg = new RadialGradient( x, y, y, Color.argb(255, 255, 0,

0),Color.argb(255, 0, 255, 0), TileMode.CLAMP);//渐变
上面代码表明x = 1/2getWidth() == 112.5,y=1/2getHeigth()=112.5就是我们的圆心。
这与我们当时算的(160,240)是圆心不相符啊。另外,半径竟然和x,y相等。也就是说只
有这包含这个圆的矩形是从(0,0)-->(a,a)的才有可能圆心坐标值和半径值相等。

为什么这么奇怪的设坐标设置却能画出我要的东西呢?我的理解是,对于自定义View来
说,如果在xml中指定了它的尺寸和位置。那么在View内部它的坐标轴不再是整个手机屏幕
了,而是给指定的那块区域。比如上面的例子:
给自定义View在手机的某个区域分配了一个150dip*150dip(225pix*225pix)的区域,然后
在自定义View内部,这个区域就是它的全部。getWidth就是225,里面的内切圆圆心也就为
(getWidth()/2,getHeight()/2),内切圆的半径也就为getWidth()或getHeight()。这样的
相对坐标使我们定位更容易一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值