我的Android成长之路(6)----利用elevation设置控件的高度(不是height)

ANDROID L——Material Design详解(视图和阴影) Android L特性——Material Desgin详细介绍(视图和阴影)。详解视图Elevation,阴影,轮廓,Drawable Tinting,Clipping Views 阅读详情

Android L:


Google已经确认Android L就是Android Lollipop(5.0)。


Google之前就已经提前推出了Android L Developer Preview(开发者预览版)来帮助开发者更快的了解Android特性,而不久前也推出了64位的模拟器镜像,而且首次搭载Android L系统的Nexus 6和 Nexus 9也即将上市。

相信Android L正式版离我们也不远了,所以是时候开始学习Android L了!


关于Android L如何配置模拟器和创建项目,如果大家有兴趣的话可以看看我之前的一篇文章:

Android L——模拟器配置及创建项目





Material Design:


Material Design是Google推出的一个全新的设计语言,它的特点就是拟物扁平化。

Material Design包含了很多内容,我大致把它分为四部分:

主题和布局——ANDROID L——Material Design详解(主题和布局)

视图和阴影——ANDROID L——Material Design详解(视图和阴影)

UI控件——ANDROID L——Material Design详解(UI控件)

动画——ANDROID L——Material Design详解(动画篇)


今天就先来说说第二部分——Material视图和阴影




视图和阴影

View的大小位置都是通过x,y确定的,而现在有了z轴的概念,而这个z值就是View的高度(elevation),而高度决定了阴影(shadow)的大小。

View Elevation(视图高度)

View的z值由两部分组成,elevation和translationZ(它们都是Android L新引入的属性)。

eleavation是静态的成员,translationZ是用来做动画。

Z = elevation + translationZ


在layout中使用 android:elevation属性去定义 

在代码中使用 View.setElevation 方法去定义 

设置视图的translation,可以使用View.setTranslationZ方法 

新的ViewPropertyAnimator.z和ViewPropertyAnimator.translationZ方法可以设置视图的elevation值


新的属性值:translationZ允许你创建一个动画暂时的反应出View的高度值(elevation)变化。

这对于响应触摸手势很有用处,请看下面代码(官方Demo中的代码):

     int action = motionEvent.getActionMasked();  
                    /* Raise view on ACTION_DOWN and lower it on ACTION_UP. */  
                    switch (action) {  
                        case MotionEvent.ACTION_DOWN:  
                            Log.d(TAG, "ACTION_DOWN on view.");  
                            view.setTranslationZ(120);  
                            break;  
                        case MotionEvent.ACTION_UP:  
                            Log.d(TAG, "ACTION_UP on view.");  
                            view.setTranslationZ(0);  
                            break;  
                        default:  
                            return false;  
                    }  
一个简单触摸监听,在点击和抬起的时候分别设置translationZ的值,效果如下图所示:

     

Shadows and Outlines(阴影和轮廓)

视图的背景边界决定了默认的阴影形状。轮廓(Outlines)代表了图形对象的外形状,并确定了对于触摸反馈的波纹区域。


在Android L中设置一个阴影很简单,只需要两点:

1.设置eleavation值

2.添加一个背景或者outline


可以在xml中通过定义一个背景来设置outline:

     <TextView  
        android:id="@+id/myview"  
        ...  
        android:elevation="2dp"  
        android:background="@drawable/myrect" />  
     <!-- res/drawable/myrect.xml -->  
    <shape xmlns:android="http://schemas.android.com/apk/res/android"  
           android:shape="rectangle">  
        <solid android:color="#42000000" />  
        <corners android:radius="5dp" />  
    </shape>  


也可以通过代码来创建一个outline:

 /* Get the size of the shape from resources. */  
int shapeSize = getResources().getDimensionPixelSize(R.dimen.shape_size);  
  
/* Create a circular outline. */  
mOutlineCircle = new Outline();  
mOutlineCircle.setRoundRect(0, 0, shapeSize, shapeSize, shapeSize / 2);  
  
/* Create a rectangular outline. */  
mOutlineRect = new Outline();  
mOutlineRect.setRoundRect(0, 0, shapeSize, shapeSize, shapeSize / 10); 

给视图设置一个outline(如果为了防止一个视图产生阴影可以设置outline为null):

  1. floatingShape.setOutline(mOutlineCircle);  

上面的方法在Android L5.0正式版中已经被替换,下面我再介绍以下Android L5.0设置outline的方法:

    ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() {  
        @Override  
        public void getOutline(View view, Outline outline) {  
            int size = getResources().getDimensionPixelSize(R.dimen.fab_size);  
            outline.setOval(0, 0, size, size);  
        }  
    };  
    fab.setOutlineProvider(viewOutlineProvider);  



