首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TranslationZ在安卓系统中到底做了什么?

TranslationZ在安卓系统中到底做了什么?
EN

Stack Overflow用户
提问于 2015-04-24 21:03:32
回答 2查看 21.6K关注 0票数 15

嗨,我正在开发android应用程序,在其中我试图实现新的材料设计功能。我尝试同时应用elevation属性和TranslationZ属性,但它不起作用。

代码语言:javascript
运行
复制
<Button
    android:id="@+id/button1"
    style="@style/ButtonStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:text="Name" />  

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <solid android:color="#0073ff" />
    <corners android:radius="16dp" />
</shape>

代码语言:javascript
运行
复制
<style name="ButtonStyle">
        <item name="android:elevation">8dp</item>
        <item name="android:translationZ">8dp</item>
        <item name="android:background">@drawable/file</item>
</style>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-24 22:37:58

TranslationZ是用于动画的动态属性。基本上,需要它来很好地处理海拔变化。当您按下按钮时,其标高保持不变,并且其translationZ处于动画状态。这样,视图始终知道原始高程值是什么,并且可以正确响应多个触摸事件。

内部Z=标高+ translationZ

票数 9
EN

Stack Overflow用户

发布于 2015-04-24 22:51:32

简单的解决方案

当更新样式时丢失触摸反馈&Z动画的问题来自于android:Widget.Material.Button,而不是在您的样式中扩展父。如果你这样做,你将不需要做任何手动动画或触摸反馈。只需覆盖您需要的内容!

Z-深度解释

根据文档,TranslationZ只是Z值的动态组件。这意味着,当您在Z轴上设置视图动画时(使用ViewPropertyAnimator等),动画状态将从Z值的静态分量开始elevation,并将在完整的Z值处结束,其中translation分量是两者之间的更改或增量。

Z=标高+ translationZ

要使用translationZ实现动画,您需要制作一个StateListAnimator。在您的特定情况下,因为您没有设置任何动画,所以为了将Z深度设置为Button,您只需要elevation

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29848276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档