如何在我的自定义视图下方放置按钮,以便用户可以选择保存他/她绘制的内容?

时间:2012-01-24 14:28:15

标签: java android

首先,提前感谢您提供的任何帮助。这一直让我疯狂,谷歌也不是我的朋友。

我创建了一个DrawView,因此用户可以在应用程序中绘制一些内容。我想要做的是将DrawView放在布局XML文件中,这样我就可以在顶部放置一个TextView标题,在底部放置两个按钮,其中一个将保存用户绘制的图像文件。到目前为止,我所能做的就是创建一个供用户绘画的区域。有没有办法将这个DrawView视图放到XML文件中?如果没有,我有哪些替代解决方案?

此外,这是一个可选的问题,因为我确信我会在某些时候通过Google搜索找到解决方案,但除了canvas.drawLine之外,还有更好的方法可以顺畅地绘制用户的手指移动( )我目前正在使用的方法?

public class Draw extends Activity {
DrawView drawView;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Set full screen view
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                                     WindowManager.LayoutParams.FLAG_FULLSCREEN);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    drawView = new DrawView(this);
    setContentView(drawView);
    drawView.requestFocus();
  }
}

public class DrawView extends View implements OnTouchListener {
  private static final String TAG = "DrawView";

  ArrayList <Float> nikpointx = new ArrayList<Float>(); 
  ArrayList <Float> nikpointy = new ArrayList<Float>();
  Bitmap nikbmp;

  Paint paint = new Paint();

  public DrawView(Context context) {
    super(context);
    setFocusable(true);
    setFocusableInTouchMode(true);

    this.setOnTouchListener(this);

    paint.setColor(Color.WHITE);
    paint.setAntiAlias(true);
    paint.setStrokeWidth(4);
  }

  @Override
  public void onDraw(Canvas canvas) {

    //I'm doing this, because the drawCircle method places circles at different points
    //in the screen, rather than drawing smooth lines.  I haven't found a more elegant
    //solution yet :-(

    canvas.drawLine(nikpointx.get(i-1), nikpointy.get(i-1), nikpointx.get(i), nikpointy.get(i), paint);
            canvas.setBitmap(nikbmp);


  }     
}

public boolean onTouch(View view, MotionEvent event) {
    // if(event.getAction() != MotionEvent.ACTION_DOWN)
    // return super.onTouchEvent(event);
    Point point = new Point();
    point.x = event.getX();
    point.y = event.getY();
    points.add(point);
    invalidate();
    Log.d(TAG, "point: " + point);



    nikpointx.add(event.getX());
    nikpointy.add(event.getY());

    return true;
}
}

1 个答案:

答案 0 :(得分:0)

您可以将自定义视图放在xml布局中,如下所示:

<full.package.to.customview.DrawView android:id="@+id/idOfCustom" 
//other attributes
 />

您还可以向视图添加自定义属性,以直接从xml文件进行设置。

我没有解决你的第二个问题。

编辑:在此网站上快速搜索后,我发现了这个 - &gt; Android How to draw a smooth line following your finger