@Pozinux ... Я новый программист. Я наткнулся на этот код, который вы слышали. Я пытаюсь использовать код в моем проекте. Но я не могу заставить его работать. Когда я устанавливаю его в эмулятор, он не перемещается по кадрам. Это показывает только последний кадр. Как вы это настроили? Или заставить это работать? Слышит, как я настроил это в своем проекте.
тите за мой английский не очень хорошо ... надеюсь, вы меня поймете)
Мой друг действительно хороший ящик. Я хотел бы помочь ему стать хорошим ящиком, сделав для него живые обои, анимированные его рисунками.
Я бы хотел, чтобы он нарисовал несколько кадров и использовал эти рамки для создания живых обоев, отображая их один за другим.
Я изо всех сил стараюсь показать одну картинку, потом немного подожду и покажу следующую. Я совершенно уверен, что мне не удастся сделать это, потому что я не использую правильный подход ...
Это то, что я сделал до сих пор:
public class Cercle extends WallpaperService
{
public void onCreate()
{
super.onCreate();
}
public void onDestroy()
{
super.onDestroy();
}
public Engine onCreateEngine()
{
return new CercleEngine();
}
class CercleEngine extends Engine
{
public Bitmap image1, image2, image3;
CercleEngine()
{
image1 = BitmapFactory.decodeResource(getResources(), R.drawable.img1);
image2 = BitmapFactory.decodeResource(getResources(), R.drawable.img2);
image3 = BitmapFactory.decodeResource(getResources(), R.drawable.img3);
}
public void onCreate(SurfaceHolder surfaceHolder)
{
super.onCreate(surfaceHolder);
}
public void onOffsetsChanged(float xOffset, float yOffset, float xStep, float yStep, int xPixels, int yPixels)
{
drawFrame();
}
void drawFrame()
{
final SurfaceHolder holder = getSurfaceHolder();
Canvas c = null;
try
{
c = holder.lockCanvas();
if (c != null)
{
c.drawBitmap(image1, 0, 0, null);
c.drawBitmap(image2, 0, 0, null);
c.drawBitmap(image3, 0, 0, null);
}
} finally
{
if (c != null) holder.unlockCanvasAndPost(c);
}
}
}
}
Этот код просто отображает картинки слишком быстро, потому что я не знаю, как ждать между изображениями на экране ...
Кто-нибудь может дать мне несколько советов или показать пример другого решения?
Спасибо !
ОБНОВИТЬ :
Я решил свою проблему, добавив Runnable:
private final Runnable drawRunner = new Runnable()
{
@Override
public void run() {
drawFrame();
}
};
а затем добавив:
handler.removeCallbacks(drawRunner);
if (visible)
{
handler.postDelayed(drawRunner, 1000); // delay 1 sec
}
в конце drawFrame ().
Надеюсь, это кому-нибудь поможет.