我有一个CustomView工作在Lollipop前,现在我尝试申请android:elevation和android:translateZLollipop设备,但似乎不起作用.
<com.example.CustomView
android:id="@+id/myview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:elevation="10dp">
</com.example.CustomView>
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
高程样式属性为Android 5.0+启用了框阴影.
我在这里做了一些不寻常的"升高",导致丑陋,可以在下面的截图中看到?另外,有没有办法定义阴影偏移?
模拟器运行6.0(> 5.0),所以这不是问题.我正在运行react-native 25.1.
"dependencies": {
"react": "^0.14.8",
"react-native": "^0.25.1",
"react-native-gcm-android": "^0.2.0",
"react-native-material-design": "^0.3.5",
"react-native-system-notification": "^0.1.10",
"react-redux": "^4.4.5",
"redux": "^3.5.2"
}
Run Code Online (Sandbox Code Playgroud)
这是我的渲染方法:
render() {
return (
<ListView
dataSource={alertData}
renderRow={(rowData) =>
<View style={style.cardContainer}>
<Text>{rowData.blah}</Text>
<Text>{"#" + rowData.foo}</Text>
<Text>{rowData.blah}</Text>
<Text>{rowData.foo}</Text>
<Text>{rowData.baz}</Text>
</View>
}
/>
);
}
Run Code Online (Sandbox Code Playgroud)
风格宣言:
var style = StyleSheet.create({
cardContainer : {
elevation : 3,
flex : 1,
margin : 10,
padding : 10,
borderWidth : 2,
borderColor : beeStyles.colors.lightGray
}
});
Run Code Online (Sandbox Code Playgroud)
以某种方式导致这个......
Lollipop具有"View"类的所有新功能.它们之间究竟有什么区别,为什么我们需要这么多功能呢?
我已经阅读了文档,我想了解(或更好地理解)每个文档的差异和需求,以便我知道何时使用它们:
基础z视图的深度
必须是维值,这是一个附加单位的浮点数,例如"14.5sp".可用单位是:px(像素),dp(与密度无关的像素),sp(基于首选字体大小的缩放像素),in(英寸),mm(毫米).
这也可能是对包含此类型值的资源(格式为"@ [package:] type:name")或主题属性(格式为"?[package:] [type:] name")的引用.
这对应于全局属性资源符号高程.
那么它是从它开始的呢?
在视图的z中翻译.此值将添加到其高程.
必须是维值,这是一个附加单位的浮点数,例如"14.5sp".可用单位是:px(像素),dp(与密度无关的像素),sp(基于首选字体大小的缩放像素),in(英寸),mm(毫米).
这也可能是对包含此类型值的资源(格式为"@ [package:] type:name")或主题属性(格式为"?[package:] [type:] name")的引用.
这对应于全局属性资源符号translationZ.
除了"提升"之外还添加了这个?为什么需要?
设置此视图的可视z位置(以像素为单位).这相当于将translationZ属性设置为传入的x值与当前提升属性之间的差值.
我根本不明白这个的解释.这会影响阴影吗?它是干什么用的?要处理2个视图具有相同的总elavation值的情况?动画此值是否会改变视图的显示方式?
我试图得到它所以我的listview项目被提升并显示一个投影.
这是我的列表视图项布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:translationZ="5dp"
android:cropToPadding="false">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView4"
android:background="@color/background_white"
android:layout_alignBottom="@+id/PostUpvote"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:translationZ="2dp"
/>
Run Code Online (Sandbox Code Playgroud)
这是我的ListView布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_gravity="center_horizontal"
android:background="@color/background_white"
android:dividerHeight="10sp"
android:translationZ="2dp"/>
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
我使用下面的代码绘制到位图/画布的视图.
Bitmap bitmap = Bitmap.createBitmap(
viewGroup.getWidth (), viewGroup.getHeight (), Bitmap.Config.ARGB_8888);
viewGroup.draw(new Canvas(bitmap));
Run Code Online (Sandbox Code Playgroud)
它工作得很好,有一个小问题:它不会绘制高程阴影.我假设阴影不是在draw方法中绘制的.那么他们在哪里绘制,我怎样才能将它们转移到我的画布上?
在Appcompat v24.0.0中,在Activity可见之后导致阴影/高程渲染AppbarLayout.在阴影绘图中可以很容易地看到滞后AppbarLayout.
以前的Appcompat库版本中没有这种延迟.
使用Appcompat v24.0.0和Appcompat v23.4.0进行测试,在新版本中清晰显示阴影图.
我想将高程动画添加到我的中android.support.v7.widget.CardView,就像材质样式Button一样.我试过设置一个StateListAnimator:
android:stateListAnimator="@anim/selector_raise"
Run Code Online (Sandbox Code Playgroud)
它指向我的选择器res/anim:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:state_pressed="true">
<objectAnimator android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ" android:valueTo="@dimen/touch_raise"
android:valueType="floatType" />
</item>
<item>
<objectAnimator android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ" android:valueTo="0dp"
android:valueType="floatType" />
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
但是Android Studio给了我错误:
必须声明元素选择器
这样做的正确方法是什么?
今天我开发了我的第一个Android L应用程序,并阅读d.android.com/preview提示.他们说android:海拔会让我看到阴影.但看看这个:
<TextView
android:id="@+id/tvTest5"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_below="@id/btnTest1"
android:layout_toRightOf="@id/tvTest4"
android:layout_marginLeft="10dp"
android:background="#000000"
android:elevation="50dp"/>
Run Code Online (Sandbox Code Playgroud)
我的模拟器中没有看到任何阴影.我做错了什么还是模拟器车?我正在使用Android Studio
我有一个视图,我想使用 SVG/Vector 作为它的背景。所以它不是一个完美的方形、圆形或任何基本形状。我想要一个阴影来包围背景,但它不起作用。
我将设置高程,设置轮廓提供程序,甚至尝试将剪辑设置为填充,即使它正好在其布局的范围内。
<View
android:layout_width="200dp"
android:layout_height="300dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:outlineProvider="background"
android:background="@drawable/ic_bookmark_black_24dp"
android:elevation="5dp"/>
Run Code Online (Sandbox Code Playgroud)
(您可以使用可以从 Android Studio 导入的 Android 书签矢量资产自行测试)
仍然,没有阴影。我将背景更改为颜色的那一刻,它工作得很好