如何在两个或多个RadioButtons之间的android中绘制一条线

时间:2012-12-08 20:01:47

标签: android line draw

我想在两个或多个视图之间绘制一条线,例如当选中一个时,放射线按钮?

2 个答案:

答案 0 :(得分: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中     

    <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 :(得分:0)

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