Enum&RGB

枚举

public enum EnumBean {
//这些类别每个都是一个该EnumBean的类、也就是多个EnumBean的对象、只是这些枚举定义的方式有点不同、类似于EnumBean enumbean;只不过枚举调用是直接可以点出来的,也就是类似于static的
    TAB01(0, "随性一笔"),
    TAB02(1, "SeekBar"),
    TAB03(2, "PopWindow-List"),
    TAB04(3, "gson/fastJson-特殊字符转译"),
    TAB05(4, "Rxjava-请求示例"),

    TAB06(5, "Pic选择"),

    TAB07(6, "DialogFragment"),

    TAB08(7, "跳转App"),

    TAB09(8, "事件分析"),

    TAB10(9, "重定项-URL2JS"),

    TAB11(10, "方法作用域");

        private String enumName;
    private int enumPosition;

    EnumBean(int position, String tab01) {
    enumName = tab01;
    enumPosition = position;
    }

    @Override
    public String toString() {
        EnumBean[] values = EnumBean.values();
        for (EnumBean enumBean : values) {
            if (enumBean.getEnumPosition() == 10) {
                return enumBean.getEnumName();
            }
        }
        return "";
    }


    public String getEnumName() {
        return enumName;
    }

    public void setEnumName(String enumName) {
        this.enumName = enumName;
    }

    public int getEnumPosition() {
        return enumPosition;
    }

    public void setEnumPosition(int enumPosition) {
        this.enumPosition = enumPosition;
    }

}
  • 枚举唯一和对象不同的一点是存储的方式:其就类似于对象可以设置属性、但是其也可以拿来比较,例如switch比对

  • switch语句只支持int,char,enum类型–所以这点尤为重要

    enum Signal {  
        GREEN, YELLOW, RED  
    }  
    public class TrafficLight {  
        Signal color = Signal.RED;  
        public void change() {  
            switch (color) {  
            case RED:  
                color = Signal.GREEN;  
                break;  
            case YELLOW:  
                color = Signal.RED;  
                break;  
            case GREEN:  
                color = Signal.YELLOW;  
                break;  
            }  
        }  
    }  
    
  • 直接获取对应的EnumBean的对象
    EnumBean tab01 = EnumBean.TAB01;

  • 通过对应的对象命名获取对应的EnumBean的对象
    EnumBean enumBean = EnumBean.valueOf("TAB01");

  • 获取EnumBean的对象集合
    EnumBean[] values = EnumBean.values();

RGB

public static final Bitmap.Config ALPHA_8
public static final Bitmap.Config ARGB_4444
public static final Bitmap.Config ARGB_8888
public static final Bitmap.Config RGB_565
  • 其实这都是色彩的存储方法:我们知道ARGB指的是一种色彩模式,里面A代表Alpha,R表示red,G表示green,B表示blue,其实所有的可见色都是右红绿蓝组成的,所以红绿蓝又称为三原色,每个原色都存储着所表示颜色的信息值
  • 说白了其实就是:

    ALPHA_8就是Alpha由8位组成
    
    ARGB_4444就是由4个4位组成即16位,
    
    ARGB_8888就是由4个8位组成即32位,
    
    RGB_565就是R为5位,G为6位,B为5位共16位        
    
  • 由此可见:

    ALPHA_8 代表8位Alpha位图
    
    ARGB_4444 代表16位ARGB位图
    
    ARGB_8888 代表24位ARGB位图
    
    RGB_565 代表16位RGB位图
    

位图位数越高代表其可以存储的颜色信息越多,当然图像也就越逼真。

ps: 这里像素点大小(每个像素点占用内存的大小)以 4B 来计算是因为,当没有特别指定时,系统默认为 ARGB_8888 作为像素点的数据格式,其他的格式如下:

    ALPHA_8 -- (1B)
    RGB_565 -- (2B)
    ARGB_4444 -- (2B)
    ARGB_8888 -- (4B)
    RGBA_F16 -- (8B)
  • 正常的颜色FFEECC:其也是由 FF\EE\CC :256、256、256 所以正常是44 44 4*4等24位二进制数值组成

  • 一切都源于二进制最后都会归于二进制:Android 内部资源文件id也是内部对应R对象内部的二进制值转换成16进制存储,,内部规则也是根据二进制转换;

参考

图片压缩质量参数Bitmap.Config RGB_565

Java枚举7种用法