`
liyf155
  • 浏览: 126360 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android Preferences保存数据的简单实例

 
阅读更多

     Shared Preferences 类似于我们经常使用ini配置文件,用来保存应用程序的一些属性设置,在Android平台常用于存储较简单的参数设置。例如,保存上一次用户所做的修改或者自定义参数设定,当再次启动程序后依然保持原有的设置,类似于我们常用的eclipse配置文件。

      如何使用Shared Preferences,我们可以通过下面的例子来了解:

package com.liyf.android.preferences;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MyPreferencesActivity extends Activity {
	private MIDIPlayer mPlayer = null;
	private boolean mbMusic = false;
	private TextView mTextView = null;
	private Button mPlayButton = null;
	private Button mStopButton = null;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // 初始化
        mTextView = (TextView) findViewById(R.id.TextView01);
        mPlayButton = (Button) findViewById(R.id.play);
        mStopButton = (Button) findViewById(R.id.stop);        
        mPlayer = new MIDIPlayer(this);
        
        // 装载数据,取得活动的Preferences对象
        SharedPreferences settings = getPreferences(Activity.MODE_PRIVATE);
        
        //从Preferences获取值
        mbMusic = settings.getBoolean("bmusic", false);
        
        if(mbMusic) {
        	mTextView.setText("当前音乐状态:开");
        	mbMusic = true;
        	mPlayer.playMusic();
        } else {
        	mTextView.setText("当前音乐状态:关");
        }
        
        // 播放按钮事件
        mPlayButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				if(mbMusic)  // 如果已经是播放状态就返回,不是则播放音乐
				{
					return;
				} else 
				{
					mbMusic = true;
					mPlayer.playMusic();
					mTextView.setText("当前音乐状态:开");
				}
			}
		});
        
        mStopButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				if(!mbMusic)
				{
					return;
				} else 
				{
					mbMusic = false;
					mPlayer.stopMusic();
					mTextView.setText("当前音乐状态:关");
				}
			}
		});
    }

	/**
	 * 按钮离开的事件,关闭程序时保留数据到Preferences
	 */
	@Override
	public boolean onKeyUp(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub
		if (keyCode == KeyEvent.KEYCODE_BACK)
		{
			// 得到SharedPreferences对象
			SharedPreferences uiState = getPreferences(0);
			// 取得修改的对象
			SharedPreferences.Editor editor = uiState.edit();
			// 写入值
			editor.putBoolean("bmusic", mbMusic);
			
			// 提交
			editor.commit();
			
			if(mbMusic)
			{
				mPlayer.stopMusic();
			}
		}
		return super.onKeyUp(keyCode, event);
	}
}

 

package com.liyf.android.preferences;

import java.io.IOException;

import android.content.Context;
import android.media.MediaPlayer;

public class MIDIPlayer {
	public MediaPlayer playerMusic = null;
	private Context mContext = null;
	
	public MIDIPlayer(Context context) {
		mContext = context;
	}
	
	/**
	 * 播放音乐
	 */
	public void playMusic() {
		// 装载资源中的音乐
		playerMusic = MediaPlayer.create(mContext, R.raw.start);
		
		// 设置是否循环播放
		playerMusic.setLooping(true);
		try {
			playerMusic.prepare();
		} catch (IllegalStateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		playerMusic.start();
	}
	
	/**
	 * 关闭音乐
	 */
	public void stopMusic() {
		if(playerMusic != null) {
			playerMusic.stop();
			playerMusic.release();
		}
	}
}

 

 

显示效果:

播放音乐的状态

 

关闭音乐的状态

 

演示以上例子,我们可以看到,每次退出应用程序后再打开,会保存退出前的状态。实例非常简单,所以也不作多的解释。

 

  • 大小: 11.8 KB
  • 大小: 11.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics