学习Android之SharedPreferences使用
2024-10-11 21:06:18
效果图例如以下:
当我们想让自己的属性设置保存下来,这时就须要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>
最新文章
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(36)-文章发布系统③-kindeditor使用
- java读写Properties属性文件公用方法
- linux ubuntu14 更改为root用户登录
- Android剪贴板操作----ClipboardManager
- MySQL主键删除/添加
- netsh-winsock-reset;ping的通公网IP和DNS地址和内网网关,就是不能解析域名;
- 2016年度 JavaScript 展望(下)
- 使用Jekyll搭建博客
- 关于调用系统照相机Activity被销毁问题解决
- linux 下面 opcache 拓展
- HTML+CSS笔记 CSS进阶续集
- Problem A: 求平均年龄
- SpringMVC RequestMapping注解
- RVM 安装 Ruby
- mybatis 之数据库 include refid =";base_column_list";
- Android ios嵌套web页面
- Ubuntu如何启用root用户登录
- Log4Net帮助类
- 用keras实现lstm 利用Keras下的LSTM进行情感分析
- c++ 指定长度容器元素的拷贝(copy_n)
热门文章
- [Javascript] Regex: &#39;$`&#39;, &#39;$&;&#39;, &#39;$&#39;&#39;
- ASP.net button类控件click事件中传递参数
- C# 操作 AppSettings节点
- 正则表达式,Regex类
- ASP.NET MVC4 + Highcharts生成报表
- BZOJ 3926 &;&; ZJOI 2015 诸神眷顾的幻想乡 (广义后缀自动机)
- windbg vmware win7联机调试环境搭建
- 微信分享jssdk config:invalid signature 签名错误
- python3连接mysql
- 配置Kestrel 网址Urls