Android 5.X新特性-视图和阴影

    Material Design的一个很重要的特点就是拟扁平化,通过使用Material Design中的阴影和光线,配合完美的动画效果,模拟出一个动感十足有美丽大胆的视觉效果。

1. 阴影效果

    以往的Android版本中,View通常只有两个属性--X和Y,而在Android 5.X中,Google为其增加了一个新的属性--Z,对应垂直上方向上的高度变化。在Android 5.X中,View的Z值由两部分构成,elevation和translationZ(它们都是Android 5.X新引入的属性)。elevation是静态的成员,translationZ可以在代码中使用来实现动画效果,它们的关系如下:

Z = elevation + translationZ

    我们通过在XMl布局中使用如下属性来设置View的高度。

android:elevation = ""


    

    效果如图:

Android 5.X新特性-视图和阴影_第1张图片

    仔细的看一下图片,会发现TextView背后有一部分阴影。
    同样,我们还可在使用Java代码来动态更改TextView的高度。

 view.setTranslationZ();

2. Tinting和Clipping

    Android 5.X 在对图像的操作上有了更多的功能。下面来看看Android 5.X 的两个操作图像的新功能--Tinting(着色)和Clipping(裁剪)。

(1). Tinting(着色)

    Tint的使用非常的简单,只要在XML代码中配置好Tint和TintMode就可以了。



    
    
    
    
    


    效果如图:


Android 5.X新特性-视图和阴影_第2张图片

(2). Cliping(裁剪)

    Clipping可以让我们改变一个视图的外形。要使用Clipping,首先需要使用ViewOutlineProvider来修改outline,然后通过setOutlineProvider将outline作用到视图上去




    

    

public class MainActivity extends AppCompatActivity {
    private TextView mTextView1 = null;
    private TextView mTextView2 = null;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView1 = (TextView) findViewById(R.id.id_textView1);
        mTextView2 = (TextView) findViewById(R.id.id_textView2);
        ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() {
            @Override
            public void getOutline(View view, Outline outline) {
                //裁剪为圆角矩形
                outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 30);
            }
        };
        ViewOutlineProvider viewOutlineProvider1 = new ViewOutlineProvider() {
            @Override
            public void getOutline(View view, Outline outline) {
                //裁剪为圆形
                outline.setOval(0, 0, view.getWidth(), view.getHeight());
            }
        };
        mTextView1.setOutlineProvider(viewOutlineProvider);
        mTextView2.setOutlineProvider(viewOutlineProvider1);
    }
}

    效果如图:


Android 5.X新特性-视图和阴影_第3张图片

    注意一下,如果使用如上方法不能成功裁剪的话,试着把min api改为21及其以上,这样再尝试一下

你可能感兴趣的:(Android 5.X新特性-视图和阴影)