From 80309a32c781e2850b5650fe80787fbca2880fb1 Mon Sep 17 00:00:00 2001 From: REAndroid Date: Mon, 27 Mar 2023 07:44:14 -0400 Subject: [PATCH] relate ResValueMap and ResXmlAttribute with AttributeValue --- .../arsc/chunk/xml/ResXmlAttribute.java | 5 ++++- .../reandroid/arsc/value/AttributeValue.java | 21 +++++++++++++++++++ .../com/reandroid/arsc/value/ResValueMap.java | 10 ++++++++- 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/reandroid/arsc/value/AttributeValue.java diff --git a/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlAttribute.java b/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlAttribute.java index 4627e71..d5bacdc 100755 --- a/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlAttribute.java +++ b/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlAttribute.java @@ -21,6 +21,7 @@ import com.reandroid.arsc.item.*; import com.reandroid.arsc.pool.ResXmlStringPool; import com.reandroid.arsc.pool.StringPool; + import com.reandroid.arsc.value.AttributeValue; import com.reandroid.arsc.value.ValueItem; import com.reandroid.arsc.value.ValueType; import com.reandroid.common.EntryStore; @@ -31,7 +32,7 @@ import java.io.IOException; import java.util.Objects; - public class ResXmlAttribute extends ValueItem implements Comparable{ + public class ResXmlAttribute extends ValueItem implements AttributeValue, Comparable{ private ReferenceItem mNSReference; private ReferenceItem mNameReference; private ReferenceItem mNameIdReference; @@ -79,6 +80,7 @@ public String getValueString(){ return getString(getValueStringReference()); } + @Override public int getNameResourceID(){ ResXmlID xmlID = getResXmlID(); if(xmlID != null){ @@ -86,6 +88,7 @@ } return 0; } + @Override public void setNameResourceID(int resourceId){ ResXmlIDMap xmlIDMap=getResXmlIDMap(); if(xmlIDMap==null){ diff --git a/src/main/java/com/reandroid/arsc/value/AttributeValue.java b/src/main/java/com/reandroid/arsc/value/AttributeValue.java new file mode 100644 index 0000000..294a370 --- /dev/null +++ b/src/main/java/com/reandroid/arsc/value/AttributeValue.java @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2022 github.com/REAndroid + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.reandroid.arsc.value; + +public interface AttributeValue extends Value{ + int getNameResourceID(); + void setNameResourceID(int resourceId); +} diff --git a/src/main/java/com/reandroid/arsc/value/ResValueMap.java b/src/main/java/com/reandroid/arsc/value/ResValueMap.java index 68f02e7..a6a404d 100755 --- a/src/main/java/com/reandroid/arsc/value/ResValueMap.java +++ b/src/main/java/com/reandroid/arsc/value/ResValueMap.java @@ -19,7 +19,7 @@ import com.reandroid.arsc.base.Block; import com.reandroid.arsc.chunk.PackageBlock; import com.reandroid.json.JSONObject; -public class ResValueMap extends ValueItem{ +public class ResValueMap extends ValueItem implements AttributeValue{ public ResValueMap() { super(12, OFFSET_SIZE); @@ -55,6 +55,14 @@ public class ResValueMap extends ValueItem{ putInteger(getBytesInternal(), OFFSET_NAME, name); } + @Override + public int getNameResourceID() { + return getName(); + } + @Override + public void setNameResourceID(int resourceId){ + setName(resourceId); + } @Override public JSONObject toJson() {