当前位置: 源码素材网 » Android教程 » 详情页

Android 仿哆啦A梦眼睛“看着我”

  •   时间:2019-06-10
  • 概述:看着我

Android 仿手机中的哆啦A梦眼睛看着我特效,手指滑动到哪里,手机中的哆啦A梦眼睛就看哪里,不停地看着手指。编写时主要使用Activity类中的onTouchEvent ()方法(用于获取手指点在屏幕上的位置),Canvas类中的onDraw()方法(用于刷新眼睛的位置),Math类中的abs()方法(用于判断手指滑动的角度),实现手势监听和绘制左右眼的View。

在onDraw()的法中绘制出哆啦A梦的眼睛:

// 消除锯齿
//paint.setAntiAlias(true);
// 消除锯齿
paint2.setAntiAlias(true);
// 设置画笔的颜色
paint2.setColor(Color.BLACK);
// 设置paint的外框宽度
//paint.setStrokeWidth(2);
canvas.save(); //锁定画布
canvas.rotate(s, x, y);//旋转45?
//paint.setColor(Color.BLUE);  //设置画笔颜色

初始化左右眼的视图,获取屏幕宽、高等:

private void init() {
    /**
     * 初始化左右眼的view
     * */
    leftEyeView = new LeftEyeView(this);
    rightEyeView = new RightEyeView(this);
    /**
     * 获取屏幕的宽高
     * */
    WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
    w = wm.getDefaultDisplay().getWidth();
    h = wm.getDefaultDisplay().getHeight();
    relativeLayout = (RelativeLayout) findViewById(R.id.activity_main);
    /**
     * 设置左眼的宽高
     * */
    leftEyeView.setMinimumHeight(200);
    leftEyeView.setMinimumWidth(200);
    /**
     * 设置右眼的宽高
     * */
    rightEyeView.setMinimumHeight(200);
    rightEyeView.setMinimumWidth(200);
    /**
     * 绘制出左右眼,并添加到布局中
     * */
    leftEyeView.invalidate();
    rightEyeView.invalidate();
    relativeLayout.addView(leftEyeView);
    relativeLayout.addView(rightEyeView);
    /**
     * 两眼最先出现的坐标
     * */
    rightEyeView.setXY(w / 2 + 100, h / 2);
    leftEyeView.setXY(w / 2 - 100, h / 2);
}

通过Math类的函数获取到手指滑动的弧度传递给左右眼绘制的方法进行重绘:

float x = event.getX();
float y = event.getY();
if (MotionEvent.ACTION_DOWN == event.getAction()) {
    leftEyeView.setZQ(w / 2 - 100, h / 2 - 80);
    rightEyeView.setZQ(w / 2 + 100, h / 2 - 80);
} else if (MotionEvent.ACTION_MOVE == event.getAction()) {
    int x1 = w / 2, y1 = h / 2; //点1坐标;
    int x2 = (int) event.getX(), y2 = (int) event.getY(); //点2坐标
    int m = Math.abs(x1 - x2);
    int n = Math.abs(y1 - y2);
    double z = Math.sqrt(m * m + n * n);
    int jiaodu = Math.round((float) (Math.asin(n / z) / Math.PI * 180));//最终角度
    Log.e("-----", "jiaodu:" + jiaodu);
    if (x > (w / 2) && y < (h / 2)) { //手指在第一象限
        leftEyeView.setS((float) (90 - jiaodu));
        rightEyeView.setS((float) (90 - jiaodu));
    } else if (x < (w / 2) && y < (h / 2)) { //手指在第二象限
        leftEyeView.setS((float) (270 + jiaodu));
        rightEyeView.setS((float) (270 + jiaodu));
    } else if (x < (w / 2) && y > (h / 2)) { //手指在第三象限
        leftEyeView.setS((float) (270 - jiaodu));
        rightEyeView.setS((float) (270 - jiaodu));
    }
    else if (x > (w / 2) && y > (h / 2)) { //手指在第四象限
        leftEyeView.setS((float) (90 + jiaodu));
        rightEyeView.setS((float) (90 + jiaodu));
    }
} else if (MotionEvent.ACTION_UP == event.getAction()) {
    leftEyeView.setZQ(w / 2 - 100, h / 2);
    rightEyeView.setZQ(w / 2 + 100, h / 2);
}

在onDrawO方法中绘制眼睛时,请尝试实现哆啦A梦的左眼为蓝色,右眼为黑色的效果。

请参考这里的完整源代码:Android 仿游戏开发中的眼睛看着我特效

    相关声明:

      若“Android 仿哆啦A梦眼睛“看着我””有损您的权益,请告之我们删除内容。
      部分文章来源于网络,版权归原作者所有。