您的位置:首页 > 其它

安卓开发之引入布局中自定义控件、OnDraw()绘图

2016-10-27 10:23 323 查看
引用布局:

<com.example.aa.Mapp
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
></com.example.aa.Mapp>


Mapp中代码

public class Mapp extends View 
{
private Paint paint;
private int mapp_height;
private int mapp_width;
private int x1,y1,x2,y2;

public Mapp(Context context,AttributeSet attrs)
{
super(context,attrs);

final DisplayMetrics dm = new DisplayMetrics();
((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm);
mapp_height = 250 * 3;
mapp_width = dm.widthPixels;

// 创建画笔
paint = new Paint();

x1 = (int)(mapp_width / 10);
y1 = (int)(mapp_height / 10);
x2 = mapp_width - (int)(mapp_width / 20);
y2 = mapp_height - (int)(mapp_height / 20);
}

@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
canvas.drawColor(Color.BLACK);

// 画笔颜色为灰色
paint.setColor(Color.GRAY);
// 宽度3个像素
paint.setStrokeWidth(3);
//字体大小自动适应(320分辨率用8号字体)
paint.setTextSize((int)(8*mapp_width/320));

canvas.drawLine(x1, y1, x2, y1, paint);
canvas.drawLine(x1, y1, x1, y2, paint);
canvas.drawLine(x1, y2, x2, y2, paint);
canvas.drawLine(x2, y1, x2, y2, paint);
}
}


刷新:

Mapp view = (Mapp)findViewById(R.id.map);

view.invalidate();

备注:layoutparams可以解决自定义控件占据屏幕区域的问题。

view.invalidate();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: