下面列出了android.util.SparseArray#clone ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Sets the device/profile owner information.
*/
public synchronized void setDeviceAndProfileOwnerPackages(
int deviceOwnerUserId, String deviceOwnerPackage,
SparseArray<String> profileOwnerPackages) {
mDeviceOwnerUserId = deviceOwnerUserId;
mDeviceOwnerPackage =
(deviceOwnerUserId == UserHandle.USER_NULL) ? null : deviceOwnerPackage;
mProfileOwnerPackages = (profileOwnerPackages == null) ? null
: profileOwnerPackages.clone();
}
/**
* register a new device id or add feature to an already defined device
* <p>the change will affect only the node discover after this call</p>
* @param deviceId device type that will use the feature, it can be a new device id
* @param features array of feature that we will add, the index of the feature will be used
* as feature mask. the feature mask must have only one bit to 1
* @throws InvalidFeatureBitMaskException throw when a feature is a position that is not a
* power of 2
*/
public static void addFeatureToNode(byte deviceId,SparseArray<Class<? extends Feature>> features)
throws InvalidFeatureBitMaskException {
SparseArray<Class<? extends Feature>> updateMe;
if(!sFeatureMapDecoder.containsKey(deviceId)){
updateMe = BLENodeDefines.FeatureCharacteristics.DEFAULT_MASK_TO_FEATURE.clone();
sFeatureMapDecoder.put(deviceId,updateMe);
}else{
updateMe = sFeatureMapDecoder.get(deviceId);
}//if-else
SparseArray<Class<? extends Feature>> addMe = features.clone();
long mask=1;
//we test all the 32bit of the feature mask
for(int i=0; i<32; i++ ){
Class<? extends Feature> featureClass = addMe.get((int)mask);
if (featureClass != null) {
updateMe.append((int) mask, featureClass);
addMe.remove((int)mask);
}
mask=mask<<1;
}//for
if(addMe.size()!=0)
throw new InvalidFeatureBitMaskException("Not all elements have a single bit in " +
"as key");
}
DrawableContainerState(DrawableContainerState orig, DrawableContainerCompat owner,
Resources res) {
mOwner = owner;
mSourceRes = res != null ? res : (orig != null ? orig.mSourceRes : null);
mDensity = resolveDensity(res, orig != null ? orig.mDensity : 0);
if (orig != null) {
mChangingConfigurations = orig.mChangingConfigurations;
mChildrenChangingConfigurations = orig.mChildrenChangingConfigurations;
mCheckedConstantState = true;
mCanConstantState = true;
mVariablePadding = orig.mVariablePadding;
mConstantSize = orig.mConstantSize;
mDither = orig.mDither;
mMutated = orig.mMutated;
mLayoutDirection = orig.mLayoutDirection;
mEnterFadeDuration = orig.mEnterFadeDuration;
mExitFadeDuration = orig.mExitFadeDuration;
mAutoMirrored = orig.mAutoMirrored;
mColorFilter = orig.mColorFilter;
mHasColorFilter = orig.mHasColorFilter;
mTintList = orig.mTintList;
mTintMode = orig.mTintMode;
mHasTintList = orig.mHasTintList;
mHasTintMode = orig.mHasTintMode;
if (orig.mDensity == mDensity) {
if (orig.mCheckedPadding) {
mConstantPadding = new Rect(orig.mConstantPadding);
mCheckedPadding = true;
}
if (orig.mCheckedConstantSize) {
mConstantWidth = orig.mConstantWidth;
mConstantHeight = orig.mConstantHeight;
mConstantMinimumWidth = orig.mConstantMinimumWidth;
mConstantMinimumHeight = orig.mConstantMinimumHeight;
mCheckedConstantSize = true;
}
}
if (orig.mCheckedOpacity) {
mOpacity = orig.mOpacity;
mCheckedOpacity = true;
}
if (orig.mCheckedStateful) {
mStateful = orig.mStateful;
mCheckedStateful = true;
}
// Postpone cloning children and futures until we're absolutely
// sure that we're done computing values for the original state.
final Drawable[] origDr = orig.mDrawables;
mDrawables = new Drawable[origDr.length];
mNumChildren = orig.mNumChildren;
final SparseArray<ConstantState> origDf = orig.mDrawableFutures;
if (origDf != null) {
mDrawableFutures = origDf.clone();
} else {
mDrawableFutures = new SparseArray<>(mNumChildren);
}
// Create futures for drawables with constant states. If a
// drawable doesn't have a constant state, then we can't clone
// it and we'll have to reference the original.
final int count = mNumChildren;
for (int i = 0; i < count; i++) {
if (origDr[i] != null) {
final ConstantState cs = origDr[i].getConstantState();
if (cs != null) {
mDrawableFutures.put(i, cs);
} else {
mDrawables[i] = origDr[i];
}
}
}
} else {
mDrawables = new Drawable[10];
mNumChildren = 0;
}
}