package com.marshalchen.common.uimodule.tileView.tileview.samples; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Rect; import android.view.View; import com.marshalchen.common.uimodule.tileView.tileview.detail.DetailLevel; import com.marshalchen.common.uimodule.tileView.tileview.detail.DetailLevelEventListener; import com.marshalchen.common.uimodule.tileView.tileview.detail.DetailManager; import com.marshalchen.common.uimodule.tileView.tileview.graphics.BitmapDecoder; import com.marshalchen.common.uimodule.tileView.tileview.graphics.BitmapDecoderAssets; public class SampleManager extends View implements DetailLevelEventListener { private DetailManager detailManager; private BitmapDecoder decoder = new BitmapDecoderAssets(); private Rect area = new Rect(0, 0, 0, 0); private Bitmap bitmap; private String lastFileName; public SampleManager( Context context, DetailManager dm ) { super( context ); detailManager = dm; detailManager.addDetailLevelEventListener( this ); update(); } public void setDecoder( BitmapDecoder d ){ decoder = d; } public void clear(){ bitmap = null; lastFileName = null; } public void update() { DetailLevel detailLevel = detailManager.getCurrentDetailLevel(); if( detailLevel != null ) { String fileName = detailLevel.getDownsample(); if( fileName != null ) { if( !fileName.equals( lastFileName ) ) { bitmap = decoder.decode( fileName, getContext() ); invalidate(); } } lastFileName = fileName; } } @Override public void onDetailLevelChanged() { update(); } @Override public void onDetailScaleChanged( double s ) { } @Override public void onDraw( Canvas canvas ) { if( bitmap != null) { area.right = getWidth(); area.bottom = getHeight(); canvas.drawBitmap( bitmap, null, area, null); } super.onDraw( canvas ); } }