view的绘制

View的绘制流程

1、onMeasure测量(计算宽高)

2、ViewGroup进行onLayout(基于位置和宽高布置到屏幕)

3、onDraw视图显示自身内容(渲染)

Canvas

画布,可以提供视图显示的载体,可以绘制文本、几何图形、图像、填充颜色

Paint

画笔,针对画布需要绘制的内容的修饰

//创建画笔
paint = new Paint();
//设置画笔颜色
paint.setColor(0xff333333);

//设置样式,STROKE表示空心,FILL表示实心
paint.setStyle(Paint.Style.STROKE);
//空心可以设置边框宽度
paint.setStrokeWidth(2);
//消除锯齿
paint.setAntiAlias(true);
//画笔大小
paint.setTextSize(60);
//设置透明
paint.setAlpha(0x88);

paint.setTextScaleX(3);拉伸或者收缩文本
paint.setFakeBoldText(true); 加粗

使用画笔

protected void onDraw(Canvas canvas) {
    ...
    //画矩形
    canvas.drawRect(5,10,105,90,paint);
}
视图刷新

主线程中刷新:使用invalidate()

子线程刷新:mView.postInvalidate(); 相当于Handler+Thread

onTouchEvent

View中的onTouchEvent方法表示事件消耗的方法,如果需要对视图进行触摸的处理,则可以重写该方法

 @Override
public boolean onTouchEvent(MotionEvent event) {
    //获取触摸行为
    int action = event.getAction();
    int x = (int) event.getX();
    int y = (int) event.getY();
    switch (action){
        case MotionEvent.ACTION_DOWN:
            Log.e("m_tag","action down:"+x+" "+y);
            break;
        case MotionEvent.ACTION_MOVE:
            //触控点在View上的过程
            Log.e("m_tag","action move:"+x+" "+y);
            break;
        case MotionEvent.ACTION_UP:
            Log.e("m_tag","action up:"+x+" "+y);
            break;
    }
    return true;
}
Activity设置全屏
可以在<activity>标签上使用fullscreen主题,如
android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"

也可以在java中布局之前使用

 //隐藏标题栏,普通Activity直接用RequestWindowFeature方法
 supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
    //隐藏状态栏
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
获取屏幕宽高
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Point sreenPoint = new Point();
wm.getDefaultDisplay().getSize(sreenPoint);
Log.e("m_tag", "屏幕宽度:" + sreenPoint.x + " 高度:" + sreenPoint.y);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值