首页 > 代码库 > Android 5.0 android:elevation 如果给button设置效果
Android 5.0 android:elevation 如果给button设置效果
看到android5.0版本中提供了 elevation 的功能,我在SDK Manager 下载了 Android 5.0 例子代码,看了下 ElevationBasic 例子,展示了2个view对象,一个圆形一个矩形,圆形设置了 android:elevation = 30dp,具体例子如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <? 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 属性
如下代码
1 2 3 4 5 6 7 8 9 | < Button ... android:stateListAnimator = "@null" /> < Button ... android:stateListAnimator = "@anim/my_animator" /> |
默认的动画(animator)在button_state_list_anim_material.xml定义。这里是一个展示状态下不可用,按钮处于点击状态的例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <? 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人 整理发布,转载须标明出处。
该文章由 萌萌的IT人 整理发布,转载须标明出处。
Android 5.0 android:elevation 如果给button设置效果
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。