我需要以边界来表示进步.例如,最初视图根本没有任何边框,当达到50%的进度时,只有50%的视图将获得边框.找到附加的图像.我做了很多谷歌搜索,但没有运气.我使用的视图是textview.
编辑
以下代码切割位图的边缘.我在这段代码中所做的是 - 1. Bg设置为Black Hexagon 2.我采用了空心的绿色边框六边形并露出这个空心六边形,这样看起来边框会越来越累积.
public class MyView extends View { private Bitmap mBitmap; private Paint mPaint; private RectF mOval; private float mAngle = 135; private Paint mTextPaint; private Bitmap bgBitmap; public MyView(Context context) { super(context); doInit(); } /** * @param context * @param attrs * @param defStyleAttr */ public MyView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); // TODO Auto-generated constructor stub doInit(); } /** * @param context * @param attrs */ public MyView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub doInit(); } private void doInit() { // use your bitmap insted of R.drawable.ic_launcher mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.hexagon_border); bgBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.view_message_small_hexagon); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mOval = new RectF(); mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mTextPaint.setTextSize(48); mTextPaint.setTextAlign(Align.CENTER); mTextPaint.setColor(0xffffaa00); mTextPaint.setTypeface(Typeface.DEFAULT_BOLD); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { Matrix m = new Matrix(); RectF src = new RectF(0, 0, mBitmap.getWidth(), mBitmap.getHeight()); RectF dst = new RectF(0, 0, w, h); m.setRectToRect(src, dst, ScaleToFit.CENTER); Shader shader = new BitmapShader(mBitmap, TileMode.CLAMP, TileMode.CLAMP); shader.setLocalMatrix(m); mPaint.setShader(shader); m.mapRect(mOval, src); } @Override protected void onDraw(Canvas canvas) { //canvas.drawColor(0xff0000aa); Matrix matrix = new Matrix(); canvas.drawBitmap(bgBitmap, matrix, null); canvas.drawArc(mOval, -90, mAngle, true, mPaint); } @Override public boolean onTouchEvent(MotionEvent event) { float w2 = getWidth() / 2f; float h2 = getHeight() / 2f; mAngle = (float) Math.toDegrees(Math.atan2(event.getY() - h2, event.getX() - w2)); mAngle += 90 + 360; mAngle %= 360; invalidate(); return true; }
}