效果图例如以下:

当我们想让自己的属性设置保存下来,这时就须要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>

最新文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(36)-文章发布系统③-kindeditor使用
  2. java读写Properties属性文件公用方法
  3. linux ubuntu14 更改为root用户登录
  4. Android剪贴板操作----ClipboardManager
  5. MySQL主键删除/添加
  6. netsh-winsock-reset;ping的通公网IP和DNS地址和内网网关,就是不能解析域名;
  7. 2016年度 JavaScript 展望(下)
  8. 使用Jekyll搭建博客
  9. 关于调用系统照相机Activity被销毁问题解决
  10. linux 下面 opcache 拓展
  11. HTML+CSS笔记 CSS进阶续集
  12. Problem A: 求平均年龄
  13. SpringMVC RequestMapping注解
  14. RVM 安装 Ruby
  15. mybatis 之数据库 include refid =&quot;base_column_list&quot;
  16. Android ios嵌套web页面
  17. Ubuntu如何启用root用户登录
  18. Log4Net帮助类
  19. 用keras实现lstm 利用Keras下的LSTM进行情感分析
  20. c++ 指定长度容器元素的拷贝(copy_n)

热门文章

  1. [Javascript] Regex: &#39;$`&#39;, &#39;$&amp;&#39;, &#39;$&#39;&#39;
  2. ASP.net button类控件click事件中传递参数
  3. C# 操作 AppSettings节点
  4. 正则表达式,Regex类
  5. ASP.NET MVC4 + Highcharts生成报表
  6. BZOJ 3926 &amp;&amp; ZJOI 2015 诸神眷顾的幻想乡 (广义后缀自动机)
  7. windbg vmware win7联机调试环境搭建
  8. 微信分享jssdk config:invalid signature 签名错误
  9. python3连接mysql
  10. 配置Kestrel 网址Urls