效果图例如以下:

当我们想让自己的属性设置保存下来,这时就须要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之SharedPreferences使用的更多相关文章

  1. 18.Android之SharedPreferences数据存储学习

    SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来 ...

  2. Android之SharedPreferences数据存储

    一.SharedPreferences保存数据介绍 如果有想要保存的相对较小键值集合,应使用SharedPreferences API.SharedPreferences对象指向包含键值对的文件并提供 ...

  3. 想学习Android开发

    最近被别人说知识面窄,心里受伤了.准备学学Android开发,如果能在手机里运行自己写的app,那是多么high ~~~ Android开发需要看什么资料呢? 说明:本人一直从事windows下的C+ ...

  4. 从零开始学习Android(一)Android环境的搭建

    好久没有开始写博客了,最近开始学习Android,所以想把学习的笔记都一一记录下来.一来是方便自己以后资料的查询,其次也是给Android新手朋友进行学习使用,再次也希 望得到高手的指点.废话少说,我 ...

  5. 《IT蓝豹》吹雪花demo,学习android传感器

    吹雪花demo,学习android传感器 吹雪花demo,学习android传感器,嘴巴对着手机底部吹一下就会出现飘着雪花效果. 算是学习android传感器效果.本例子主要是通过android.me ...

  6. 一起来学习Android自定义控件1

    概述 Android已经为我们提供了大量的View供我们使用,但是可能有时候这些组件不能满足我们的需求,这时候就需要自定义控件了.自定义控件对于初学者总是感觉是一种复杂的技术.因为里面涉及到的知识点会 ...

  7. android.content.SharedPreferences.edit()

    今天在实现一个保存用户设置到SharedPreferences时,出现了一个不能将数据保存到SharedPreferences中的情况.经过仔细的分析得出: android.content.Share ...

  8. 10个很棒的学习Android 开发的网站(转)

    看到江湖旅人 写的<10个很棒的学习iOS开发的网站 - 简书>,所以就忍不住写Android 啦,也希望对大家有帮助.我推荐的网站,都是我在学习Android 开发过程中发现的好网站,给 ...

  9. 学习android学习必备的java基础知识--四大内部类

    学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...

随机推荐

  1. Android万能分辨率适应法

    (1)获取屏幕的尺寸 WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); D ...

  2. Android 高仿微信头像截取 打造不一样的自定义控件

    转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/39761281,本文出自:[张鸿洋的博客] 1.概述 前面已经写了关于检测手势识别 ...

  3. [MVC4-基礎] 連動DropDownList - 使用jQuery、JSON

    剛開始學MVC4,以下是一些基礎的學習筆記! 先展示一下結果: 1.選擇申請部門 2.選好後申請部門鎖住防止USER修改並載入該部門所擁有的設備類型 一.資料庫 dept mf_fx 二.View ( ...

  4. DIV+CSS 自适应布局

    两栏布局,左边定宽200px,右边自适应.如何实现?我的第一个反应就是:用flex伸缩盒呀,然后balabala...说完之后,面试官说,还有没有别的方法?flex有些浏览器不支持嗯...我愣了一下, ...

  5. jQuery之.html()和.text()区别

    .html()//获取标签和内容 .text()//只获取内容

  6. 分享一个通用的分页SQL

    又很久没写博客,今天记录一个SQLserver通用分页存储过程(适用于SqlServer2000及以上版本) 1.支持连表 2.支持条件查询 USE [MYDB] GO /****** Object: ...

  7. 【2】最简单的Laravel5.1程序分析

    1.上图!说一下laravel的基本MVC(模型-控制器-视图)原理 2.具体分析 用户输入网址localhost:8888之后,首先请求发送到服务器的laravel应用的public目录下index ...

  8. Uva220 Othello

     Othello  Othello is a game played by two people on an 8 x 8 board, using disks that are white on on ...

  9. Java之集合类

    出处:http://blog.csdn.net/zhangerqing 一.集合类简介 数组是很常用的一种的数据结构,我们用它可以满足很多的功能,但是,有时我们会遇到如下这样的问题: 1.我们需要该容 ...

  10. 让WordPress的作者在后台只能看到自己的文章

    今天需要对WordPress后台进行调整,目的是为了只能让当前用户看见自己所发表的文章,而WordPress默认是登陆用户可以看到所有用户发表的文章. WordPress中的用户角色分的比较详细,作者 ...