下图是使用不同eleavation值产生的阴影效果:


下图是不同背景/轮廓产生的阴影和拖拽效果:

    


Drawable Tinting(着色)

对于Android L还有一个独特的特点就是现在可以定义图片的alpha遮罩,并且可以轻松的使用android:tint属性去调整色调。


下面是一个使用tint属性给背景调整不同颜色的例子:

     <LinearLayout  
        android:orientation="horizontal"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_gravity="center_horizontal">  
        <ImageView  
            ...  
            android:src="@drawable/xamarin_white"  
            android:background="@drawable/mycircle"/>  
        <ImageView  
            ...  
            android:src="@drawable/xamarin_white"  
            android:background="@drawable/mycircle"  
            android:tint="#2C3E50"/>  
        <ImageView  
            ...  
            android:src="@drawable/xamarin_white"  
            android:background="@drawable/mycircle"  
            android:tint="#B4BCBC"/>  
    </LinearLayout>  

效果图:






Clipping Views(裁剪视图)


可以使用View.setClipToOutline方法去剪切一个视图的outline区域。

只有rectangle,circle, 和round rectangle outlines支持裁剪(Outline.canClip方法用来判断是否可以裁剪)


为了裁剪一个可绘制的视图形状,需要先设置一个outline然后调用View.setClipToOutline方法:

  1. floatingShape.setClipToOutline(true);  

下面请看一个使用裁剪的例子:

     int margin = Math.min(clippedView.getWidth(), clippedView.getHeight()) / 10;  
    Outline mClip = new Outline();  
    mClip.setRoundRect(margin, margin, clippedView.getWidth() - margin,  
            clippedView.getHeight() - margin, margin / 2);  
    /* Sets the Outline of the View. */  
    clippedView.setOutline(mClip);  
    /* Enables clipping on the View. */  
    clippedView.setClipToOutline(true);  
首先创建一个轮廓,给轮廓设置区域大小,添加轮廓到视图上,确认裁剪,效果图如下:

     

因为裁剪视图是一个很耗资源的操作,所以当裁剪一个视图时不要添加动画(为了达到这个效果可以使用Reveal Effect动画,动画篇会介绍)。

 

 

 

总结:

我将Material Design分为如下四部分:

主题和布局——ANDROID L——Material Design详解(主题和布局)

视图和阴影——ANDROID L——Material Design详解(视图和阴影)

UI控件——ANDROID L——Material Design详解(UI控件)

动画——ANDROID L——Material Design详解(动画篇)




本文的视图和阴影非常重要,因为在以后Android L的开发中会经常用到。

当我把Android L所有特性介绍之后就会着手开始写实例Demo了,配合实例Demo相信会更容易理解。


转载请注明本文出自大苞米的博客(http://blog.youkuaiyun.com/a396901990),谢谢支持!


Android之elevation实现阴影效果 1 需求 需要控件实现阴影效果 2 实现 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:b... 阅读详情

相关推荐

Android设置控件阴影的三种方法

本文实例为大家分享了Android设置控件阴影的方法,供大家参考,具体内容如下 第一种方式:elevation View的大小位置都是通过x,y确定的,而现在有了z轴的概念,而这个z值就是View的高度(elevation),而高度决定了阴影(shadow)的大小。 View Elevation(视图高度) View的z值由两部分组成,elevation和translationZ(它们都是Android L新引入的属性)。 eleavation是静态的成员,translationZ是用来做动画。 Z = elevation + translationZ 在layout中使用* andr

android:elevation属性,控制View底部渐变阴影

android:elevation属性,控制View底部渐变阴影android:elevation这一属性,可以控制View底部渐变阴影,给一个View在其底部增加一定的灰度渐变阴影效果,如图:上图是一个简单的TextView,TextView底部阴影渐变。实现代码通过配置elevation实现: &lt;LinearLayout android:layout_width...

Zhang Phil 1万+

PostgreSQL数据库全攻略:从入门到精通

本文是一份PostgreSQL数据库综合指南,涵盖安装配置、基础操作和高级管理。主要内容包括:1) PostgreSQL简介与各平台安装方法;2) 数据库基本操作,如创建数据库/表、CRUD操作、用户权限管理;3) 高级功能包括索引优化、事务控制、视图、存储过程、触发器和扩展模块;4) 数据库管理维护,涉及配置调优、备份恢复、性能监控和日常维护;5) 安全设置与高可用方案。指南提供了从入门到进阶的实用知识,强调结合官方文档进行深入学习,帮助用户高效使用这一功能强大的开源关系型数据库系统。

索大神的博客 1969

Android Elevation

