学习Android之SharedPreferences使用

学习Android之SharedPreferences使用

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

效果图例如以下:

学习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>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118732.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 零基础学Java(2)数据类型与变量

    零基础学Java(2)数据类型与变量前言Java是一种强类型语言。这就意味着必须为每一个变量声明一种类型。在Java中,一共8种基本类型,其中有4种整型、2种浮点型、1种字符串类型char(用于表示Unicode编码的代码单元)和1种

    2022年8月7日
    0
  • php替换字符串中,PHP 替换字符串中的一些字符方法介绍

    php替换字符串中,PHP 替换字符串中的一些字符方法介绍在php中替换字符串我们都会使用到str_replace函数了,此函数还可以使用正则,下面小编来给大家介绍一下替换字符串中的一些字符或替换第一次出现的字符实例。现在有个需求:字符串A与字符串B,字符串B中包含字符串A,利用字符串A将字符串B中的A替换成其他字符串或删除。利用PHP函数,str_ireplace()与str_replace()可以做到。一、str_ireplace(find,r…

    2022年5月10日
    39
  • VS 2017 产品密钥

    VS 2017 产品密钥个人分类 nbsp vs2010Visual VS2017 企业版 Enterprise 注册码 NJVYC BMHX2 G77MM 4XJMR 6Q8QFVisualS VS2017 专业版 Professional 激活码 key KBJFW NXHK6 W4WJM CRMQB G3CDH 启动 VS 之后 在菜单栏有个帮助的下拉框 选择注册产品

    2025年7月16日
    0
  • xshell连接虚拟机步骤_建立主机与vm虚拟机的网络连接

    xshell连接虚拟机步骤_建立主机与vm虚拟机的网络连接Xshell连接虚拟机1、打开虚拟机终端,输入下面命令,找到ens33对应的IP地址,如图ifconfig2、打开Xshell,打开文件–>新建3、填写名称,主机这里填入刚才的IP,点击连接4、输入登录的用户名,点击确定5、输入密码,点击确定6、连接成功,可以开始使用…

    2022年4月19日
    67
  • macOS升级node

    macOS升级nodemacOS升级node1、安装node管理模块nnpminstall-gn2、安装需要升级的node版本sudon16.14.03、关闭终端重新打开,查看node版本验证升级完成node-v

    2025年5月27日
    0
  • 使用pycharm的interpreter option为空解决办法「建议收藏」

    使用pycharm的interpreter option为空解决办法「建议收藏」新的py文件,点击直接使用pycharm打开,运行报错,interpreteroption为空第一步:选择File,进入Settings。第二步:1.选择Project中的ProjectInterpreter。2.选择下拉中的pathon解释器,如图为3.6的解释权。3.选择Apply,使设置生效。运行代码成功。…

    2025年7月22日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号