从活动中使用画布绘制线条

时间:2012-10-20 16:08:44

标签: android android-canvas

我已阅读以下链接:

How to draw a line in android

http://marakana.com/s/android_2d_graphics_example,1036/index.html

http://developer.android.com/reference/android/graphics/Canvas.html

Activity.setContentView, View.setContentView?

How to create an activity without 'setContentView(R.layout.main)'

http://www.jayway.com/2009/03/26/layout-resources-in-android/

我已经读过以前的文章,谈论我的问题,但我无法解决我的问题。

我的问题是我想绘制直线来模拟图像之间的连接,但主要是绘制直线。

我见过的所有示例都有从活动继承的主类,并且有另一个继承自View的内部类。并且在主类中设置包含View类的用户界面,因此我们有一个空的用户界面。 像这样:

public class ActivityMain extends Activity{

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MyView view1 =new MyView(this);
    setContentView(view1);       
}

public class MyView extends View {
    public MyView(Context c) {
        super(c);
    }
}
//And more code
}

我想在继承自活动的类中设置我的用户界面(xml文件)(像往常一样):

public class ActivityMain extends Activity{
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.union);
}
}

我希望从继承自activity的类中绘制直线,我不希望任何继承自View的类。

我尝试了以下但我看不到任何一行:

public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();

switch(event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        Canvas canvas = new Canvas();
        Paint paint = new Paint();
                    paint.setColor(Color.BLACK);
        canvas.drawLine(0, 0, 300, 700, paint);     
    break;
    case MotionEvent.ACTION_MOVE:
    break;
    case MotionEvent.ACTION_UP:
    break;
}   
return true;
}

在上一个方法中,我想从角落0,0到角落300,700画一条线。这是一个简单的测试。但我不画任何东西,我不知道为什么。

2 个答案:

答案 0 :(得分:0)

您可以扩展视图并覆盖onDraw并管理所有线路。

然后,您可以将此视图(可以是全屏)添加到另一个xml(可以在Activity中使用)中,如下所示:

<my.package.myView
    android:layout_width=@"fill_parent"
    android:layout_height=@"fill_parent"/>

确保您在主要活动中使用的布局为RelativeLayout,以便您可以填充整个屏幕并位于视图的顶部。要将视图置于视图之上,请确保在活动结束时将视图设置为xml。

答案 1 :(得分:0)

在此链接中,我解释了我的问题,并展示了我的解决方案load a layout xml file in a View class android

我希望这有助于其他人=)