我想在屏幕上移动图像,我可以做到这一点,但不正确。图像向下移动很好,我希望它一旦移动到屏幕底部就开始向另一个方向上移。如何在屏幕上移动图像?
这是我试过的。在下面的代码,margenMaXX
是屏幕的宽度和margenmaxy
是屏幕的高度
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
Thread myThread = new Thread(new UpdateThread());
myThread.start();
public class UpdateThread implements Runnable {
@Override
public void run() {
//... code to manipulate position
while (i<margenMaxX){
if(j<margenmaxy) {
try {
runOnUiThread(new Runnable() {
@Override
public void run() {
/*mDrawable.setBounds(i, j ,i+ width, i+ height);
mDrawable.draw(cc);
invalidate();*/
}
});
Thread.sleep(200);
i=i+10;
j=j+10;
} catch (InterruptedException e) {
e.printStackTrace();
}
}else if(j>=margenmaxy-height){
try {
runOnUiThread(new Runnable() {
@Override
public void run() {
/*mDrawable.setBounds(i, j ,i+ width, i+ height);
mDrawable.draw(cc);
invalidate();*/
}
});
Thread.sleep(200);
i=i-10;
j=j-10;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
public class AnimatedView extends ImageView {
public AnimatedView(Context context) {
super(context);
// TODO Auto-generated constructor stub
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xffffAC23);
}
protected void onDraw(final Canvas cc) {
final Context context = null;
mDrawable.setBounds(i, j ,i+ width, i+ height);
mDrawable.draw(cc);
invalidate();
}
}
更新1:
使用这种代码时,球会向上和向另一侧它击中后地面。现在,我希望球在碰到正确的边界时能够回来。我为此做了编码,但它不会回来。我的最终目标是开发一个球必须来自左侧或右侧的比赛。它必须击中地面并朝相反的方向行进,撞上墙壁并返回。只要比赛正在进行,球就必须完成这项工作。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
Thread myThread = new Thread(new UpdateThread());
myThread.start();
public class UpdateThread implements Runnable {
boolean mMoveDown=false;
boolean mMoveUp = false;
@Override
public void run() {
while(!mMoveUp) {
// Move the image down and right.
try {
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
Thread.sleep(200);
i=i+10;
j=j+10;
// Try posting a runnable to the UI thread to update the view.
} catch (InterruptedException e) {
e.printStackTrace();
}if(j >= margenmaxy)
{
// Change to moving up phase.
mMoveUp = true;
}
}
while(mMoveUp){
try {
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
Thread.sleep(200);
i=i + 10;
j=j - 10;
} catch (InterruptedException e) {
e.printStackTrace();
} if(i >= margenMaxX)
{
// Change to moving up phase.
mMoveDown = true;
}
}while(mMoveDown){
try {
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
Thread.sleep(200);
i=i - 10;
j=j + 10;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class AnimatedView extends ImageView {
public AnimatedView(Context context) {
super(context);
// TODO Auto-generated constructor stub
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xffffAC23);
}
protected void onDraw(final Canvas cc) {
final Context context = null;
mDrawable.setBounds(i, j ,i+ width, j+ height);
mDrawable.draw(cc);
invalidate();
}
}
嗨,看起来好像视图可能会在y方向相反需要发生之前在x方向上离开屏幕。此外,(j> = margenmaxy - 高度)包括(j
batbrat
@batbrat嗨,球不会离开屏幕它从上到下都很好,但我想要当它到达下来的位置,它必须向另一个方向向上 –
所以它一直向下移动,直到它离开屏幕?图像底部接触屏幕底部时停止移动......? – batbrat