当前位置:   article > 正文

android 画布 轨迹,Android 多点触控,绘制滑动轨迹和十字光标

安卓触摸画点工具

这个测试项,要捕捉当前有几个触摸点,当前触摸点坐标,滑动事件在x轴、y轴方向的速度等信息,在触摸时跟随触摸点会出现十字光标,绘制出滑动轨迹。

首先绘制出暗色格子背景,采用了自定义View,较为简单,核心代码如下:

Paint paint; //画笔

private int mWidth;

private int mHeight;

public Check(Context context, AttributeSet attrs) {

super(context, attrs);

paint = new Paint();

paint.setColor(getResources().getColor(R.color.deepGray));//设置画笔颜色

paint.setStrokeJoin(Paint.Join.ROUND);//设置画笔图形接触时笔迹的形状

paint.setStrokeCap(Paint.Cap.ROUND);//设置画笔离开画板时笔迹的形状

paint.setStrokeWidth(1); //设置画笔的宽度

}

/**

* 这个方法可以获得控件的宽高

* @param canvas

*/

@Override

protected void onSizeChanged(int w, int h, int oldw, int oldh) {

mWidth = w;

mHeight = h;

}

/**

* 绘制网格线

* @param canvas

*/

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

canvas.drawColor(Color.BLACK);

int lineStart = 80;

int space = lineStart; //长宽间隔

int vertz = lineStart;

int hortz = lineStart;

for (int i = 0; i < 100; i++) {

canvas.drawLine(0, vertz, mWidth, vertz, paint);

canvas.drawLine(hortz, 0, hortz, mHeight, paint);

vertz += space;

hortz += space;

}

}

接下来,因为要在这个背景上画图,我在其上覆盖一层透明ImageView,给该iv设置这个属性:

android:background="@android:color/transparent"

接下来的绘制滑动轨迹和十字光标都在这个iv上完成。

接下来遇到了一些坑,都踩了一遍。

因为这个绘图是发生在一个Fragment里,我的绘图界面要设置全屏,但是该Activity中的其他Fragment则不需要这个设置。于是就在这个Fragment中获取到Window,然后设置全屏标记,然后让根视图MATCH_PARENT。

getActivity().getWindow().setFlags(

WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

//mRootView是BaseFragment中设置的该Fragment的视图

this.mRootView.setLayoutParams(

new FrameLayout.LayoutParams(

FrameLayout.LayoutParams.MATCH_PARENT,

FrameLayout.LayoutParams.MATCH_PARENT));

创建bitmap,设置bitmap的高宽时,遇到了问题。

因为在onCreateView中View.getWidth和View.getHeight无法获得一个view的高度和宽度,这是因为View组件布局要在onResume回调后完成。所以现在需要使用getViewTreeObserver().addOnGlobalLayoutListener()来获得宽度或者高度。这是获得一个view的宽度和高度的方法之一。

OnGlobalLayoutList

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/598735
推荐阅读
相关标签
  

闽ICP备14008679号