/*
* Copyright (C) 2014 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 android.content.res;

import android.content.pm.ActivityInfo.Config;

A cache class that can provide new instances of a particular resource which may change depending on the current Theme or Configuration.

A constant state should be able to return a bitmask of changing configurations, which identifies the type of configuration changes that may invalidate this resource. These configuration changes can be obtained from TypedValue. Entities such as Animator also provide a changing configuration method to include their dependencies (e.g. An AnimatorSet's changing configuration is the union of the changing configurations of each Animator in the set)

@hide
/** * A cache class that can provide new instances of a particular resource which may change * depending on the current {@link Resources.Theme} or {@link Configuration}. * <p> * A constant state should be able to return a bitmask of changing configurations, which * identifies the type of configuration changes that may invalidate this resource. These * configuration changes can be obtained from {@link android.util.TypedValue}. Entities such as * {@link android.animation.Animator} also provide a changing configuration method to include * their dependencies (e.g. An AnimatorSet's changing configuration is the union of the * changing configurations of each Animator in the set) * @hide */
abstract public class ConstantState<T> {
Return a bit mask of configuration changes that will impact this resource (and thus require completely reloading it).
/** * Return a bit mask of configuration changes that will impact * this resource (and thus require completely reloading it). */
abstract public @Config int getChangingConfigurations();
Create a new instance without supplying resources the caller is running in.
/** * Create a new instance without supplying resources the caller * is running in. */
public abstract T newInstance();
Create a new instance from its constant state. This must be implemented for resources that change based on the target density of their caller (that is depending on whether it is in compatibility mode).
/** * Create a new instance from its constant state. This * must be implemented for resources that change based on the target * density of their caller (that is depending on whether it is * in compatibility mode). */
public T newInstance(Resources res) { return newInstance(); }
Create a new instance from its constant state. This must be implemented for resources that can have a theme applied.
/** * Create a new instance from its constant state. This must be * implemented for resources that can have a theme applied. */
public T newInstance(Resources res, Resources.Theme theme) { return newInstance(res); } }