Android SharedPreferences 首次运行引导界面

     写之前先对SharedPreferences做个简要介绍。
    做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等耗时大大影响了程序的效率,因此我们使用键值这种一一对应的关系来存放这些配置信息。SharedPreferences正是Android中用于实现这中存储方式的技术。
 
SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据。SharedPreferences只能保存简单类型的数据,例如,String、int等。一般会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存。

 
    使用SharedPreferences保存key-value对的步骤如下:
 (1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,
其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定。
 (2)使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。
  3)通过SharedPreferences.Editor接口的putXxx方法保存key-value对。
其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。
 (4)通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。


具体代码的书写流程为:
 
A、存放数据信息
1、打开Preferences,名称为setting,如果存在则打开它,否则创建新的Preferences
SharedPreferences settings = getSharedPreferences(“setting”, 0);
2、让setting处于编辑状态
SharedPreferences.Editor editor = settings.edit();
3、存放数据
editor.putString(“name”,”str”);
4、完成提交
editor.commit();
B、读取数据信息
1、获取Preferences
SharedPreferences settings = getSharedPreferences(“setting”, 0);
2、取出数据
String name = settings.getString(“name”,”默认值”);
以上就是Android中SharedPreferences的使用方法,其中创建的Preferences文件存放位置可以在Eclipse中查看:

DDMS->File Explorer /<package name>/shared_prefs/setting.xml

下面开始介绍代码:

主程序里进行判断是不是首次运行的:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        //setContentView(R.layout.activity_main);
        
        //判断是否首次运行
        SharedPreferences sp = this.getSharedPreferences("sp", 0);
        int count = sp.getInt("start_count", 0);
        
   //     Toast.makeText(this, String.valueOf(count)+"", Toast.LENGTH_SHORT).show();
        
        if(count == 0){
        	Editor editor = sp.edit();
        	//存入数据
        	editor.putInt("start_count", ++count);
        	//提交修改
        	editor.commit();
    //    	Toast.makeText(this, "Guide", Toast.LENGTH_SHORT).show();
        	Intent mIntent = new Intent();
		mIntent.setClass(SplashActivity.this, GuideActivity.class);
		SplashActivity.this.startActivity(mIntent);
		SplashActivity.this.finish();
        	//mhandler.sendEmptyMessageDelayed(SWITCH_GUIDE, 100);
        }
        else
        {
      //  	Toast.makeText(this, "Welcome", Toast.LENGTH_SHORT).show();
        	Intent mIntent = new Intent();
		mIntent.setClass(SplashActivity.this, Welcome.class);
		SplashActivity.this.startActivity(mIntent);
		SplashActivity.this.finish();
        }
        
    }

若是首次运行,跳转到GuideActivity类执行:

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.LinearLayout;

public class GuideActivity extends Activity implements OnClickListener
{

	private ViewPager mViewPager;
	private PagerAdapter mAdapter;
	private List<View> mViews = new ArrayList<View>();
	// TAB

	private Button mEnterButton;
	
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		initView();

		initEvents();
	}

	private void initEvents()
	{
		mViewPager.setOnPageChangeListener(new OnPageChangeListener()
		{

			@Override
			public void onPageSelected(int arg0)
			{
				

			}

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2)
			{

			}

			@Override
			public void onPageScrollStateChanged(int arg0)
			{

			}
		});
	}

	private void initView()
	{
		mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
	

		LayoutInflater mInflater = LayoutInflater.from(this);
		View tab01 = mInflater.inflate(R.layout.tab01, null);
		View tab02 = mInflater.inflate(R.layout.tab02, null);
		View tab03 = mInflater.inflate(R.layout.tab03, null);
		View tab04 = mInflater.inflate(R.layout.tab04, null);
		mViews.add(tab01);
		mViews.add(tab02);
		mViews.add(tab03);
		mViews.add(tab04);
		mEnterButton=(Button)tab04.findViewById(R.id.imgbtn_enter);
		mEnterButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
			Intent intent=new Intent(GuideActivity.this,Welcome.class);
			startActivity(intent);
			GuideActivity.this.finish();
			}
		});

		mAdapter = new PagerAdapter()
		{

			@Override
			public void destroyItem(ViewGroup container, int position,
					Object object)
			{
				container.removeView(mViews.get(position));
			}

			@Override
			public Object instantiateItem(ViewGroup container, int position)
			{
				View view = mViews.get(position);
				container.addView(view);
				return view;
			}

			@Override
			public boolean isViewFromObject(View arg0, Object arg1)
			{
				return arg0 == arg1;
			}

			@Override
			public int getCount()
			{
				return mViews.size();
			}
		};

		mViewPager.setAdapter(mAdapter);

	}

	@Override
	public void onClick(View v) {
		
	}


}

否则执行Welcome类中方法:

import android.app.Activity;
import android.os.Bundle;

public class Welcome extends Activity{
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.welcome);
	}
}

activity_main.xml文件内容如下:

<LinearLayout 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:orientation="vertical" >


    <android.support.v4.view.ViewPager
        android:id="@+id/id_viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         >
    </android.support.v4.view.ViewPager>

</LinearLayout>

还需要记得在AndroidMainfest.xml文件中声明类文件:

        <activity
            android:name="com.yayun.guide.SplashActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.yayun.guide.Welcome" >
        </activity>
        <activity android:name="com.yayun.guide.GuideActivity" >
        </activity>


运行效果如图:

(图片仅供参考)


文章参考:

http://blog.csdn.net/yayun0516/article/details/49019421

http://blog.sina.com.cn/s/blog_7ab107b00100u78t.html

源码下载

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值