私はそれにたくさんのpng画像を持つカスタムビューを持っています(3文字ごとに画像)。描画とスクロールでは遅すぎます。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;
}
}
私は私のカスタムビューをスピードアップするにはどうすればよいですか?私はすべての画像のビットマップを一度作成する必要があると思います。しかしどのように?
ありがとうございます!
正しい方向です。すべての文字のビットマップを1回作成し、そのビットマップをondrawで毎回描画します。また、静的メンバーのビットマップをプリロードします。 – Ronnie
なぜあなたはスーパーの前に描いていますか?何らかの理由? – Ronnie
ありがとうございます、どうすればいいですか?私はアンドロイドで初心者です。私はどこでどのように描く必要があると言うことができますか? –