ARSCLib/src/main/java/com/reandroid/lib/arsc/value/ResValueBagItem.java
2021-11-14 22:53:01 +08:00

81 lines
2.0 KiB
Java

package com.reandroid.lib.arsc.value;
public class ResValueBagItem extends BaseResValue {
public ResValueBagItem() {
super(BYTES_COUNT);
setHeaderSize(BYTES_SIZE);
}
@Override
void setHeaderSize(short size) {
setShort(OFFSET_SIZE, size);
}
@Override
short getHeaderSize() {
return getShort(OFFSET_SIZE);
}
@Override
void setReserved(byte reserved) {
setByte(OFFSET_RESERVED, reserved);
}
@Override
byte getReserved() {
return getByte(OFFSET_RESERVED);
}
public void setId(int id){
setInt(OFFSET_ID, id);
}
public int getId(){
return getInt(OFFSET_ID);
}
@Override
public void setType(byte type){
setByte(OFFSET_TYPE, type);
}
@Override
public byte getType(){
return getByte(OFFSET_TYPE);
}
@Override
public int getData(){
return getInt(OFFSET_DATA);
}
@Override
public void setData(int data){
setInt(OFFSET_DATA, data);
}
@Override
public String toString(){
StringBuilder builder=new StringBuilder();
builder.append(getClass().getSimpleName());
builder.append(" type=");
ValueType vt=getValueType();
if(vt!=null){
builder.append(vt.name());
}else {
builder.append("Unknown");
}
builder.append('(');
builder.append(String.format("0x%02x", getType()));
builder.append(") id=");
builder.append(String.format("0x%08x", getId()));
builder.append(", data=");
builder.append(String.format("0x%08x", getData()));
return builder.toString();
}
private static final int OFFSET_ID=0;
private static final int OFFSET_SIZE=4;
private static final int OFFSET_RESERVED=6;
private static final int OFFSET_TYPE=7;
private static final int OFFSET_DATA=8;
private static final int BYTES_COUNT=12;
private static final short BYTES_SIZE=0x08;
}