前两天写了这个的主要实现的原理,没有写详细代码实现,看得人不多,如今写出详细代码

代码贴出来,凝视已经非常具体,不多说,有问题能够留言 PS注意配合上一篇博客看源代码会更简单

SharedPreferencesUtil.java

package com.yufeng.yufenglashou.util;

import android.content.Context;

import com.yufeng.yufenglashou.moder.LaShouApplication;

public class SharedPreferencesUtil {

    public static void keepPreference(String key, String valse) {
        // Context.MODE_PRIVATE代表在data/data下创建的首选项文件是私有的
        LaShouApplication.context
                .getSharedPreferences("lashou", Context.MODE_PRIVATE).edit()
                .putString(key, valse).commit();// 记得获取edit对象后一定要commit提交
    }

    /**
     * 当返回空字符串则不存在
     * 
     * @param key
     * @return
     */
    public static String getPreference(String key) {
        // Context.MODE_PRIVATE代表在data/data下创建的首选项文件是私有的
        return LaShouApplication.context.getSharedPreferences("lashou",
                Context.MODE_PRIVATE).getString(key, "");
    }
}

HomeActivity.java

package com.yufeng.yufenglashou;

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

public class HomeActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Toast.makeText(this, "这是主页", Toast.LENGTH_LONG).show();
    }
}

GuideActivity.java


package com.yufeng.yufenglashou;

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.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

import com.yufeng.yufenglashou.adapter.GuideAdapter;

public class GuideActivity extends Activity {
    private Button guideButton;
    private ViewPager guideViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.guide);
        // 初始化view
        setUpView();
        // 给控件加入监听
        addListener();
    }

    private void addListener() {
        // 由于我们的引导页是在最后一个页面有一个button叫马上体验的
        // 本来button是默认不现实的。我们就须要监听guideViewpage的onpageChageListener
        guideViewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                // 当滚动状态的变化
                // 我们仅仅处理这里就能够了
                // 当为2的时候就是第三页
                if (arg0 == 2) {
                    // 设置显示
                    guideButton.setVisibility(View.VISIBLE);
                } else {
                    // 设置不显示
                    guideButton.setVisibility(View.GONE);
                }
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // 此方法将被调用时。当前页面滚动,不管是作为一个程序启动平滑滚动或用户发起的触摸滚动。
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // 此方法将被调用时,新的一页。成为选择。
            }
        });

        guideButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                GuideActivity.this.startActivity(new Intent(GuideActivity.this,
                        HomeActivity.class));
            }
        });
    }

    private void setUpView() {
        guideButton = (Button) findViewById(R.id.guide_button);
        guideViewPager = (ViewPager) findViewById(R.id.guide_viewpage);
        // 整理欢迎界面图片到控件
        List<View> guides = new ArrayList<View>();

        ImageView imageView = new ImageView(this);
        imageView.setImageResource(R.drawable.guide1);
        guides.add(imageView);

        ImageView imageView1 = new ImageView(this);
        imageView1.setImageResource(R.drawable.guide2);
        guides.add(imageView1);

        ImageView imageView11 = new ImageView(this);
        imageView11.setImageResource(R.drawable.guide3);
        guides.add(imageView11);
        GuideAdapter guideAdapter = new GuideAdapter(guides);
        guideViewPager.setAdapter(guideAdapter);
    }

}

GuideAdapter.java


package com.yufeng.yufenglashou.adapter;

import java.util.List;

import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;

public class GuideAdapter extends PagerAdapter {
    private List<View> views;

    public GuideAdapter(List<View> views) {
        this.views = views;
    }

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

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

    // 删除view
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
        object = null;
    }

    // 加入view
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(views.get(position));
        return views.get(position);
    }
}

LaShouApplication.java

package com.yufeng.yufenglashou.moder;

import android.app.Application;
import android.content.Context;

/**
 * 创建application要在androidmanifest里面注冊。不然是不会运行的 这个类在软件最先启动,最后挂
 * 
 * @author Administrator
 * 
 */
public class LaShouApplication extends Application {
    /**
     * 共享出自己以便其它地方用到
     */
    public static Context context;

    @Override
    public void onCreate() {
        super.onCreate();
        context = this;
    }
}

WelcomeActivity.java

package com.yufeng.yufenglashou;

import com.yufeng.yufenglashou.moder.LaShouApplication;
import com.yufeng.yufenglashou.util.SharedPreferencesUtil;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler.Callback;
import android.os.Message;

public class WelcomeActivity extends Activity {
    private String versionName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try {
            // 获取我们项目包名的管理器而且获取版本
            versionName = LaShouApplication.context.getPackageManager()
                    .getPackageInfo("com.yufeng.yufenglashou", 0).versionName;
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }
        // 界面什么都不做停留三秒以后运行到handlerMessage方法
        new Handler(new Callback() {

            @Override
            public boolean handleMessage(Message msg) {
                // 我们在这推断是不是第一次打开
                if (SharedPreferencesUtil.getPreference(versionName).equals(
                        "true")) {
                    // 不是第一次打开,跳转到主页
                    WelcomeActivity.this.startActivity(new Intent(
                            WelcomeActivity.this, HomeActivity.class));
                } else {
                    // 当取到的不是true就代表是""即没有存入就是第一次打开
                    // 跳转到引导页
                    WelcomeActivity.this.startActivity(new Intent(
                            WelcomeActivity.this, GuideActivity.class));
                    // 保存已经打开
                    SharedPreferencesUtil.keepPreference(versionName, "true");
                }
                return false;
            }
        }).sendEmptyMessageDelayed(0, 1500);
    }
}


转载于:https://www.cnblogs.com/lcchuguo/p/5166952.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