package com.lwz.searchbar.demo; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.lang.ref.SoftReference; import java.util.ArrayList; import java.util.HashMap; import android.content.Context; import android.content.res.AssetManager; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; public class BankUtils { public static ArrayList<Bank> loadHotBank(AssetManager assetManager) { ArrayList<Bank> hotBanks = null; try { InputStream is = assetManager.open("bank/hot_bank.json"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int offset; while( (offset = is.read(buffer)) != -1 ) { baos.write(buffer, 0, offset); } is.close(); baos.flush(); hotBanks = new Gson().fromJson(baos.toString(), new TypeToken<ArrayList<Bank>>(){}.getType()); is.close(); baos.close(); } catch (IOException e) { } return hotBanks == null ? new ArrayList<Bank>() : hotBanks; } static HashMap<String, SoftReference<Drawable>> mLogoCacheMap = new HashMap<String, SoftReference<Drawable>>(); public static Drawable getBankLogo(Context context, String logoName) { SoftReference<Drawable> logoRef = mLogoCacheMap.get(logoName); Drawable logo = null; if( logoRef == null || (logo = logoRef.get()) == null ) { logo = BankUtils.getAsssetDrawableByName( context, BankUtils.getBankLogoPath(logoName)); mLogoCacheMap.put(logoName, new SoftReference<Drawable>(logo)); } return logo; } public static String getBankLogoPath(String logoName) { return String.format("bank/%s.png", logoName); } public static Drawable getAsssetDrawableByName(Context context, String name) { try { InputStream is = context.getAssets().open(name); return new BitmapDrawable(context.getResources(), BitmapFactory.decodeStream(is)); } catch (IOException e) { e.printStackTrace(); } return new ColorDrawable(Color.TRANSPARENT); } }