在本文中,我们将使用Android中的Java和XML构建“旋转瓶子游戏”项目。该应用程序基于多人游戏。一个玩家旋转瓶子,瓶子旋转的方向将确定被选中执行某项任务或其他任何东西的玩家。此应用程序中只有一个活动。下面给出了一个示例GIF,以了解我们将在本文中做些什么。
分步实施
步骤1:创建一个新项目
要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。
第2步:首先进入编码部分,您必须做一些准备工作
- 添加瓶子图像:转到应用程序-> res-> drawable并添加该瓶子图像。
- 修改colors.xml文件:
XML
#6200EE
#3700B3
#03DAC5
#0F9D58
XML
Java
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
private ImageView bot;
private Random rand = new Random();
private int lstDr;
private boolean spn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bot = findViewById(R.id.bottle);
}
// onClick function
public void spinBottle(View v) {
// check if the bottled has stopped spinning
if (!spn) {
// generate a random number from 1-1800
int num = rand.nextInt(1800);
// set the pivot to the centre of the image
float pX = bot.getWidth() / 2;
float pY = bot.getHeight() / 2;
// pass parameters in RoatateAnimation function
Animation rot = new RotateAnimation(lstDr, num, pX, pY);
// set rotate duration 2500 millisecs
rot.setDuration(2500);
// rotation will persist after finishing
rot.setFillAfter(true);
rot.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
spn = true;
}
@Override
public void onAnimationEnd(Animation animation) {
spn = false;
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
// change the last direction
lstDr = num;
// start the animation
bot.startAnimation(rot);
}
}
}
步骤3:使用activity_main.xml文件
XML代码用于构建活动的结构及其样式部分。它包含一个TextView 在活动的最顶部显示标题。然后,它在活动中心包含瓶子的ImageView。以下是activity_main.xml文件的代码。
XML格式
步骤4:使用MainActivity。 Java文件
我们将在Java文件中创建一个函数,该函数将在单击瓶子的图像时被调用。在此函数内部,我们将从1-1800生成一个随机数,该数将作为图像旋转的方向。为此,我们将使用Random()函数。我们将创建一个RotateAnimation函数的方法,该方法将具有四个参数。参数是初始方向,最终方向,X方向上的旋转轴和Y方向上的旋转轴。因为我们希望图像从中心旋转,所以我们将中心作为枢轴。所以:
- 初始方向= 0,
- 最终方向=从0到1800随机生成的数字,
- ivotX =图片宽度的一半,
- axisY =图像高度的一半。
- 每次旋转后,初始方向=最终方向。
下面是MainActivity的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。
Java
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
private ImageView bot;
private Random rand = new Random();
private int lstDr;
private boolean spn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bot = findViewById(R.id.bottle);
}
// onClick function
public void spinBottle(View v) {
// check if the bottled has stopped spinning
if (!spn) {
// generate a random number from 1-1800
int num = rand.nextInt(1800);
// set the pivot to the centre of the image
float pX = bot.getWidth() / 2;
float pY = bot.getHeight() / 2;
// pass parameters in RoatateAnimation function
Animation rot = new RotateAnimation(lstDr, num, pX, pY);
// set rotate duration 2500 millisecs
rot.setDuration(2500);
// rotation will persist after finishing
rot.setFillAfter(true);
rot.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
spn = true;
}
@Override
public void onAnimationEnd(Animation animation) {
spn = false;
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
// change the last direction
lstDr = num;
// start the animation
bot.startAnimation(rot);
}
}
}
输出:
想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处,前往由我们的专家精心策划的指南,以使您立即做好行业准备!