灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:4940回复:0

Android之使用RatingBar设置游戏难度并保存

楼主#
更多 发布于:2012-09-06 13:48


最近在学习游戏开发,在游戏中常常需要设置游戏的难度,在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;
    @Override
    protected 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() {
            @Override
            public void onRatingChanged(RatingBar ratingBar, float rating,
                    boolean fromUser) {
                settings.edit().putInt("level", (int)rating).commit();   //保存用户设置后的游戏难度  
                showToast(SettingsActivity.this, (int)rating);
            }
        });
        //设置图片选择监听  
        defaultPicture.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                settings.edit().putString("picture", "").commit();
                previewImage.setImageResource(R.drawable.def);
            }
        });
        picture.setOnClickListener(new OnClickListener() {
            @Override
            public 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);
            }
        });
        
    }
    
    @Override
    protected 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);
    }
}
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;
@Override
protected 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() {
   @Override
   public void onRatingChanged(RatingBar ratingBar, float rating,
     boolean fromUser) {
    settings.edit().putInt("level", (int)rating).commit();   //保存用户设置后的游戏难度
    showToast(SettingsActivity.this, (int)rating);
   }
  });
  //设置图片选择监听
  defaultPicture.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    settings.edit().putString("picture", "").commit();
    previewImage.setImageResource(R.drawable.def);
   }
  });
  picture.setOnClickListener(new OnClickListener() {
   @Override
   public 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);
   }
  });
  
}

@Override
protected 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等


喜欢0 评分0
游客

返回顶部