com.android.ide.common.rendering.api.DeclareStyleableResourceValue Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of layoutlib-api Show documentation
Show all versions of layoutlib-api Show documentation
Library to use the rendering library for Android layouts: layoutlib
/*
* Copyright (C) 2011 The Android Open Source Project
*
* 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.android.ide.common.rendering.api;
import com.android.annotations.NonNull;
import com.android.resources.ResourceType;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* A Resource value representing a declare-styleable resource.
*
* {@link #getValue()} will return null, instead use {@link #getAllAttributes()} to
* get the list of attributes defined in the declare-styleable.
*/
public class DeclareStyleableResourceValue extends ResourceValue {
/** Used only for {@link #getAttributeValues(String)}, which is used only by old LayoutLibs. */
@Deprecated
private Map mAttrMap;
@NonNull
private List mAttrs = new ArrayList();
public DeclareStyleableResourceValue(@NonNull ResourceType type, @NonNull String name,
boolean isFramework) {
super(type, name, isFramework);
assert type == ResourceType.DECLARE_STYLEABLE;
}
/**
* Return the enum/flag integer value for a given attribute.
*
* @param name the name of the attribute
* @return the map of (name, integer) values.
* @deprecated the method doesn't respect namespaces and is only present for older versions
* of LayoutLibs.
*/
@Deprecated
public Map getAttributeValues(String name) {
if (mAttrMap == null && !mAttrs.isEmpty()) {
// Preserve insertion order. This order affects the int[] indices for styleables.
mAttrMap = new LinkedHashMap(mAttrs.size());
for (AttrResourceValue attr : mAttrs) {
mAttrMap.put(attr.getName(), attr);
}
}
if (mAttrMap != null) {
AttrResourceValue attr = mAttrMap.get(name);
if (attr != null) {
return attr.getAttributeValues();
}
}
return null;
}
@NonNull
public List getAllAttributes() {
return mAttrs;
}
public void addValue(@NonNull AttrResourceValue attr) {
assert attr.isFramework() || !isFramework()
: "Can't add non-framework attributes to framework resource.";
mAttrs.add(attr);
}
}