Android之使用RatingBar设置游戏难度并保存
16lz
2022-03-09
最近在学习游戏开发,在游戏中常常需要设置游戏的难度,在Android中我们可以使用RatingBar来实现。具体看下面的代码:
效果图如下:
package com.cloay.pt.ui;import java.io.FileNotFoundException;import java.io.IOException;import android.content.ContentResolver;import android.content.Intent;import android.content.SharedPreferences;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;import android.widget.RatingBar;import android.widget.RatingBar.OnRatingBarChangeListener;import android.widget.TextView;import com.cloay.pt.BasicActivity;import com.cloay.pt.R;import com.cloay.pt.constants.Constant;import com.cloay.pt.utils.ImageUtil;/** * 游戏设置类,游戏难度等 * @author Cloay * 2011-12-23 * 下午05:21:41 */public class SettingsActivity extends BasicActivity{private SharedPreferences settings; //保存设置private RatingBar ratingBar;private TextView defaultPicture;private TextView picture;private ImageView previewImage;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.settings);BasicActivity.allActivity.add(this);//初始化数据initData();}/** * 初始化数据 */private void initData() {settings = getSharedPreferences("settings", 0);ratingBar = (RatingBar) findViewById(R.id.rating);//游戏默认图片defaultPicture = (TextView) findViewById(R.id.def);//从图库中选择图片,自定义picture = (TextView) findViewById(R.id.picture);previewImage = (ImageView)findViewById(R.id.preview);if("".equals(settings.getString("picture", ""))) {previewImage.setImageResource(R.drawable.def);}else{previewImage.setImageBitmap(ImageUtil.getBitmapFromSDCard(settings.getString("picture", "")));}//设置难度选择监听ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {@Overridepublic void onRatingChanged(RatingBar ratingBar, float rating,boolean fromUser) {settings.edit().putInt("level", (int)rating).commit(); //保存用户设置后的游戏难度showToast(SettingsActivity.this, (int)rating);}});//设置图片选择监听defaultPicture.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {settings.edit().putString("picture", "").commit();previewImage.setImageResource(R.drawable.def);}});picture.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(); /* 开启Pictures画面Type设定为image */ intent.setType("image/*"); /* 使用Intent.ACTION_GET_CONTENT这个Action */ intent.setAction(Intent.ACTION_GET_CONTENT); /* 取得相片后返回本画面 */ startActivityForResult(intent, 1);}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (resultCode == RESULT_OK) { Uri uri = data.getData(); ContentResolver cr = this.getContentResolver(); try { Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri)); try {saveBitmap("cloay", bitmap);} catch (IOException e) {e.printStackTrace();}settings.edit().putString("picture", Constant.picPath + "cloay.png").commit();previewImage.setImageBitmap(bitmap); } catch (FileNotFoundException e) { settings.edit().putString("picture", "").commit(); previewImage.setImageResource(R.drawable.def); } } super.onActivityResult(requestCode, resultCode, data);}}
通过设置setOnRatingBarChangeListener监听器来获取用户选择RatingBar的值,获取之后往往需要保存,通常使用SharedPrefence即可,也可选用SQLite等。SharedPrefence的使用详细请看: Android SharedPreferences的使用
说明:转载请注明出处!
更多相关文章
- Android(安卓)ListView几个比较有用的属性
- 解决ScrollView中填充内容上下会有阴影的问题
- Android(安卓)动画效果设置
- Android(安卓)Studio初步使用及HelloWorld详解
- ClassCastException android.view.viewgroup.$layoutParam
- Android(安卓)Telechips89xx背光控制流程
- Android: 设置wifi设备名
- Android之设置ListView数据显示的动画效果
- Android中density如何设置