用边框Android表示进度

 秘色瓷2502891691 发布于 2023-02-03 10:40

我需要以边界来表示进步.例如,最初视图根本没有任何边框,当达到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;
}

}

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有