简介:https://www.jianshu.com/p/363075694482 在Android API21,新添加了一个属性:android:elevation,用以在xml定义View的深度(高度),也即z方向的值。 除了elevation之外,类似于已有的translationX、translationY,也相对应地新增了一个translationZ,用以在属性动画中动态改变Z值(使用View.setTranslationZ()) Z = elevation + translation.

az44yao的专栏 2506

详解相机的sensor工作原理

目录sensor成像原理拜尔马赛克变换(BAYER DEMOSAICING)维伦阵列摩尔纹 sensor成像原理 相机或摄像头使用数百万个微小的光腔(感光元件)来记录图像。 成像时,sensor将镜头投射来的光子储存为模拟电信号。 曝光完成后,相机关闭这些光腔(感光元件),然后通过测量模拟电信号的强度来评估每个腔中有多少光子掉入来计算数字电信号的数值。 然后模拟电信号转换为数字电信号,数字电信号的数值由位深度决定(RGB的位深度)。 最后,根据正在记录的文件格式(8位JPEG位0-255),可能会再次降低

路人coder 2万+

Debian下Rust环境极速安装指南:国内镜像+避坑配置(附清华/中科大源对比)

本文详细介绍了在Debian系统上快速安装和配置Rust开发环境的完整指南。针对国内网络环境,重点对比评测了清华大学、中国科学技术大学等主流镜像源,提供了详细的安装配置步骤、Cargo优化技巧以及常见问题排查方案,帮助开发者显著提升依赖下载和编译效率。

s8t9u0v1w的博客 1161

React Native鸿蒙适配:四个核心样式属性如何精准映射ArkUI

跨平台开发已成为移动应用降本增效的主流路径,React Native作为JavaScript生态的代表性框架,其布局与样式体系在鸿蒙系统上的适配并非简单翻译,而是底层渲染链路的重新映射。理解flex、borderRadius、padding、elevation这些高频样式属性在ArkUI中的对应关系,是保障多端体验一致的关键。通过Yoga引擎导出的布局树,鸿蒙适配层将RN的布局意图按需转换为Row、Column或Flex容器及layoutWeight等原生参数,同时处理圆角裁剪、盒模型边界与阴影层级等视觉差

weixin_31556767的博客 265

(全网最详细教程)康耐视读码器(以DM260S为例子)详细实用步骤

(全网最详细教程)康耐视读码器(以DM260S为例子)详细实用步骤

视觉人机器视觉的博客 7465

flutter学习笔记

1.跨平台移动UI框架2.与现有的代码一起工作(可以直接嵌入到原生代码中或直接把原生代码嵌入到自己的代码中运行)3. 完全免费、开源。

haoxuhong的博客 8245

S7-200 SMART PLC 子程序功能块(阀门控制)

由于S7-200 SMARTPLC的子程序种种功能、容量限制,有时想实现多次调用的子程序可能并不是太容易,这篇博客还是给出一些推荐写法,供大家参看。

RXXW_Dor的博客 8068

医学图像处理实战:利用OpenSlide解析病理SVS切片的完整解决方案

本文介绍了使用openslide处理病理SVS切片的完整流程,从基础安装到科研应用。主要内容包括:1)SVS切片特点及openslide工具简介;2)环境配置与软件安装;3)基础操作:读取切片、查看信息、可视化不同层级图像;4)进阶操作:坐标裁剪与批量处理;5)科研方向拓展:结合AI模型进行病理分割分类、量化分析及可视化报告。教程提供了完整的代码示例,帮助毕业设计学生快速掌握病理图像分析的核心技能。

m0_71589036的博客 310

Android 设置控件阴影的三种方式

第一种方式:elevationView的大小位置都是通过x,y确定的,而现在有了z轴的概念,而这个z值就是View的高度(elevation),而高度决定了阴影(shadow)的大小。View Elevation(视图高度)View的z值由两部分组成,elevation和translationZ(它们都是Android L新引入的属性)。 eleavation是静态的成员,translationZ

蛋蛋的博客 1万+

风电功率预测项目技术白皮书:短期、超短期、中长期全尺度算法详解与工程落地

聚焦风电功率预测的时间尺度与算法:短期(0~72h)以XGBoost/LightGBM/CatBoost及深度学习为主,超短期(0~4h)采用ARMA+LSTM,中长期用LightGBM等,并涵盖概率预测、多气象源融合、AI大模型+物理模型混合策略、极端天气应对及工程运维要点。

算法工程师 324

Android设置android:elevation无效?那是你的姿势不对!

因为本人开发的一个app是套壳应用,所以MainActivity可能会被多个product用到,最开始在某一个product开发UI的时候用到了android:elevation这个属性,能够营造出阴影的效果,没有任何问题。过了一段时间另一个product也需要用到MainActivity,因为是套的是webview加载H5页面,H5开发小伙伴用到了一个绘制图表的功能,但是最终运行到app的时候发现图表无法正常展示,当时查了半天这个问题是因为Activity开启了硬件加速,当把MainActivity的an

