安卓中如何实现小球在屏幕上左右来回移动,谢谢,求大师告诉详细的源代码,尽量简单,不要太高深的方法
用动画,控制起始位置,或者自己用timer控制margin等参数
http://www.2cto.com/kf/201111/110861.html
http://m.blog.csdn.net/blog/controlsxxf/8790052
参考一下吧
sdk的sample里有这个例子
Android中控制view的移动可以采用动画,Android提供了两大类动画:基本动画和属性动画。
1、基本动画包括两类:逐帧动画、补间动画。前者由一张张的图片轮流显示形成;后者包括角度、移位、透明度、大小四种变化以及它们的组合。
你要实现小球在屏幕上左右来回移动,采用补间动画中的移位变化比较合适,移位变化可以设置水平和垂直方向的移动。
代码如下:
public class MainActivity extends Activity {
private ImageView ball;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ball = (ImageView) findViewById(R.id.imageview);
ball.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 获取屏幕的宽度
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(
displayMetrics);
int screenWidth = displayMetrics.widthPixels;
// 初始化移位动画,水平方向从0到屏幕宽度-球的宽度,垂直方向从0到0,即从左到右
// Animation.ABSOLUTE表示相对屏幕的位置,以像素为单位,
//即水平从0像素到screenWidth - ball.getWidth()像素
TranslateAnimation animation = new TranslateAnimation(
Animation.ABSOLUTE, 0, Animation.ABSOLUTE, screenWidth
- ball.getWidth(), Animation.RELATIVE_TO_SELF,
0, Animation.RELATIVE_TO_SELF, 0);
// 动画到事件为1000ms
animation.setDuration(1000);
// 动画执行次数为无限次:-1
// 如果为一正数n,则执行n次
animation.setRepeatCount(Animation.INFINITE);
// 动画重复方式为反转,即从左到右>从右到左>...
// 如果为Animation.RESTART,即从左到右>从左到右>...
animation.setRepeatMode(Animation.REVERSE);
ball.startAnimation(animation);
}
});
}
}
这样就解决了你的问题。其余几种基本动画:大小、透明度、角度你可以自己尝试,和上述类似。
2、属性动画。
这个也很简单,如果用它解决你的问题,与1不同的是:2会真正改变小球的位置;而1不是,你点击运动中的小球,它不会响应点击事件,只有点击球的初始位置才能让其响应。你可以查找相关资料来学习属性动画。