首页 > 编程知识 正文

android:layout_gravity,gradient公式

时间:2023-05-03 16:44:19 阅读:110447 作者:4546

这些代码和线性梯度: 和其他所有例子都很相似。

publicclasscustomcolourbarextendsview

{

publiccustomcolourbar (上下文上下文,AttributeSet attribs ) )。

{

super(context,attribs );

}

@Override

protectedvoidonmeasure (intwidthmeasurespec,int heightMeasureSpec ) )。

{

setmeasureddimension(170、40;

}

@Override

protectedsynchronizedvoidondraw (canvas canvas ) )。

{

int height=this.getmeasuredheight (;

int width=this.getMeasuredWidth (;

lineargradientshader=newlineargradient (

0,0,0,height,

Color.RED,Color.YELLOW,

Shader.TileMode.CLAMP;

Paint paint=new Paint (;

paint.setshader(shader );

rectffgrect=newrectf (0,0,width,height );

canvas.DrawRoundrect(fgrect、7f、7f、paint );

}

}

在布局中,这将导致: 这几乎是正确的。

但是,如果其他事情改变了我视点的y位置,那就错了:

线性梯度使用相对于顶级视图或对话框的绝对位置。 为了我的生活,我不能理解。 为什么?

谢谢你!

解决方法:

有同样的问题。 着色器中的位置是画布相对的,而不是形状。

因此,必须始终在画布上围绕原点绘制形状,并将画布转换为所需的位置。

例如:

不:

Canvas.DrawCircle(POSX,posy,radius );

做:

canvas.save (;

canvas.translate(POSX,posy );

canvas.draw circle (0,0,radius );

canvas.restore (;

我希望它有用!

标签: android,layout,gradient

资料来源: https://codeday.me/bug/2019 07 26/1543932.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。