自定义视图动画
问题描述:
在我的Android应用我有我的布局像这样引用一个定制的视图对象:自定义视图动画
<view
class="com.usmaan.game.MenuBall"
android:layout_width="30dp"
android:layout_height="30dp"/>
类看起来是这样的:
public class MenuBall extends View {
public MenuBall(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.LTGRAY);
canvas.drawCircle(getMeasuredWidth() * 0.5f, getMeasuredHeight() * 0.5f, getMeasuredHeight() * 0.5f, paint);
}
}
球/ circle正在屏幕上完美地画出来。
但是我想做的事情是让球体动起来,让它垂直和/或水平移动。任何想法如何我可以实现这一目标?
答
也许你可以实例化视图中的活动和动画它像任何其他视图,可以看到:http://developer.android.com/guide/topics/graphics/view-animation.html更多参考
答
此睡眠应该在一个线程中进行,以免锁定用户界面时,但会给你一个办法的想法。有几种方法可以实现,实际上只取决于您希望它与用户/应用程序事件相关的操作。
float x= getMeasuredWidth() * 0.5f;
float destinationX= getMeasuredWidth() * 0.8f;
boolean isRunning=true;
Paint paint = new Paint();
paint.setColor(Color.LTGRAY);
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
while (isRunning) {
Thread.sleep(200); // Waits for .2 second (200 milliseconds)
if(x<destinationX){
x+=5;}
else {isRunning=false;}
canvas.drawCircle(x,y, getMeasuredHeight() * 0.5f, paint);
invalidate();
}
}
你看过[动画指南](http://developer.android.com/guide/topics/graphics/prop-animation.html)吗? 您可以将该视图放在RelativeLayout中并使用属性动画来移动它。 – FMontano
你没有提到的是你想要球移动的方式。你想要它onTouch,传感器,其他? – a54studio
@digiholic嗨digiholic。目前,我只想让球在没有任何用户输入的情况下移动。例如,我希望球从它的当前位置移动到位置X,然后再返回。 – Subby