求解://bitmap为一个大图
//Canvas c
//Handler handler
//ra为一个Runnable用来不断执行下面的操作
bm = Bitmap.createBitmap(bitmap, 0, i*20, 480, 20);
Log.w("draw", "draw ok " + i);
c.save();
c.drawBitmap(bm, 0, i * 20, paint);
i++;
c.restore();
handler.postDelayed(ra, 10);循环执行上面的操作画出来的效果却如下:
//Canvas c
//Handler handler
//ra为一个Runnable用来不断执行下面的操作
bm = Bitmap.createBitmap(bitmap, 0, i*20, 480, 20);
Log.w("draw", "draw ok " + i);
c.save();
c.drawBitmap(bm, 0, i * 20, paint);
i++;
c.restore();
handler.postDelayed(ra, 10);循环执行上面的操作画出来的效果却如下:
解决方案 »
- Ecipse手动安装ADT
- android 应用程序(工程)A的drawable中有很多图片,我怎样在应用程序B中通过代码获取A中的图片,求教育!
- android ADT eclipse 在线下载问题(感谢各位的帮助了!!)
- 关于从事android下的gui开发,请大侠们给点意见!大雨倾盆下站等!!!
- Android 手机灭屏后获取重力感应传感器数据
- 羡慕嫉妒恨
- android图文效果
- WebView如何实现的问题
- 求Android 4高级编程(第3版) 完整非扫描版
- 求助,android studio无法连接手机
- 有关彩信协议的问题!
- 谁知道在linux下,用aidl生成.java 文件的命令
public Engine onCreateEngine() {
return new MyEngin();
}
public class MyEngin extends Engine{
private Paint paint;
private Canvas c;
private Handler handler = new Handler();
private int i = 0;
private Bitmap bitmap;
public MyEngin(){
paint = new Paint();
} @Override
public void onSurfaceCreated(SurfaceHolder holder) {
super.onSurfaceCreated(holder);
Log.w("onSurfaceCreated", "onSurfaceCreated");
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sunset);
drawFrame();
} @Override
public void onSurfaceDestroyed(SurfaceHolder holder) {
super.onSurfaceDestroyed(holder);
}
void drawFrame() {
final SurfaceHolder holder = getSurfaceHolder(); try {
c = holder.lockCanvas();
if (c != null) {
Bitmap bm = null;
if(i<20){
Log.w("draw", "draw ok " + i * 20);
c.save();
bm = Bitmap.createBitmap(bitmap, 0, i * 20, 400, 20);
c.drawBitmap(bm, 0, i * 20, paint);
c.restore();
handler.postDelayed(ra, 10);
} else {
i=0;
}
}
} finally {
if (c != null) holder.unlockCanvasAndPost(c);
}
}
private Runnable ra = new Runnable(){
@Override
public void run() {
i++;
drawFrame();
}
};
}}
import java.util.TimerTask;import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;public class AndroidTest01Activity extends Activity
{ public int tableWidth;
public int tableHeight;
public int startY = 0; /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WindowManager wm = getWindowManager();
Display display = wm.getDefaultDisplay();
tableWidth = display.getWidth();
tableHeight = display.getHeight();
setContentView(new MyView(this));
} class MyView extends View
{
Bitmap imgBm = null; public MyView(Context context)
{
super(context);
imgBm = BitmapFactory.decodeResource(getResources(), R.drawable.b); //加载图片
imgBm = imgBm.createScaledBitmap(imgBm, 500, tableHeight +500, true);//放大图片
TimerTask task = new TimerTask()
{
@Override
public void run()
{
if(startY <=0)
startY = tableHeight - 500;
else
startY --;
postInvalidate();
}
};
new Timer().schedule(task, 0,100);
} @Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
Bitmap bitmap = Bitmap.createBitmap(imgBm, 0, startY, imgBm.getWidth(), tableHeight);
canvas.drawBitmap(bitmap, 0,0,null);
} }
}
做个TimerTask来控制延迟,希望对你有帮助!