BitmapCompat.java revision ddb24f29a236175d3cda4c11bda98a6212ecf9e5
1ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee/* 2ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * Copyright (C) 2014 The Android Open Source Project 3ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * 4ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * Licensed under the Apache License, Version 2.0 (the "License"); 5ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * you may not use this file except in compliance with the License. 6ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * You may obtain a copy of the License at 7ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * 8ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * http://www.apache.org/licenses/LICENSE-2.0 9ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * 10ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * Unless required by applicable law or agreed to in writing, software 11ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * distributed under the License is distributed on an "AS IS" BASIS, 12ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * See the License for the specific language governing permissions and 14ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * limitations under the License. 15ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee */ 16ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Leepackage android.support.v4.graphics; 17ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee 18ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Leeimport android.graphics.Bitmap; 19ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee 20ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee/** 21ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * Helper for accessing features in {@link android.graphics.Bitmap} 22ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * introduced after API level 4 in a backwards compatible fashion. 23ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee */ 24ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Leepublic class BitmapCompat { 25ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee /** 26ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * Interface for the full API. 27ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee */ 28ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee interface BitmapImpl { 29ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee public boolean hasMipMap(Bitmap bitmap); 30ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee public void setHasMipMap(Bitmap bitmap, boolean hasMipMap); 31ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee } 32ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee 33ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee /** 34ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * Interface implementation that doesn't use anything about v4 APIs. 35ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee */ 36ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee static class BaseBitmapImpl implements BitmapImpl { 37ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee @Override 38ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee public boolean hasMipMap(Bitmap bitmap) { 39ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee return false; 40ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee } 41ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee 42ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee @Override 43ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee public void setHasMipMap(Bitmap bitmap, boolean hasMipMap) { 44ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee } 45ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee } 46ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee 47ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee static class JbMr2BitmapCompatImpl extends BaseBitmapImpl { 48ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee @Override 49ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee public boolean hasMipMap(Bitmap bitmap){ 50ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee return BitmapCompatJellybeanMR2.hasMipMap(bitmap); 51ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee } 52ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee 53ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee @Override 54ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee public void setHasMipMap(Bitmap bitmap, boolean hasMipMap) { 55ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee BitmapCompatJellybeanMR2.setHasMipMap(bitmap, hasMipMap); 56ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee } 57ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee } 58ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee 59ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee /** 60ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee * Select the correct implementation to use for the current platform. 61ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee */ 62ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee static final BitmapImpl IMPL; 63ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee static { 64ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee final int version = android.os.Build.VERSION.SDK_INT; 65ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee if (version >= 18) { 66ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee IMPL = new JbMr2BitmapCompatImpl(); 67ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee } else { 68ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee IMPL = new BaseBitmapImpl(); 69ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee } 70ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee } 71ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee 72ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee public static boolean hasMipMap(Bitmap bitmap) { 73ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee return IMPL.hasMipMap(bitmap); 74ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee } 75ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee 76ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee public static void setHasMipMap(Bitmap bitmap, boolean hasMipMap) { 77ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee IMPL.setHasMipMap(bitmap, hasMipMap); 78ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee } 79ddb24f29a236175d3cda4c11bda98a6212ecf9e5Yorke Lee}