如何为视图添加形状

时间:2014-04-07 10:35:41

标签: android android-drawable

我是Android的新手 我正在尝试创建一个简单的绘图应用程序,我想用手指绘制并添加形状(圆形,矩形等)。

到目前为止,我可以用手指画画并使用 this answer我能够创建一个矩形形状。

我想要实现的是,当我用手指画画时,当我点击绘制矩形按钮时,我得到了矩形形状,我将能够绘制这个形状。

但是我在 DrawingView 上添加这个矩形形状时遇到了问题。

MainActivity.java

public class MainActivity extends Activity
{
   private DrawingView drawView;
   private DrawRectangleView drawRectView;

   @Override
   protected void onCreate(Bundle savedInstanceState) 
   {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      drawView = (DrawingView) findViewById(R.id.drawing);
   }

   public void rectangleClicked(View view)
   {
      Log.i("---Log---","Button clicked");

      // how to call DrawRectangleView and add it to DrawingView ???
   }

}

main_activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >

<com.example.test.DrawingView
    android:id="@+id/drawing"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_marginBottom="3dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_marginTop="3dp"
    android:layout_weight="1"
    android:background="#FFFFFFFF" />

   <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="rectangleClicked"
        android:text="Draw Rectangle" />
   </LinearLayout>
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

我也是新手。这就是我所做的,不确定这是否是一个好的方法,但这里是......

在按钮的onClick方法中执行以下操作:

public void rectangleClicked(View view)
{
   Log.i("---Log---","Button clicked");

  drawRectView.setValue("rectangle"); 
}

在DrawRectangleView类中,只需定义一个字符串变量并定义一个setter方法:

public void setValue(String val) {
   testVar = val;
}

之后只需 testVar 的if-else值。希望这有帮助

<强> P.S 我认为你应该使用自定义视图而不是使用两个不同的视图。