android小球(一)

本文介绍了Android应用中一个具有重力模式和手势模式的小球游戏,通过SensorEventListener监听重力传感器,用户可以在设置中调整小球的颜色、大小和初始位置。同时,还涉及了使用SharedPreferences保存和恢复用户设置以及在SettingsActivity中管理选项的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L.2626

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值