2012-12-08 57 views

回答

5

我想下面的代码可以提供有关图纸

enter image description here

import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.widget.CompoundButton; 
import android.widget.CompoundButton.OnCheckedChangeListener; 
import android.widget.RadioButton; 
import android.widget.RelativeLayout; 

public class MainActivity extends Activity { 

     DrawView drawView; 
     RadioButton r1,r2,r3,r4;  
     RelativeLayout rl1; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      r1 =(RadioButton)findViewById(R.id.radioButton1); 
      r2 =(RadioButton)findViewById(R.id.radioButton2); 
      r3 =(RadioButton)findViewById(R.id.radioButton3); 
      r4 =(RadioButton)findViewById(R.id.radioButton4); 

      rl1 =(RelativeLayout)findViewById(R.id.rl1); 

      r1.setOnCheckedChangeListener(new OnCheckedChangeListener() {    
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        r2.setChecked(false); 
        r3.setChecked(false); 
        r4.setChecked(false); 
        drawView = new DrawView(MainActivity.this,r4,r1); 
        drawView.setBackgroundColor(Color.WHITE); 
        rl1.addView(drawView);     
       } 
      }); 

      r2.setOnCheckedChangeListener(new OnCheckedChangeListener() {    
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        r1.setChecked(false); 
        r3.setChecked(false); 
        r4.setChecked(false); 
        drawView = new DrawView(MainActivity.this,r1,r2); 
        drawView.setBackgroundColor(Color.WHITE); 
        rl1.addView(drawView); 
       } 
      }); 

      r3.setOnCheckedChangeListener(new OnCheckedChangeListener() {    
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        r2.setChecked(false); 
        r1.setChecked(false); 
        r4.setChecked(false); 
        drawView = new DrawView(MainActivity.this,r2,r3); 
        drawView.setBackgroundColor(Color.WHITE); 
        rl1.addView(drawView); 
       } 
      }); 

      r4.setOnCheckedChangeListener(new OnCheckedChangeListener() {    
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {  
        r2.setChecked(false); 
        r3.setChecked(false); 
        r1.setChecked(false); 
        drawView = new DrawView(MainActivity.this,r3,r4); 
        drawView.setBackgroundColor(Color.WHITE); 
        rl1.addView(drawView); 
       } 
      }); 

     } 

} 

drawView函数

import android.annotation.SuppressLint; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.view.View; 

public class DrawView extends View { 
    Paint paint = new Paint(); 
    View startView; 
    View endView;  

    public DrawView(Context context,View startView,View endView) { 
     super(context); 
     paint.setColor(Color.YELLOW);   
     this.startView = startView; 
     this.endView = endView; 
    } 

    @SuppressLint("NewApi") 
    public void onDraw(Canvas canvas) { 
      canvas.drawLine(startView.getX()+25, startView.getY()+50, endView.getX()+25, endView.getY(), paint); 
    } 

} 

activity_main.xml中

012的一些想法
<RelativeLayout 
     android:id="@+id/rl1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="#ffffaa" > 

    </RelativeLayout> 

    <RadioButton 
     android:id="@+id/radioButton4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="20dp" 
     android:text="RadioButton" /> 

    <RadioButton 
     android:id="@+id/radioButton1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/radioButton4" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="84dp" 
     android:text="RadioButton" /> 

    <RadioButton 
     android:id="@+id/radioButton2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@+id/radioButton4" 
     android:layout_marginRight="78dp" 
     android:layout_marginTop="32dp" 
     android:text="RadioButton" /> 

    <RadioButton 
     android:id="@+id/radioButton3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/radioButton4" 
     android:layout_alignParentRight="true" 
     android:layout_marginBottom="23dp" 
     android:text="RadioButton" /> 

</RelativeLayout> 
+1

谢谢你的代码,这是非常有帮助的。但是当我运行代码,当我按下radioButton应用程序崩溃时,因为onDraw方法:public void onDraw(Canvas canvas)canvas.drawLine(startView.getX )+25,startView.getY()+ 50,endView.getX()+ 25,endView.getY(),paint); } –

+0

https://dl.dropbox.com/u/68130108/DrawLine.rar你可以看看源代码 – Talha

+0

问题是,我试图在旧的模拟器Android 2.2中运行应用程序。但是当我现在尝试运行它在新的模拟器Android 4它完美的工作。再次感谢 –

0

我认为你可以在你的类中创建一个单选按钮的两个实例,然后使用画布在它们之间绘制。我认为你可以得到每个他们的坐标。

相关问题