我有一个视图,我想在线显示一些资源。所以我创建了一个子类android.view.View
并覆盖了该dispatchDraw
方法:
public class TView extends View {
AsyncHttpClient client = new AsyncHttpClient();
private Paint p = new Paint();
public TView(Context context) {
super(context);
}
@Override
protected void dispatchDraw(final Canvas canvas) {
client.get("http://developer.android.com/assets/images/dac_logo.png", new BinaryHttpResponseHandler() {
@Override
public void onSuccess(byte[] arg0) {
doRender(canvas, arg0);
}
});
super.dispatchDraw(canvas);
}
private void doRender(Canvas c, byte[] data) {
Log.d("xx", "data length :" + data.length);
c.drawText("hello", 10, 10 + p.getTextSize(), p);
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
BitmapDrawable bd = new BitmapDrawable(bmp);
bd.draw(c);
}
}
但是以下代码不起作用。
我只收到日志消息:
04-18 19:10:44.933: D/xx(1258): data length :2170
似乎数据已下载。但是画布不会渲染它。
问题是什么?
顺便说一句,我使用AsycHttpClient来简化数据请求。