Android 实时墙纸中的边框未更改
目前我正在制作现场壁纸,我被困在一个点上。事实上,我的实时壁纸只在触摸屏幕时才起作用,但它不会持续变化。我的循环中有一个问题Android 实时墙纸中的边框未更改,android,live-wallpaper,Android,Live Wallpaper,目前我正在制作现场壁纸,我被困在一个点上。事实上,我的实时壁纸只在触摸屏幕时才起作用,但它不会持续变化。我的循环中有一个问题 class Diwali extends Engine { private boolean mVisible; private final Runnable diwaliImg = new Runnable() { public void run() { drawFrame(); } };
class Diwali extends Engine {
private boolean mVisible;
private final Runnable diwaliImg = new Runnable() {
public void run() {
drawFrame();
}
};
int i=0;
int[] pirates = {
R.drawable.a1, R.drawable.a2,
R.drawable.a3, R.drawable.a4,
R.drawable.a5, R.drawable.a6,
R.drawable.a7, R.drawable.a8,
R.drawable.a9, R.drawable.a10,
R.drawable.a11, R.drawable.a12,
R.drawable.a13, R.drawable.a14
};
@Override
public void onCreate(SurfaceHolder holder){
super.onCreate(holder);
}
@Override
public void onDestroy() {
super.onDestroy();
mHandler.removeCallbacks(diwaliImg);
}
@Override
public void onVisibilityChanged(boolean visible) {
mVisible = visible;
if (visible) {
drawFrame();
} else {
mHandler.removeCallbacks(diwaliImg);
}
}
@Override
public void onSurfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
super.onSurfaceChanged(holder, format, width, height);
drawFrame();
}
@Override
public void onSurfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
super.onSurfaceCreated(holder);
}
@Override
public void onSurfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
super.onSurfaceDestroyed(holder);
mVisible = false;
mHandler.removeCallbacks(diwaliImg);
}
@Override
public void onOffsetsChanged(float xOffset, float yOffset, float xStep,float yStep, int xPixels, int yPixels) {
drawFrame();
}
@Override
public void onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
}
private void drawFrame() {
// TODO Auto-generated method stub
final SurfaceHolder holder = getSurfaceHolder();
Canvas c = null;
try {
c = holder.lockCanvas();
if (c != null) {
drawPirate(c);
}
} finally {
if (c != null)
holder.unlockCanvasAndPost(c);
}
mHandler.removeCallbacks(diwaliImg);
}
private void drawPirate(Canvas c) {
// TODO Auto-generated method stub
Bitmap icon = BitmapFactory.decodeResource(getResources(),pirates[i]);
i++;
if (i == 13) {
i = 0;
}
Matrix matrix = new Matrix();
c.drawBitmap(icon, matrix, null);
icon.recycle();
}
}
代码中没有循环。您需要重复调用drawFrame() 要实现这一点,可以使用单独的线程进行动画。我建议您在GitHub上使用我的产品。添加此产品后
if(mVisible){
后延迟(排灯节,80);
}
最后,我的问题解决了 你什么意思?使用我的模板并将Scene.draw()方法的内容替换为drawPirate()方法的内容。当然你需要早点加载位图。亲爱的,我找到了解决方案。我正在发布我的代码。谢谢你的帮助:)嗨,我遇到了同样的问题。你能把你的消息来源转给我吗。