de.luhmer.owncloudnewsreader.helper.BitmapDrawableLruCache.java Source code

Java tutorial

Introduction

Here is the source code for de.luhmer.owncloudnewsreader.helper.BitmapDrawableLruCache.java

Source

/**
* Android ownCloud News
*
* @author David Luhmer
* @copyright 2013 David Luhmer david-dev@live.de
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
*
*/

package de.luhmer.owncloudnewsreader.helper;

import android.annotation.TargetApi;
import android.graphics.drawable.BitmapDrawable;
import android.os.Build;
import android.support.v4.util.LruCache;

public class BitmapDrawableLruCache extends LruCache<Long, BitmapDrawable> {
    public static int getDefaultLruCacheSize() {
        final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
        final int cacheSize = maxMemory / 8;
        return cacheSize;
    }

    public BitmapDrawableLruCache() {
        this(getDefaultLruCacheSize());
    }

    public BitmapDrawableLruCache(int sizeInKiloBytes) {
        super(sizeInKiloBytes);
    }

    @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
    @Override
    protected int sizeOf(Long key, BitmapDrawable bitmap) {
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB_MR1)
            return bitmap.getBitmap().getByteCount() / 1024;
        else
            return bitmap.getBitmap().getRowBytes() * bitmap.getBitmap().getHeight() / 1024;
    }
}