zoukankan      html  css  js  c++  java
  • Android开发工程师文集-1 小时学会各种Drawable

    前言

    大家好,我是 Vic,今天给大家带来Android开发工程师文集-1 小时学会各种Drawable的概述,希望你们喜欢

    Drawable介绍

    Drawable为抽象类,drawable与view有区别的地方,主要是体现事件和交互性上面。

    view是面向用户的,是可见的控件,能给它添加点击事件。drawable则相反,不能面向,也不可见,也不能添加点击事件。

    drawable有好多子类,drawable为抽象类,所以有很多子类来继承它。

    主要原理方法

    • draw()
    • setBounds()

    BitmapDrawable 巴特美drawable

    该子类为bitmap的包装,可以保持原图片大小,填充,拉伸。

    <bitmap
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_launcher"
     android:tileMode="mirror"//平铺
     android:antialias="true"//消除锯齿
     android:dither="true">
    </bitmap>
    

    LayerDrawable 勒儿drawable

    该子类就是来管理一组drawable的,第一张图片的放置,那么第二张图片会在第一张图片上,由此依次放置。

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
     <item
     android:top="40dp"
     android:left="40dp"
     android:src="@drawable/picture_1"
     android:gravity="center">
     </item>
     <item
     android:top="40dp"
     android:left="40dp"
     android:src="@drawable/picture_2"
     android:gravity="center">
     </item>
    </layer-list>
    

    StateListDrawable

    该类StateListDrawable根据不同状态提供不同图片。

    <?xml version="1.0" encoding="utr-8"?>
    <selector
     xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_focused="true" android:drawable="@drawable/botton_1"/>
     <item android:state_pressed="true" android:drawable="@drawable/botton_2"/>
     <item android:state_selected="true" android="@drawable/botton_3"/>
     <item android:drawable="@drawable/botton_4"/>
    </selector>
    

    LevelListDrawable

    该子类有不同的item -setlevel();

    <level-list
     xmlns:android="http://schemas.android.om/apk/res/android">
     <item
      android:drawable="@drawable/off"
      android:minLevel="5"
      android:maxLevel="10">
     </item>
     <item
      android:drawable="@drawable/on"
      android:minLevel="10"
      android:maxLevel="20">
     </item>
    </level-list>
    
    public void On(View v){
     iv.setImageLevel( //int );
    }
    

    TransitionDrawable --- transi tion drawable

    为LayerDrawable的子类,只有两张图片的变化,没有多个图片,LayerDrawable可以有多个item,而transitiondrawable只有两个item。

    <transition
     xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:drawable="@drawable/off">
     </item>
     <item android:drawable="@drawable/on">
     </item>
    </transition>
    
    public void On(View v){
     TransitionDrawable drawable=iv.getDrawable();
     //开启 startTransition();
     drawable.startTransition(2000);
    }
    public void Off(View v){
     TranstionDrawable drawable=iv.getDrawable();
     //关闭 reverseTransition();
     drawable.reverseTransition(2000);
    }
    

    InsertDrawable

    InsertDrawable表示嵌入图片==padding

    <inset 
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:drawable="@drawable/background"
     android:insetLeft="50dp"
     android:insetRight="50dp"
     android:insetTop="50dp"
     android:insetBottom="50dp">
    </inset>
    

    ClipDrawable 可累drawable

    该ClipDrawabel是一种裁剪的形式,如同进度条。

    <clip xmlns:android="http://schemas.android.com/apk/res/android"
     android:drawable="@drawable/picture"
     android:clipOrientation="horizontal"
     android:gravity="left"/>
    
    ClipDrawable drawable=iv.getDrawable();
    drawable.setLevel(5000);
    //范围0-10000;
    

    DIY的Drawable

    自己动手试试吧
    梳理:
    BitmapDrawable,
    LayerDrawable,
    StateListDreawable,
    LevelListDrawable,
    TransitionDrawable,
    InsertDrawable,
    ClipDrawable.

    总结

    • 本文讲了Android开发工程师文集-1 小时学会各种Drawable,如果您还有更好地理解,欢迎沟通
    • 定位:分享 Android&Java知识点,有兴趣可以继续关注
  • 相关阅读:
    hdu 4893 Wow! Such Sequence!(线段树)
    Leetcode Best Time to Buy and Sell Stock II
    Debian GNU Linux服务列表的获取、服务的关闭/开启、服务在启动时是否自己主动执行的生效/失效
    R语言中数据结构
    C#编写Windows服务程序 (服务端),client使用 消息队列 实现淘宝 订单全链路效果
    deep learning实践经验总结
    Java编程思想第四版 *第五章 个人练习
    CEPH OBJECTSTORE API介绍
    leetcode(58)-Range Sum Query
    Android百日程序:GridView实现相冊效果
  • 原文地址:https://www.cnblogs.com/dashucoding/p/11932656.html
Copyright © 2011-2022 走看看