1
ObjectAnimator를 사용하여 레이아웃의 뷰에 애니메이션을 적용 할 수있었습니다.Canvas에서 객체 애니메이트에 ObjectAnimator를 사용할 수 있습니까?
ObjectAnimator 클래스를 사용하여 캔버스에 객체의 애니메이션을 적용하려했지만 작동하지 않았습니다. 도 가능합니까? 내가 레이아웃에 그랬던 것처럼, 내가 ObjectAnimator을 정의 내가보기를 확장하는 클래스를 만드는 한
후 나는 캔버스에 그것을 뽑아 여기
코드입니다 (objectanimator.start) 애니메이션을 시작했다 : 합니다 (// 라인 내 레이아웃 시도 마녀 일 수 있습니다)public class MainActivity extends Activity {
SurfaceClass surface;
private ObjectAnimator anima;
//private Button but;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
surface = new SurfaceClass(this);
surface.resume();
setContentView(surface);
//but = (Button)findViewById(R.id.button1);
//anima = ObjectAnimator.ofFloat(but, "y",400);
//anima.setDuration(5000);
//anima.setRepeatCount(100);
//anima.setRepeatMode(1);
//anima.start();
}
표면 :
public class SurfaceClass extends SurfaceView implements Runnable{
SurfaceHolder sHolder;
Boolean isRunning;
Thread th;
Canvas c;
Obj object;
ObjectAnimator anima;
public SurfaceClass(Context context) {
super(context);
// TODO Auto-generated constructor stub
anima = ObjectAnimator.ofFloat(object, "y",1f);
anima.setDuration(3000);
anima.setRepeatCount(100);
anima.setRepeatMode(1);
//anima.start();
object = new Obj(context);
sHolder = getHolder();
isRunning = false;
}
@Override
public void run() {
// TODO Auto-generated method stub
while(isRunning){
if(!sHolder.getSurface().isValid())
continue;
c = sHolder.lockCanvas();
synchronized(sHolder){
doDraw(c);
}
sHolder.unlockCanvasAndPost(c);
}
}
private void doDraw(Canvas c) {
// TODO Auto-generated method stub
c.drawBitmap(object.pic, object.x, object.y, null);
anima.start();
}
public void resume() {
// TODO Auto-generated method stub
isRunning = true;
th = new Thread(this);
th.start();
}
}
목적 :
public class Obj extends View {
float x = 200,y=30;
Bitmap pic;
public Obj(Context context) {
super(context);
// TODO Auto-generated constructor stub
pic = BitmapFactory.decodeResource(getResources(), R.drawable.cat_trance);
}
public void setY(float f){
y=f;
}
public float getY(){
return y;
}
}
BTW, 시작할 때 FC로 바뀝니다. –