【问题标题】:get rounded elevation-shadow on FloatingActionButton (v21)在 FloatingActionButton (v21) 上获得圆角高程阴影
【发布时间】:2015-02-14 10:12:48
【问题描述】:

我对 android 开发还很陌生,是的,在询问之前我已经尝试了很多来解决这个问题。

所以我正在尝试实现 FloatingActionButton(为简单起见仅在 v21 上),但我无法让高程阴影变圆。

这是我已经拥有的代码行:

在主要活动.java(命名为overview)中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_overview);
        ImageButton fabbutton = (ImageButton) findViewById(R.id.fab);

        ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() {
        @Override
        public void getOutline(View view, Outline outline) {
            int size = getResources().getDimensionPixelSize(R.dimen.round_button_diameter);
            outline.setOval(0, 0, size, size);
        }
};
fabbutton.setOutlineProvider(viewOutlineProvider);

主要活动.xml:

    <ImageButton
    android:id="@+id/fab"
    android:layout_width="@dimen/round_button_diameter"
    android:layout_height="@dimen/round_button_diameter"
    android:layout_gravity="end|bottom"
    android:background="@drawable/oval_ripple"
    android:src="@android:drawable/ic_input_add"
    android:tint="@android:color/white"
    android:elevation="@dimen/elevation_low"
    android:stateListAnimator="@anim/button_elevation"
    android:layout_alignBottom="@+id/expandableListView"
    android:layout_alignEnd="@+id/expandableListView"
    android:layout_marginRight="@dimen/add_button_margin"
    android:layout_marginBottom="@dimen/add_button_margin"
    android:contentDescription="@string/fab"
    android:cropToPadding="false" />

dimens.xml

<dimen name="round_button_diameter">56dp</dimen>
<dimen name="add_button_margin">16dp</dimen>
<dimen name="elevation_low">8dp</dimen>
<dimen name="elevation_high">14dp</dimen>

oval_ripple.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight">
<item>
    <shape android:shape="oval">
        <solid android:color="#fff1d744"/>
    </shape>
</item>

button_elevation.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
    <objectAnimator
        android:propertyName="translationZ"
        android:duration="@android:integer/config_shortAnimTime"
        android:valueFrom="8dp"
        android:valueTo="14dp"
        android:valueType="floatType"/>
</item>
<item>
    <objectAnimator
        android:propertyName="translationZ"
        android:duration="@android:integer/config_shortAnimTime"
        android:valueFrom="14dp"
        android:valueTo="8dp"
        android:valueType="floatType"/>
</item>

我希望我没有忘记任何重要的代码部分,并对这篇长篇文章感到抱歉,但我很无助。如果有帮助,我也可以上传 AndroidStudio 项目文件。

来自德国的问候,感谢您的回答。 :)

【问题讨论】:

  • 你试过我的解决方案了吗?

标签: java android android-elevation


【解决方案1】:

你为什么不使用库?

在你的build.gradle

中添加这一行
dependencies {
     ...
     compile 'com.getbase:floatingactionbutton:1.3.0'
     ...
}

并在您的布局 xml 文件中使用:

<com.getbase.floatingactionbutton.FloatingActionButton
    android:id="@+id/common_ring_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_marginBottom="10dp"
    android:layout_marginEnd="10dp"
    android:layout_marginRight="10dp"
    fab:fab_colorNormal="#FF2222"
    fab:fab_colorPressed="#FF0000"
    fab:fab_icon="android:drawable/ic_input_add"/>

但你记得你必须把FloatingButton放在RelativeLayout里面

如果你有任何问题,请在评论中提问:)

【讨论】:

  • 其实我真的不知道如何使用库:D 我已经添加了你的代码,但知道 Android Studio 在“FloatingActionButton.class”中告诉我找不到源
  • 你是否在 build.gradle 中添加了依赖项?
  • 是的,我做到了。重新启动 Android Studio 后,它工作了。你知道如何改变加号图标的颜色吗?我是否需要更改资源本身或是否有 xml 行可以这样做?我现在如何获得连锁反应?谢谢你的帮助,我真的很感激:)
  • 太棒了!很高兴能帮到你。
  • 虽然每次遇到问题时都很容易问,但我不想这样做。你知道帮助我学习在 Android Studio 中开发应用程序的一面/书籍/任何东西吗?应该很棒
猜你喜欢
  • 2017-12-25
  • 2014-09-15
  • 2016-10-05
  • 2016-02-20
  • 2011-09-10
  • 1970-01-01
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多