• 学习Android之SharedPreferences使用


    效果图例如以下:



    当我们想让自己的属性设置保存下来,这时就须要SharedPreferences。

    上面这个小程序,音乐状态是保存下来的。使用的上一次退出的状态。

    进入DDMS,data文件下的data文件里,找到自己的包名文件,双击打开,有shared_prefs文件,里面有xml文件,这就是配置文件。

    本程序使用了android的上下键,同常我们的模拟器的方向键是不能用的,这是就须要我们打开它,在C盘下找到文件 .android,双击avd文件,找到你的模拟器的目录,双击打开,找到config.ini,打开,改动armhw.dPad=yes,启动模拟器,这时就能用了。


    本程序建立了MainActivity.java、MIDIPlayer.java、activity_main.xml。


    程序代码例如以下:

    MainActivity.java


    package com.example.l3_sharedpreferences;
    
    import com.example.l3_sharedpreferences.model.MIDIPlayer;
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.SharedPreferences;
    import android.content.SharedPreferences.Editor;
    import android.view.KeyEvent;
    import android.view.Menu;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    	private TextView musicStateShow;
    	private MIDIPlayer midiPlayer;
    	private boolean musicSate=false;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		musicStateShow=(TextView) this.findViewById(R.id.musicStateShow);
    		midiPlayer=new MIDIPlayer(this);
    		
    		SharedPreferences sharedPreferences=getSharedPreferences("music",MODE_PRIVATE);
    		musicSate=sharedPreferences.getBoolean("mState", false);
    		if(musicSate){
    			musicStateShow.setText("当前音乐状态:开");
    			midiPlayer.playMusic();		
    		}else{
    			musicStateShow.setText("当前音乐状态:关");
    		}
    		
    		
    	}
    	
    	
    	
    	/**
    	 * 按键弹起事件
    	 */
    	@Override
    	public boolean onKeyUp(int keyCode, KeyEvent event) {
    		System.out.println("keyCode="+keyCode);
    		switch (keyCode) {
    		case KeyEvent.KEYCODE_DPAD_UP:
    			musicStateShow.setText("当前音乐状态:开");
    			musicSate=true;
    			midiPlayer.playMusic();
    			break;
    		case KeyEvent.KEYCODE_DPAD_DOWN:
    			musicStateShow.setText("当前音乐状态:关");
    			musicSate=false;
    			midiPlayer.freeMusic();
    			break;
    		default:
    			break;
    		}
    		return super.onKeyUp(keyCode, event);
    	}
    	
    	/**
    	 * 按键按下事件
    	 */
    	@Override
    	public boolean onKeyDown(int keyCode, KeyEvent event) {
    		//退出应用程序时保存数据
    		if(keyCode==KeyEvent.KEYCODE_BACK){
    			SharedPreferences sharedPreferences=getSharedPreferences("music", MODE_PRIVATE);
    			Editor editor=sharedPreferences.edit();  //取得编辑对象
    			editor.putBoolean("mState", musicSate);   //加入�数据
    			editor.commit();     //保存
    			if(musicSate){
    				midiPlayer.freeMusic();
    			}
    			finish();
    		}
    		return super.onKeyDown(keyCode, event);
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    
    }
    

    MIDIPlayer.java

    package com.example.l3_sharedpreferences.model;
    
    import java.io.IOException;
    import com.example.l3_sharedpreferences.R;
    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 freeMusic() {
    		if (playerMusic != null) {
    			playerMusic.stop();
    			playerMusic.release();
    		}
    	}
    }
    

    activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >
    
        <TextView
            android:id="@+id/musicStateShow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/currentMusic"/>
    
    </RelativeLayout>









  • 相关阅读:
    错误网络异常:android.os.NetworkOnMainThreadException
    方法服务android学习笔记42_服务的生命周期
    芯片软件随想录(关于核心技术)
    数组比特【编程珠玑】如何优化程序打印出小于100000的素数
    宋体函数Java乔晓松oracle分组函数
    调试客户端windbg远程调试方法
    方法对象Hibernate联合主键
    文件运行跟踪 root.sh 的 执行过程
    移植交叉编译pcDuino + busybox 成功搭建最小linux系统
    方法定制iOS学习笔记8UITableView的定制
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3899929.html
Copyright © 2020-2023  润新知