歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發之使用RatingBar設置游戲難度並保存

Android開發之使用RatingBar設置游戲難度並保存

日期:2017/3/1 10:27:30   编辑:Linux編程

最近在學習游戲開發,在游戲中常常需要設置游戲的難度,在Android中我們可以使用RatingBar來實現。具體看下面的代碼:

效果圖如下:

  1. package com.cloay.pt.ui;
  2. import java.io.FileNotFoundException;
  3. import java.io.IOException;
  4. import android.content.ContentResolver;
  5. import android.content.Intent;
  6. import android.content.SharedPreferences;
  7. import android.graphics.Bitmap;
  8. import android.graphics.BitmapFactory;
  9. import android.net.Uri;
  10. import android.os.Bundle;
  11. import android.view.View;
  12. import android.view.View.OnClickListener;
  13. import android.widget.ImageView;
  14. import android.widget.RatingBar;
  15. import android.widget.RatingBar.OnRatingBarChangeListener;
  16. import android.widget.TextView;
  17. import com.cloay.pt.BasicActivity;
  18. import com.cloay.pt.R;
  19. import com.cloay.pt.constants.Constant;
  20. import com.cloay.pt.utils.ImageUtil;
  21. /**
  22. * 游戲設置類,游戲難度等
  23. * @author Cloay
  24. * 2011-12-23
  25. * 下午05:21:41
  26. */
  27. public class SettingsActivity extends BasicActivity{
  28. private SharedPreferences settings; //保存設置
  29. private RatingBar ratingBar;
  30. private TextView defaultPicture;
  31. private TextView picture;
  32. private ImageView previewImage;
  33. @Override
  34. protected void onCreate(Bundle savedInstanceState) {
  35. super.onCreate(savedInstanceState);
  36. setContentView(R.layout.settings);
  37. BasicActivity.allActivity.add(this);
  38. //初始化數據
  39. initData();
  40. }
  41. /**
  42. * 初始化數據
  43. */
  44. private void initData() {
  45. settings = getSharedPreferences("settings", 0);
  46. ratingBar = (RatingBar) findViewById(R.id.rating);
  47. //游戲默認圖片
  48. defaultPicture = (TextView) findViewById(R.id.def);
  49. //從圖庫中選擇圖片,自定義
  50. picture = (TextView) findViewById(R.id.picture);
  51. previewImage = (ImageView)findViewById(R.id.preview);
  52. if("".equals(settings.getString("picture", ""))) {
  53. previewImage.setImageResource(R.drawable.def);
  54. }else{
  55. previewImage.setImageBitmap(ImageUtil.getBitmapFromSDCard(settings.getString("picture", "")));
  56. }
  57. //設置難度選擇監聽
  58. ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
  59. @Override
  60. public void onRatingChanged(RatingBar ratingBar, float rating,
  61. boolean fromUser) {
  62. settings.edit().putInt("level", (int)rating).commit(); //保存用戶設置後的游戲難度
  63. showToast(SettingsActivity.this, (int)rating);
  64. }
  65. });
  66. //設置圖片選擇監聽
  67. defaultPicture.setOnClickListener(new OnClickListener() {
  68. @Override
  69. public void onClick(View v) {
  70. settings.edit().putString("picture", "").commit();
  71. previewImage.setImageResource(R.drawable.def);
  72. }
  73. });
  74. picture.setOnClickListener(new OnClickListener() {
  75. @Override
  76. public void onClick(View v) {
  77. Intent intent = new Intent();
  78. /* 開啟Pictures畫面Type設定為image */
  79. intent.setType("image/*");
  80. /* 使用Intent.ACTION_GET_CONTENT這個Action */
  81. intent.setAction(Intent.ACTION_GET_CONTENT);
  82. /* 取得相片後返回本畫面 */
  83. startActivityForResult(intent, 1);
  84. }
  85. });
  86. }
  87. @Override
  88. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  89. if (resultCode == RESULT_OK) {
  90. Uri uri = data.getData();
  91. ContentResolver cr = this.getContentResolver();
  92. try {
  93. Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
  94. try {
  95. saveBitmap("cloay", bitmap);
  96. } catch (IOException e) {
  97. e.printStackTrace();
  98. }
  99. settings.edit().putString("picture", Constant.picPath + "cloay.png").commit();
  100. previewImage.setImageBitmap(bitmap);
  101. } catch (FileNotFoundException e) {
  102. settings.edit().putString("picture", "").commit();
  103. previewImage.setImageResource(R.drawable.def);
  104. }
  105. }
  106. super.onActivityResult(requestCode, resultCode, data);
  107. }
  108. }
通過設置setOnRatingBarChangeListener監聽器來獲取用戶選擇RatingBar的值,獲取之後往往需要保存,通常使用SharedPrefence即可,也可選用SQLite等。SharedPrefence的使用詳細請看: Android SharedPreferences的使用 http://www.linuxidc.com/Linux/2011-11/48029.htm
Copyright © Linux教程網 All Rights Reserved