Java 如何在android中绘制包含文本的多边形
我需要画这样的视图,里面有文本。 图形的文字和颜色必须是可变的。Java 如何在android中绘制包含文本的多边形,java,android,xml,android-drawable,Java,Android,Xml,Android Drawable,我需要画这样的视图,里面有文本。 图形的文字和颜色必须是可变的。 最好的方法是什么 一旦您想要绘制动态图形,您就进入了手工绘制领域,或者使用一些第三方库,这些库将为您简单地完成这项工作 幸运的是,自己做这件事很简单。可以使用Canvas对象绘制多边形,如本例所示,可以从以下位置绘制: 有两种方法可以将您的Canvas附加到屏幕上显示的某个UI对象,主要的方法在文档页面中描述,例如 渲染到位图,然后添加到例如图像视图 扩展UI小部件,例如视图,并在onDraw方法中更新它 要更改多边形,只需将线条
最好的方法是什么 一旦您想要绘制动态图形,您就进入了手工绘制领域,或者使用一些第三方库,这些库将为您简单地完成这项工作 幸运的是,自己做这件事很简单。可以使用
Canvas
对象绘制多边形,如本例所示,可以从以下位置绘制:
有两种方法可以将您的Canvas
附加到屏幕上显示的某个UI对象,主要的方法在文档页面中描述,例如
位图
,然后添加到例如图像视图
视图
,并在onDraw
方法中更新它线条中的x和y点更改为上面的方法以及绘制中的颜色即可。如果需要,请确保进行更新。如果选择方法1,则可能需要手动重新渲染为位图
,如果选择方法2,则需要在视图上调用无效
对于要显示在多边形内部的文本,也可以使用drawText方法在画布上绘制,或者在布局XML中的视图
上方放置一个文本视图
。如果您希望文本严格位于多边形内部,显然必须进行一些放置计算,可能还需要断线和截断
另请参见手册页。您可以使用如下三角形图像来实现:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF2323"
android:drawableLeft="@drawable/triangle"
android:gravity="center"
android:paddingRight="10dp"
android:text="In Process"
android:textColor="@android:color/white" />
textView.setCompoundDrawablesWithIntrinsicBounds(new BitmapDrawable(getResources(), getResizedBitmap(this, R.drawable.triangle, 64, 64)), null, null, null);
换成最适合你的
下面是调整大小的方法:
public static Bitmap getResizedBitmap(Context activity,int imgid,int width,int height) {
Bitmap bMap = BitmapFactory.decodeResource(activity.getResources(),imgid);
Bitmap bMapScaled = Bitmap.createScaledBitmap(bMap, width,height, true);
return bMapScaled;
}
它只是一个9补丁,用作TextView的背景。要更改颜色,请参见以下答案:
public static Bitmap getResizedBitmap(Context activity,int imgid,int width,int height) {
Bitmap bMap = BitmapFactory.decodeResource(activity.getResources(),imgid);
Bitmap bMapScaled = Bitmap.createScaledBitmap(bMap, width,height, true);
return bMapScaled;
}