Ich muss Fortschritt durch den Rand der Ansicht bezeichnen. Zum Beispiel Die anfängliche Ansicht hat überhaupt keinen Rahmen, wenn 50% Fortschritt erreicht wird, erhalten nur 50% der Ansicht einen Rahmen. Findet das angehängte Bild. Ich googelte viel, aber kein Glück. Die Ansicht, die ich verwendete, ist textview.Bezeichne Fortschritt durch Grenze Android
Edited
Der folgende Code, schneidet die Kanten der Bitmap. Was ich in diesem Code getan habe, ist - 1. Bg ist auf Schwarz Hexagon 2. Und ich habe hohlen grün umrandeten Sechseck & Enthüllung dieser hohlen Sechseck, so dass es aussehen wird wie Grenze wird angesammelt.
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;
}
}
siehe meine Antwort hier http://stackoverflow.com/questions/19710613/how-do-i-draw-a-partial-bitmap-arc-like-a-circular-progress-wheel-but-with-ab – pskink
Ich habe Ihren Code durchgesehen, aber nicht verstanden, welche Änderungen vorgenommen werden sollten, damit er wie erwartet funktioniert. –
Denken Sie für eine Weile, jetzt haben Sie eine Lösung, wie man ein Bitmao auf eine radiale Weise schneidet, was als nächstes? – pskink