1.提供两种小球模式:重力模式和手势模式
2.重力模式中,小球跟随重力进行移动
3.手势模式中,小球跟随手指滑动进行移动
4.在设置中,可以调整小球的大小,颜色,玩法模式
5.要求用户每次退出后再打开小球设置和位置为上次关闭时数据
package com.dji.myapplication2;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.ColorDrawable;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
public class MainActivity extends AppCompatActivity implements SensorEventListener{
private ImageView iv;
private boolean isGravityEnabled = false;
private float mSensorX;
private float mSensorY;
private float mLastX;
private float mLastY;
private int defaultSize = 100;
private String defaultColor = "红色";
private int ballColors = Color.RED;
private int GRAVITY = 1;
private int ballSize = 100;
private BallView ballView;
private int requestCode = 1;
private static final String PREF_MODE_X = "MyGravityX";
private static final String SELECTED_OPTION_KEY_LOCAD_X = "selectedGravityX";
private static final String PREF_MODE_Y = "MyGravityY";
private static final String SELECTED_OPTION_KEY_LOCAD_Y = "selectedGravityY";
private SensorManager sensorManager;
private Sensor gravitySensor;
@SuppressLint({"MissingInflatedId", "WrongViewCast"})
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = findViewById(R.id.settingsIcon);
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SettingsActivity.class);
startActivity(intent);
Log.i("Tag","1");
//将小球位置信息保存到本地SharedPreferences中
SharedPreferences.Editor editorX = getSharedPreferences(PREF_MODE_X, Context.MODE_PRIVATE).edit();
SharedPreferences.Editor editorY = getSharedPreferences(PREF_MODE_Y, Context.MODE_PRIVATE).edit();
if (ballView != null) {
editorX.putInt(SELECTED_OPTION_KEY_LOCAD_X, (int) ballView.getX());
editorY.putInt(SELECTED_OPTION_KEY_LOCAD_Y, (int) ballView.getY());
}
editorY.apply();
editorX.apply();
}
});
SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
SharedPreferences sharedPreference = getSharedPreferences("reekbar", Context.MODE_PRIVATE);
SharedPreferences sharedPreferencess = getSharedPreferences("MyGravity", Context.MODE_PRIVATE);
// 在Activity中获取用户设置的数据
String ballColor = sharedPreferences.getString("selectedOption", defaultColor);
String gravity = sharedPreferencess.getString("selectedGravity", defaultColor);
ballSize = sharedPreference.getInt("seekBarSize", defaultSize);
Log.i("Tag",gravity);
if (gravity.equals("重力模式")) {
isGravityEnabled = true;
}else {
isGravityEnabled = false;
}