2014-09-22 3 views
0

у меня есть источник, который обои образец приложения, я хочу, чтобы импортировать анимацию XMLКак импортировать пользовательскую анимацию xml в приложении для обоев?

public WallpaperEngine(Resources r) { 
     image01=BitmapFactory.decodeResource(r,R.drawable.fire01); 
     image02=BitmapFactory.decodeResource(r,R.drawable.fire02); 
     bg=BitmapFactory.decodeResource(r,R.drawable.hktv); 
     px=1; 
     translateAnimation = AnimationUtils.loadAnimation(this, android.R.anim.translate_animation); 
    } 

но есть ошибка в строке translate_animation

cannot find symbol variable translate_animation 

Как я могу решить эту проблему?

------ обновление ------

package com.example.android.livewallpaper; 

import android.app.Activity; 
import android.content.res.Resources; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.os.Handler; 
import android.service.wallpaper.WallpaperService; 
import android.view.SurfaceHolder; 

import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 

import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.widget.ImageView; 

public class FireLiveWallpaper extends WallpaperService { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
    } 

    @Override 
    public Engine onCreateEngine() { 
     return new WallpaperEngine(getResources()); 
    } 

    public class WallpaperEngine extends Engine { 
     private final Handler handler=new Handler();   
     private Bitmap image; //Image 
     private Bitmap image01; //Image01 for fire01.PNG 
     private Bitmap image02; //Image02 for fire02.PNG 
     private Bitmap bg; 
     private Paint paint = new Paint(); 
     private int px=0; //Flag for switch 
     private boolean visible; 
     private int  width; 
     private int  height; 

     private int _xOffset = 0; 
     private int _yOffset = 0; 

     final Animation translateAnimation; 


     private final Runnable drawThread=new Runnable() { 
      public void run() { 
       drawFrame(); 
      } 
     }; 


     public WallpaperEngine(Resources r) { 
      image01=BitmapFactory.decodeResource(r,R.drawable.fire01); 
      image02=BitmapFactory.decodeResource(r,R.drawable.fire02); 
      bg=BitmapFactory.decodeResource(r,R.drawable.hktv); 
      px=1; 
      translateAnimation = AnimationUtils.loadAnimation(this,R.anim.translate_animation); 
     } 

     @Override 
     public void onCreate(SurfaceHolder surfaceHolder) { 
      super.onCreate(surfaceHolder); 
     } 

     @Override 
     public void onDestroy() { 
      super.onDestroy(); 
      handler.removeCallbacks(drawThread); 
     } 

     @Override 
     public void onSurfaceChanged(SurfaceHolder holder, 
      int format,int width,int height) { 
      super.onSurfaceChanged(holder,format,width,height); 
      this.width =width; 
      this.height=height; 
      drawFrame(); 
     } 

     @Override 
     public void onSurfaceCreated(SurfaceHolder holder) { 
      super.onSurfaceCreated(holder); 
     } 

     @Override 
     public void onSurfaceDestroyed(SurfaceHolder holder) { 
      super.onSurfaceDestroyed(holder); 
      visible=false; 
      handler.removeCallbacks(drawThread); 
     } 

     @Override 
     public void onVisibilityChanged(boolean visible) { 
      this.visible=visible; 
      if (visible) { 
       drawFrame(); 
      } else { 
       handler.removeCallbacks(drawThread); 
      } 
     } 

     @Override 
     public void onOffsetsChanged(float xOffset,float yOffset, 
      float xStep,float yStep,int xPixels,int yPixels) { 
      _xOffset = xPixels; 
      _yOffset = yPixels; 
      drawFrame(); 
     } 

     private void drawFrame() { 

      SurfaceHolder holder=getSurfaceHolder(); 
      Canvas c=holder.lockCanvas(); 

      c.drawBitmap(bg, _xOffset, _yOffset, paint); 
      //c.drawColor(Color.BLUE); 
      if (px == 1) { 
       image=image01; 
       px=2; 
      } else { 
       image=image02; 
       px=1 ; 
      } 
      c.drawBitmap(image, (width-image.getWidth())/2, (height-image.getHeight())/2, null); 

      holder.unlockCanvasAndPost(c); 





      handler.removeCallbacks(drawThread); 
      if (visible) handler.postDelayed(drawThread,100); 
     } 
    } 
} 

ответ

0

Использование R.anim.translate_animation вместо android.R.anim.translate_animation импортировать анимацию для res/anim ресурса:

translateAnimation = AnimationUtils.loadAnimation(this, 
              R.anim.translate_animation); 
+0

После снятого андроида. : не удается найти символьную переменную anim – hkguile

+0

@hkguile: убедитесь, что вы разместили файл 'translate_animation.xml' внутри папки' res/anim/'. если папка 'anim' не существует, то создайте ее в папке' res' –

+0

файл уже размещен там – hkguile