Android 5.0 android:elevation 如果给button设置效果

看到android5.0版本中提供了  elevation  的功能,我在SDK Manager 下载了 Android 5.0  例子代码,看了下  ElevationBasic 例子,展示了2个view对象,一个圆形一个矩形,圆形设置了 android:elevation  =  30dp,具体例子如下

<?xml version="1.0" encoding="utf-8"?>
<!--

 Copyright 2014 The Android Open Source Project

 Licensed under the Apache License, Version 2.0 (the "License");

 you may not use this file except in compliance with the License.

 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software

 distributed under the License is distributed on an "AS IS" BASIS,

 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 See the License for the specific language governing permissions and

 limitations under the License.
-
-->

<FrameLayout 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">
    <View
            android:id="@+id/floating_shape"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_marginRight="40dp"
            android:background="@drawable/shape"
            android:elevation="30dp"
            android:layout_gravity="center"/>
    <View
            android:id="@+id/floating_shape_2"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_marginLeft="25dp"
            android:background="@drawable/shape2"
            android:layout_gravity="center"/>
</FrameLayout>

在 Nexus 9 中跑这里例子,得到的效果如下

如果我把 组件换成按钮Button,移除掉按钮的其他属性,就不会显示 elevation  效果,如下

默认主题的按钮样式中包含了  android:elevation 和 android:translationZ 属性,你可以移除掉默认的属性动画,并设置你自己的android:stateListAnimator 属性

如下代码

<Button
    ...

    android:stateListAnimator="@null" />

<Button
    ...

    android:stateListAnimator="@anim/my_animator" />

默认的动画(animator)在button_state_list_anim_material.xml定义。这里是一个展示状态下不可用,按钮处于点击状态的例子

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:state_enabled="true">
        <set>
            <objectAnimator android:propertyName="translationZ"
                            android:duration="@integer/button_pressed_animation_duration"
                            android:valueTo="@dimen/button_pressed_z_material"
                            android:valueType="floatType"/>
            <objectAnimator android:propertyName="elevation"
                            android:duration="0"
                            android:valueTo="@dimen/button_elevation_material"
                            android:valueType="floatType"/>
        </set>
    </item>
    <!-- 基本状态 -->
    <item android:state_enabled="true">
        <set>
            <objectAnimator android:propertyName="translationZ"
                            android:duration="@integer/button_pressed_animation_duration"
                            android:valueTo="0"
                            android:startDelay="@integer/button_pressed_animation_delay"
                            android:valueType="floatType"/>
            <objectAnimator android:propertyName="elevation"
                            android:duration="0"
                            android:valueTo="@dimen/button_elevation_material"
                            android:valueType="floatType" />
        </set>
    </item>
    ...

</selector>

原文地址:http://www.itmmd.com/201412/240.html

该文章由 萌萌的IT人 整理发布,转载须标明出处。

时间: 2024-10-29 19:06:28

Android 5.0 android:elevation 如果给button设置效果的相关文章

android如何做iphone那种图片抖动动画的效果(包括button和EditText)

给按钮做抖动效果,可以这样做,建立anim文件夹在res下面,创建一个button_shake.xml <?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="120" android:fromDegrees="

Android 4.0新组件:GridLayout详解

在Android 4.0(API 14)中提供了一个全新的组件GridLayout,它继承自Linearlayout,用于进行网格式的布局. 在某些方面,GridLayout与TableLayout和GridView有相似之处.他的强大之处在于可以指定每一个单元格"横跨"几个单元格或者"竖跨"几个单元格,这一点与html中<table>标签很类似. GridLayout的几个重要属性: rowCount:行数 columnCount:列数 GridLay

Android 5.0 Lollipop SDK下载地址(PASS)

Android 5.0 ARM EABI v7a System Image https://dl-ssl.google.com/android/repository/sys-img/google_apis/sysimg_arm-21_r01.zip Android 5.0 Android TV ARM EABI v7a System Imagehttps://dl-ssl.google.com/android/repository/sys-img/android-tv/sysimg_atv_ar

Android 7.0行为变化—开发者应该关注的(官网同步翻译)

Android 7.0行为变化-开发者应该关注的(官网同步翻译) 版权声明:转载必须注明本文转自严振杰的博客: http://blog.yanzhenjie.com 如果想了解更多Android7.0的内容,可以顺便再看看Android7.0写给开发者的一封信(官网同步翻译). 如果你的引文够好,推荐你阅读官网文章: Android 7.0 Behavior Changes Android N 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更.本文重点介绍你应该了解并在开发应用

Android 6.0 中动态获取权限

Android 5.0时代,用户可以在设置选项中对每个授权许可进行开启/关闭 Android 6.0 Marshmallow中,在首次打开.使用过程中实际用到哪些权限才会向收到申请授权的提醒,和现在的iOS非常相像. 参考:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0830/3387.html 需求:做一个定位功能的软件 checkSelfPermission 检查是否具有权限 requestPermissions; 请

Android 8.0+ 更新安装apk失败的问题

最近做项目发现Android 8.0+ 更新安装apk时 出现安装失败的情况  总结原因是 缺少安装的权限 Android 8.0 (Android O)为了针对一些流氓软件引导用户安装其他无关应用.在应用权限设置的"特殊访问权限"中,加入了"安装其他应用"的设置. 简单的方法  可以直接在Manifest.xml中加入下面的权限:(亲测可用) <uses-permissionandroid:name="android.permission.REQU

Android炫酷广东快乐十分搭建的播放效果

使用广东快乐十分搭建述 dsluntan.com 贝塞尔曲线实现滑动效果,在使用属性动画实现水波纹效果,然后就能实现以上效果 三.实现 1.先封装动画框架,创建动画基础类 PathPoint.java public class PathPoint { public static final int MOVE = 0; public static final int LINE = 1; public static final int CURVE = 2; float mControl0X, mCo

Android应用系列:仿MIUI的Toast动画效果实现(有图有源码)

前言 相信有些人用过MIUI,会发现小米的Toast跟Android传统的Toast特么是不一样的,他会从底部向上飞入,然后渐变消失.看起来效果是挺不错的,但是对于Android原生Toast是不支持自定义动画的.那这个效果到底是怎么实现的呢?下面就来告诉你.... 分析 如果园友看过我的另一篇博客<Android:剖析源码,随心所欲控制Toast显示>,就会知道其实原生Toast就是infate出一个View实例,然后将其加载到WindowManager上面来达到显示效果.我们很多人都知道W

Android 编程之天气预报小实例源码演示及效果展示--1

很多时候我们外出,但是由于没有掌握出行的天气情况,经常遇到苦恼的事情,成为落汤鸡,今天我就带大家写 一款关于天气预报的Android APP,我会很详细的把它分成几个部分来详细讲解,希望大家喜欢的可以顶一个, 也同时呢,希望更多的人加入到我的博客中来,一起学习,一起交流,一起进步,谢谢大家! 写完天气预报之后有空闲时间的话会讲文件管理器和其他实用的一些APP开发,方便大家学习,交流 在开发天气预报之前,首先要准备一个获取天气信息的API key ,在这里,笔者向大家推荐一个网址,比较实用 key