前两天写了这个的主要实现的原理,没有写详细代码实现,看得人不多,如今写出详细代码
代码贴出来,凝视已经非常具体,不多说,有问题能够留言 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); } }