@Override public void recycle() { super.recycle(); GLCanvas canvas = mCanvasRef; if (canvas == null) return; int n = mInstanceCache.size(); for (int i = 0; i < n; i++) { NinePatchInstance instance = mInstanceCache.valueAt(i); instance.recycle(canvas); } mInstanceCache.clear(); }
private NinePatchInstance findInstance(GLCanvas canvas, int w, int h) { int key = w; key = (key << 16) | h; NinePatchInstance instance = mInstanceCache.get(key); if (instance == null) { instance = new NinePatchInstance(this, w, h); NinePatchInstance removed = mInstanceCache.put(key, instance); if (removed != null) { removed.recycle(canvas); } } return instance; }
@Override public void draw(GLCanvas canvas, int x, int y, int w, int h) { if (!isLoaded()) { mInstanceCache.clear(); } if (w != 0 && h != 0) { findInstance(canvas, w, h).draw(canvas, this, x, y); } }