答案 0 :(得分:0)
一旦你想要绘制动态图形,你就可以进入手绘领域了,或者使用一些第三方图书馆来完成这项工作。
幸运的是,自己做的很顺利。您可以使用Canvas
对象绘制多边形,如本示例中的this SO post:
Paint wallpaint = new Paint();
wallpaint.setColor(Color.GRAY);
wallpaint.setStyle(Style.FILL);
Path wallpath = new Path();
wallpath.reset(); // only needed when reusing this path for a new build
wallpath.moveTo(x[0], y[0]); // used for first point
wallpath.lineTo(x[1], y[1]);
wallpath.lineTo(x[2], y[2]);
wallpath.lineTo(x[3], y[3]);
wallpath.lineTo(x[0], y[0]); // there is a setLastPoint action but i found it not to work as expected
canvas.drawPath(wallpath, wallpaint);
有几种方法可以将Canvas
附加到某个UI对象上,该对象将显示在屏幕上,主要是在文档Canvas and Drawables页面中描述的,例如
Bitmap
,然后添加到ImageView
View
,并使用onDraw
方法更新要更改多边形,只需更改上方lineTo
方法中的x和y点以及Paint
中的颜色即可。如果您需要,请务必更新,如果您选择方法1,则可能需要手动重新渲染为Bitmap
,如果您选择方法2,则可能需要invalidate
上的View
。
要使文字显示在多边形内部,您也可以使用drawText方法在Canvas
上绘图,或者在TextView
上方放置View
布局XML。如果您希望文本严格位于多边形内部,您显然必须对放置以及可能的换行和截断进行一些计算。
另请参阅Custom Drawing手册页。
答案 1 :(得分:0)
你可以使用这样的三角形图像来实现它:
<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);
将64改为最适合你的。
这是调整大小的方法:
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;
}
答案 2 :(得分:0)
创建选择器并在textview的背景中绘制
<!-- Colored rectangle-->
<item>
<shape android:shape="rectangle">
<size
android:width="100dp"
android:height="40dp" />
<solid android:color="#FF0000" />
</shape>
</item>
<!-- This rectangle for the left side -->
<!-- Its color should be the same as layout's background -->
<item
android:right="100dp"
android:left="-100dp"
android:top="-100dp"
android:bottom="-100dp">
<rotate
android:fromDegrees="-45">
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
</shape>
</rotate>
</item>
<!-- This rectangle for the right side -->
<!-- Their color should be the same as layout's background -->
<item
android:right="100dp"
android:left="100dp"
android:top="-100dp"
android:bottom="-100dp">
<rotate
android:fromDegrees="45">
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
</shape>
</rotate>
</item>