• 跟随手指运动的小球或十字型


    main.xml文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/root" />

    主文件MoveBall.java:

    package com.ucrobotics.moveball;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.widget.LinearLayout;
     
    public class MoveBall extends Activity
    {
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //获取布局文件中的LinearLayout容器
    LinearLayout root = (LinearLayout)findViewById(R.id.root);
    //创建DrawView组件
    final DrawView draw = new DrawView(this);
    //设置自定义组件的最大宽度、高度
    //draw.setMinimumWidth(300);
    //draw.setMinimumHeight(500);
    //为draw组件绑定Touch事件
    draw.setOnTouchListener(new OnTouchListener()
    {
    @Override
    public boolean onTouch(View arg0, MotionEvent event)
    {
    //修改draw组件的currentX、currentY两个属性
    draw.currentX = event.getX();
    draw.currentY = event.getY();
    //通知draw组件重绘
    draw.invalidate();
    //返回true表明处理方法已经处理该事件
    return true;
    }
    });
    root.addView(draw);
    }
    }

    绘制小球或十字型文件DrawView.java:

    package com.ucrobotics.moveball;
     
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.view.View;
     
    public class DrawView extends View
    {
    public float currentX = 40;
    public float currentY = 50;
    /**
    * @param context
    */

    public DrawView(Context context)
    {
    super(context);
    // TODO Auto-generated constructor stub
    }
    @Override
    public void onDraw (Canvas canvas)
    {
    super.onDraw(canvas);
    //创建画笔
    Paint p = new Paint();
    //设置画笔的颜色
    p.setColor(Color.RED);
     
    //绘制一个小圆(作为小球)
    //canvas.drawCircle(currentX , currentY , 15 , p);
     
    //绘制一个“十”字型
    canvas.drawLine(currentX-25, currentY, currentX+25, currentY, p); //“十”字型横线
    canvas.drawLine(currentX, currentY-25, currentX, currentY+25, p); //“十”字型竖线
    }
    }

    代码最后的绘制小球和“十”字型个任选一进行测试!

    执行时会出现选定的图标,然后随着手指进行运动。

    参考:www.eoeandroid.com/forum.php?mod=viewthread&tid=101780

  • 相关阅读:
    低效代码的危害
    使用datetime来控制timer的问题
    redis for windows
    log4net支持用日期加时间指定文件名
    防止数据丢失的解决方法
    RabbitMQ默认情况下不保证每次都把消息传递
    UnitTest和Developer
    spring+eureka+zuul
    新工具解决消息丢失的bug
    java_if_else__的应用1
  • 原文地址:https://www.cnblogs.com/wzc0066/p/2948308.html
Copyright © 2020-2023  润新知