我有一個自定義視圖上有很多png圖像(每三個字符一個圖像)。但在繪圖和滾動時速度太慢。Android:自定義視圖太慢?
這是我的自定義視圖代碼:
public class Textview extends View
{
private String m_szText;
Context ctx;
Paint mTextPaint;
private Canvas canva;
Bitmap b ;
public Textview(Context context)
{
super(context);
ctx = context;
mTextPaint= new Paint();
mTextPaint.setTypeface(m_tTypeface);
mTextPaint.setStyle(Paint.Style.FILL);
}
public void SetText(String newtext) {
m_szText = newtext;
text(newtext);
this.invalidate();
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(text(canvas,m_szText));
}
Canvas text(Canvas canvas,String txt)
{
int left = 400;
int top = 0;
try {
for(int i=0;i<txt.length();i=i+3)
{
String adres = "glyph/" + txt.substring(i, i+3) + ".png";
Bitmap btm = getBitmapFromAsset(adres);
if(left <= 5)
{left = 400;top += btm.getHeight();}
else
left = left - btm.getWidth();
canvas.drawBitmap(btm, left ,top,mTextPaint);
}
} catch (IOException e) {
canvas.drawText(e.toString(), 50, 50, mTextPaint);
}
return canvas;
}
private Bitmap getBitmapFromAsset(String strName) throws IOException
{
AssetManager assetManager = ctx.getAssets();
InputStream istr = assetManager.open(strName);
Bitmap bitmap = BitmapFactory.decodeStream(istr);
return bitmap;
}
}
我怎樣才能加快我的自定義視圖?我想我必須創建一次所有圖像的位圖。但如何?
在此先感謝!
你的方向是正確的。創建一次所有字符的位圖,並在每次繪製時繪製該位圖。還預載了靜態成員中的位圖。 – Ronnie
爲什麼你在超級之前畫畫?任何原因? – Ronnie
謝謝,但我該怎麼辦?我是Android的初學者。你能說出我在哪裏以及如何畫畫嗎? –