我想你已经看到了新的Android设计指南,新的"浮动动作按钮"又名"FAB"
例如这个粉红色的按钮:

我的问题听起来很愚蠢,我已经尝试了很多东西,但是将这个按钮放在两个布局的交叉点上的最佳方法是什么?
在上面的例子中,这个按钮完全位于我们可以想象的ImageView和relativeLayout之间.
我已经尝试了很多调整,但我确信有一个正确的方法来做到这一点.
我有一个ListView,每个列表项我希望它在它下面显示一个阴影.我正在使用Android Lollipop的新高程功能在View上设置一个我想要投射阴影的Z,并且我已经使用ActionBar(技术上是Lollipop中的工具栏)有效地做到了这一点.我正在使用Lollipop的高程,但由于某种原因,它没有在列表项下显示阴影.以下是每个列表项的布局设置方式:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
style="@style/block"
android:gravity="center"
android:layout_gravity="center"
android:background="@color/lightgray"
>
<RelativeLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:elevation="30dp"
>
<ImageView
android:id="@+id/documentImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/alphared"
android:layout_alignParentBottom="true" >
<appuccino.simplyscan.Extra.CustomTextView
android:id="@+id/documentName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
app:typeface="light"
android:paddingLeft="16dp"
android:paddingTop="8dp"
android:paddingBottom="4dp"
android:singleLine="true"
android:text="New Document"
android:textSize="27sp"/>
<appuccino.simplyscan.Extra.CustomTextView
android:id="@+id/documentPageCount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
app:typeface="italic"
android:paddingLeft="16dp"
android:layout_marginBottom="16dp"
android:text="1 page"
android:textSize="20sp"/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
但是,这是它如何显示列表项,没有阴影:
我也试过以下无济于事:
我试图了解如何为按钮和其他视图实现"涟漪效应 - 触摸反馈".我查看了与SO上的Ripple触摸效果相关的问题,并对其进行了一些了解.我能够使用这个java代码成功获得涟漪效应.
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RadialGradient;
import android.graphics.Region;
import android.graphics.Shader;
import android.support.annotation.NonNull;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.animation.AccelerateInterpolator;
import android.widget.Button;
public class MyButton extends Button {
private float mDownX;
private float mDownY;
private float mRadius;
private Paint mPaint;
public MyButton(final Context context) {
super(context);
init();
}
public MyButton(final Context context, final AttributeSet attrs) {
super(context, attrs);
init();
}
public MyButton(final Context context, final AttributeSet attrs,
final int defStyle) { …Run Code Online (Sandbox Code Playgroud) xml android material-design rippledrawable android-5.0-lollipop
我有一个带有高程的圆角矩形,可以投射阴影,就像这里的例子一样:http://developer.android.com/preview/material/views-shadows.html#shadows
这是我的形状:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/white" />
<corners android:radius="6dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
我希望获得其他所有内容的漂亮"涟漪"触摸效果,但是如果将其设置为视图的背景,则不会给出触摸反馈.形状保持白色.
所以,我把它变成了layer-list:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/white" />
<corners android:radius="6dp" />
</shape>
</item>
<item android:drawable="?android:selectableItemBackground" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)
现在,当我点击它时,我得到了很好的触摸反馈,但是有一个问题.
圆角矩形的轮廓丢失了.它仍然可以将白色圆角矩形绘制得很精细,但是阴影会被渲染为非圆角矩形(方形边缘),并且波纹会一直延伸到角落之外:

它在这里看起来并不太可怕,但在设备上它非常丑陋和令人反感.
有没有办法来解决这个问题?Outline第一个链接的部分似乎是我想要的,但我无法弄清楚如何实现它.
对于早期的L Preview,有一些示例如下所示添加到您的代码中以使用FAB(浮动操作按钮).
但不幸的是,我不能使用相同的代码来实现FAB,因为不再支持setOutline方法,但它似乎已被替代方法'fab.setOutlineProvider(ViewOutlineProvider);'所取代.任何人都可以解释如何使用它?...
这可能是我想念的非常简单,但任何帮助都会非常感激.
// Outline
int size = getResources().getDimensionPixelSize(R.dimen.fab_size);
Outline outline = new Outline();
outline.setOval(0, 0, size, size);
Button fab = (Button) findViewById(R.id.fab);
fab.setOutline(outline);
fab.setClipToOutline(true);
Run Code Online (Sandbox Code Playgroud) android android-appcompat android-layout material-design android-5.0-lollipop
这是我第一次发帖.我一直在使用这个网站作为一个很好的资源.但我遇到了一个问题.我尝试过将阴影效果应用到我的ImageButton但是它有效吗?我想要实现的是你可以在浮动气泡上看到的阴影(材料设计).我有一个圆形的ImageButton,但我希望在它周围添加一个阴影.我怎样才能做到这一点?
这是circle_button.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#C62666"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
这是circle_button_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="#E92D6C"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
这是我的选择器,它将两个drawable组合成一个.button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/circle_button"
android:state_focused="true"
android:state_pressed="true" />
<item android:drawable="@drawable/circle_button_pressed"
android:state_focused="false"
android:state_pressed="true" />
<item android:drawable="@drawable/circle_button_pressed"
android:state_focused="true" />
<item android:drawable="@drawable/circle_button"
android:state_focused="false"
android:state_pressed="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)
这就是我将它应用到我的ImageButton的方式
<ImageButton
android:id="@+id/btn_apply"
android:layout_width="68dp"
android:layout_height="68dp"
android:layout_alignParentTop="true"
android:layout_alignRight="@+id/scrollView1"
android:layout_marginRight="45dp"
android:layout_marginTop="94dp"
android:adjustViewBounds="true"
android:background="@drawable/button"
android:scaleType="fitCenter"
android:src="@drawable/apply_two" />
Run Code Online (Sandbox Code Playgroud)
又一次呢?如何在按钮上添加阴影?谢谢你的时间.