前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习Android之SharedPreferences使用

学习Android之SharedPreferences使用

作者头像
全栈程序员站长
发布2022-07-12 16:48:16
3500
发布2022-07-12 16:48:16
举报

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

效果图例如以下:

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
<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.cn/118732.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年12月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档