如何创建3D样式按钮

时间:2011-11-22 11:22:59

标签: android

嗨,我想在活动中制作一个按钮。我创建了一个,但在2D like this image

如何在3D中制作它 like this image

6 个答案:

答案 0 :(得分:5)

在2D按钮中,您使用的是SDK 4.0(或者它似乎就是那个),在3D按钮中您正在使用SDK 2.3.3。谷歌通过不同的Android版本更改了按钮样式,从版本从1.5到2.2的3D按钮移动,然后在2.3.3中更加平坦,现在它是最新版本的2D。

如果您想在所有Android版本中使用3D按钮,则必须创建自己的按钮样式,制作三​​个9-patch images(一个用于按下按钮,一个用于未按下按钮,一个用于按钮未启用)并在XML中声明一个选择器。我建议您按照this教程创建自定义按钮。

答案 1 :(得分:2)

答案 2 :(得分:1)

gradient标签允许在可绘制对象中使用颜色渐变,您可以使用它来制作3d样式的按钮

<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:startColor="#EAEAEA"
        android:endColor="#979797" />
    <corners android:radius="3dp" />
</shape>

check the final effect

答案 3 :(得分:0)

答案 4 :(得分:-1)

在这篇文章中我找到了一个很好的3D按钮解决方案:

<强>布局/ activity_main.xml中

<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:gravity="center" tools:context=".MainActivity">

<强>值/ dimen.xml

<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
    <dimen name="corner_radius">5dp</dimen>
    <dimen name="layer_padding">10dp</dimen>
</resources>

<强>抽拉/ botao_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/botao_sombra" />

    <item android:bottom="@dimen/layer_padding">
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/corner_radius" />
            <solid android:color="@color/azul" />
        </shape>
    </item>
</layer-list>

<强>抽拉/ seletor.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/botao_pressionado" android:paddingTop="10sp"></item>
    <item android:drawable="@drawable/botao_normal" android:layout_marginTop="50dp">
    </item>
</selector>

<强>抽拉/ botao_pressionado.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#00000000"/>
        </shape>
    </item>


    <item android:top="@dimen/layer_padding">
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/corner_radius" />
            <solid android:color="@color/Azul" />
        </shape>
    </item>
</layer-list>

<强>抽拉/ botao_sombra.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <corners android:radius="@dimen/corner_radius" />
    <solid android:color="@color/AzulEscuro" />
</shape>

<强>抽拉/ botao_normal.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/botao_sombra" />

    <item android:bottom="@dimen/layer_padding">
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/corner_radius" />
            <solid android:color="@color/Azul" />
        </shape>
    </item>
</layer-list>

<强> MainActivity.java

package uplicativos.example_3d_buttom;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;

public class MainActivity extends ActionBarActivity {

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

参考:http://www.uplicativos.com/blog/en/2015/11/27/3d-button-in-android-applications/

答案 5 :(得分:-2)

在布局xml文件中创建一个按钮,如下所示 -

<Button android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:text="Click me!" />

我需要查看您的代码以正确地帮助您。