我是紫色紫色的专栏 5万+

mabl:AI原生测试自动化平台的基础使用

mabl是一个基于人工智能和机器学习的云原生测试自动化平台。它通过使用先进的技术,如机器学习,自动创建和执行测试,自动分析测试结果,并根据需求的变化自动适配和维护测试。这样的自动化过程极大地提高了软件测试的效率和准确性。mabl的口号是 “You write code, mabl tests”,意味着开发者只需关注编写代码,而测试工作则可以交给mabl来完成。mabl的平台支持多种测试类型,包括 Web、App、Api、可访问性和性能测试,使得团队能够更快速、更有信心地发布软件。

blues_C的博客 3657

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Android5.0 elevation属性

android5.0 引入了Z轴的概念,于是就有着这种风格,也就是目前比较火的Material Design1、 android:elevation 设置该组件“浮”起来的高度,通过设置该属性可以让该组件呈现3D效果。2、android:translationZ 设置该组件在Z方向(垂直屏幕方向)上的位移。对应的java方法:setElevation(float) setTranslationZ

好好学习 天天向上 3260

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

android:elevation=“10dp“

是用来设置 Android 视图(View)的 Z 轴高度的属性。具体来说,它会使得视图在 Z 轴方向上相对于其他视图更高,从而产生阴影效果,使得该视图看起来像是浮在其他视图之上。在旧版本的 Android 中,这个属性不会产生任何效果,但也不会导致错误。属性的值通常是以像素(dp 或 dip)为单位的浮点数,表示视图的高度。较大的值会产生更明显的阴影效果,使得视图看起来更加突出。在这个示例中,按钮视图被设置了一个 10dp 的高度,因此它会在 Z 轴上相对于其他视图更高,产生阴影效果。

chezabo6116的博客 1180

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android:elevation 属性, 5.0以上才可以用

android 官方api描述如下: setElevation void setElevation (View view, float elevation) Sets the base elevation of this view, in pixels. Parameters view Vie

shi_xin的专栏 4498

xe android 阴影,setElevation不显示阴影

我无法用setElevation绘制阴影。我不想使用图形来执行此操作。这是代码:这是父母。Page.xmlsetElevation不显示阴影android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="@color/ba...

weixin_29378153的博客 998

【Android】保留elevation层级效果,舍弃阴影效果

当view的elevation高于其它view时,它将显示在最上方,并产生阴影效果。view的高度阴影,通过outlineProvider来提供的。我们只要将其置空,便可以关闭阴影效果,但层级效果仍然在。该属性可以设置View在父容器中的层级,即z属性。elevation是高度,海拔的意思。

天天向上 Up Up Up (*^▽^*) 1024

Android笔记

1.在线程中,当执行方法后如果有阻塞,就会阻塞当前子线程,此时,我们便可以设置个定时器,比如如果阻塞了十秒,可以默认为已经无法成功了,然后在定时器中进行一些失败后的操作:(如HttpClient的execute,就会阻塞) private void setTimerTask() { timer = new Timer(); timer.schedule(ne...

麦田 1012

Android原生实现控件阴影方案(API28及以上)

*** 阴影相关*//***/// 重点就是利用下面的属性:// 拔高Z轴可以通过控制elevation和translationZ。区别:// elevation:一般是写在 xml 文件中做静态配置,单纯的控制Z轴;// translateZ:除了控制Z轴,还可以用来控制动画效果,比如我们点击按钮时希望它有一个弹起的效果。// 由于我们只需要实现阴影效果,所以我们只关注elevation即可。// 表示光源的颜色。

jxq1994的博客 1714

【译】彻底理解 Android 中的阴影

如果我们想创造更好的 Android App,我相信我们需要遵循 Material Design 的设计规范。一般而言,Material Design 是一个包含光线,材质和投影的三维环境。如果我们想要在 App 的开发过程中,跟随 Material Design 的设计原则,那么理解 光 与 阴影 就显得尤为重要了。 我将尝试解释本文中的以下主题。 Android 中的 3D 深度(Dept...

weixin_34327761的博客 253

【Android】你可能还不知道的elevation、以及Z值等

Android你可能还不知道的elevation以及Z值等 elevation以及Z值是什么 有什么用处呢 影响View的阴影 影响View相互阻挡顺序 还有CardView

张新强的优快云博客 1万+
上一篇: 我的Android成长之路(5)----Xutils3的使用
下一篇: 我的Android成长之路(7)----ListView的一些属性用途
AImmortaI
博客等级 码龄11年 48粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值