如何绘制一个与所有具有固定半径的Android设备兼容的圆圈?

时间:2012-11-19 05:29:51

标签: java android

我需要创建一个有5个半径按钮的程序。当我点击这些按钮时,我想调整我的圆半径。(所有Android手机中的圆圈应该有相同的尺寸)。 请帮我找到这个...

2 个答案:

答案 0 :(得分:0)

您可以在xml中创建一个圆形,并将其设置为按钮或imageButton的背景资源,或者您可以执行自己的按钮类并覆盖onDraw方法。有形状的教程在这里:

http://dandar3.blogspot.de/2012/10/android-custom-round-buttons.html

或在这里:

http://yekmer.posterous.com/how-to-make-rounded-buttons-on-android

您可以使用“椭圆形”而不是在形状上使用“矩形”。

我不知道我是否理解你,但在每部手机上制作一个尺寸相同的按钮并不是一个好方法。视图必须是独立的,应该以某种方式创建视图,以便根据单个屏幕大小进行调整。为此,请在xml布局中使用“dp”单位。

现在这是我的例子:

1。)首先在drawable文件夹中创建一个shape-drawable:

round_button_oval_shape.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval" >
        <solid android:color="#00ced1" />
    </shape>

2。)在drawable文件夹中创建第二个形状:

rounded_button_oval_shape_pressed.xml

     <?xml version="1.0" encoding="utf-8"?>
     <shape xmlns:android="http://schemas.android.com/apk/res/android"
          android:shape="oval" >
          <solid android:color="#008b8b" />
     </shape>

3.。)在drawable文件夹中创建一个选择器:

rounded_button_selector.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">

       <item android:drawable="@drawable/rounded_button_oval_shape_pressed"
       android:state_pressed="true"></item>
       <item android:drawable="@drawable/round_button_oval_shape"
       android:state_pressed="false"></item>
       <item android:drawable="@drawable/round_button_oval_shape"></item>
    </selector>

4.)创建主布局

main.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:background="#000000"
       android:gravity="center"
       android:orientation="vertical" >

     <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/hello_world"
       android:textColor="#ff0000" />

     <Button
       android:id="@+id/rounded_button"
       android:layout_width="250dp"
       android:layout_height="250dp"
       android:background="@drawable/rounded_button_selector" />

     </LinearLayout>

如果您已完成此部分,则可以在活动中使用该按钮执行任何操作。

RoundedButtonDemo.java

    public class RoundedButtonDemo extends Activity {

private Button mRoundedButton;

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

    mRoundedButton = (Button) findViewById(R.id.rounded_button); //initialize your button
    mRoundedButton.setOnClickListener(new OnClickListener() {   // set Button on click listener

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Toast.makeText(RoundedButtonDemo.this,            //show a toast when pressing button
                    R.string.rounded_button_message, Toast.LENGTH_LONG)
                    .show();
        }

    });
   }

    }

需要形状和选择器来显示按钮的按下行为。第一个形状是一个普通按钮,没有按下。第二个是按下的形状。选择器使用两种形状向用户显示按下状态。为此,请将选择器设置为main.xml中按钮的背景。

答案 1 :(得分:0)

在创建圆圈之前扣除屏幕尺寸并根据这种方式采取行动是一种优雅的方式,

Android设备中的屏幕大小不同,

因此,根据找到的屏幕尺寸找出屏幕大小放置您的坐标值

如果只有一个选项,那么以下内容 线程将有助于您实现这一目标,

Compatible Canvas draw tip

如果没有,那么按钮背景应该是9补丁图像总是更好。

希望,你会发现它很有用。