0

我对android很陌生,正在尝试构建一个应用程序,用户可以在其中绘制字母,按下连接读取它的服务的按钮,然后将字母显示回给他们。

这是我的主要布局:!(http://i58.photobucket.com/albums/g271/billmoney3/layout_zps71eb45ca.jpg

我希望用户能够在蓝色区域绘制。我将蓝色区域设置为一个名为 InnerDrawingView 的自定义视图。我需要有关如何组织视图和 OnTouchListener 的帮助。

现在我有这个java代码:

public class DoodleActivity extends Activity {

Button confirmButton;
EditText drawingResult;
InnerDrawingView innerView;

// on create
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_doodle);    // main layout

    // where the drawing happens
    innerView = (InnerDrawingView) findViewById(R.id.innerDrawingView1);
    innerView.setOnTouchListener(handleTouch);
            ...
            ...

// handle the touching of the inner view
private OnTouchListener handleTouch = new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        drawingResult.setText("O RLY?!");       // just a test
        return true;
    }
}; // end of class

这是正确的方法吗?我在 InnerDrawingView 类中放置了什么样的触摸监听器?我可以从主要活动的 onTouch() 内部调用:innerView.onTouch() 吗?还是 onDraw() 方法?如果有人可以指导我学习一个好的绘画教程,那也会对我有很大帮助。

感谢您的输入。

4

1 回答 1

1

您需要从“事件”对象中提取 x 和 y。然后代码取决于您的需要。您可以将一个新点与前一个点连接起来(以进行分段),或者将其放入列表中。伪代码:

public boolean onTouch(View v, MotionEvent event) {
    innerView.submitNewPoint(event.getX()), event.getY());
    return true;
}

如果要处理多点触控事件,您需要检索点数( event.getPointerCount() )并使用 event.getX(i)/event.getY(i) 中的坐标执行某些操作(i - 多点触控事件的索引观点)。

当然,您需要实现点/线段的绘制/?InnerDrawingView 中的列表。

PS不要忘记将您的字段设为私有;)

于 2013-02-05T04:37:42.353 回答