如何在同一屏幕上显示按钮和自定义绘画视图?安卓

时间:2013-02-05 04:24:13

标签: java android listener paint

我对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()方法?如果有人能指导我做一个很好的油漆教程,那对我有很大的帮助。

感谢您的投入。

1 个答案:

答案 0 :(得分:1)

您需要从“event”对象中拉出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 - 多指数-touch事件点)。

您需要实施点/段/的绘制吗?在InnerDrawingView中列出。

P.S。不要忘记让你的字段私有;)