1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 闪屏页新手引导页面主页判断跳转的逻辑

闪屏页新手引导页面主页判断跳转的逻辑

时间:2020-12-05 13:42:18

相关推荐

闪屏页新手引导页面主页判断跳转的逻辑

闪屏页的实现 :

import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.animation.AlphaAnimation;import android.view.animation.Animation;import android.view.animation.Animation.AnimationListener;import android.view.animation.AnimationSet;import android.view.animation.RotateAnimation;import android.view.animation.ScaleAnimation;import android.widget.RelativeLayout;import com.example.pc.zhbj52.utils.PrefUtils;/*** 闪屏页* * @author Kevin* */public class SplashActivity extends Activity {RelativeLayout rlRoot;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_splash);rlRoot = (RelativeLayout) findViewById(R.id.rl_root);startAnim();//LibUtils.doSomething();//rlRoot.setBackgroundResource(R.drawable.newscenter_press);}/*** 开启动画*/private void startAnim() {// 动画集合AnimationSet set = new AnimationSet(false);// 旋转动画RotateAnimation rotate = new RotateAnimation(0, 360,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);rotate.setDuration(1000);// 动画时间rotate.setFillAfter(true);// 保持动画状态// 缩放动画ScaleAnimation scale = new ScaleAnimation(0, 1, 0, 1,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);scale.setDuration(1000);// 动画时间scale.setFillAfter(true);// 保持动画状态// 渐变动画AlphaAnimation alpha = new AlphaAnimation(0, 1);alpha.setDuration(2000);// 动画时间alpha.setFillAfter(true);// 保持动画状态set.addAnimation(rotate);set.addAnimation(scale);set.addAnimation(alpha);// 设置动画监听set.setAnimationListener(new AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationRepeat(Animation animation) {}// 动画执行结束@Overridepublic void onAnimationEnd(Animation animation) {jumpNextPage();}});rlRoot.startAnimation(set);}/*** 跳转下一个页面*/private void jumpNextPage() {// 判断之前有没有显示过新手引导boolean userGuide = PrefUtils.getBoolean(this, "is_user_guide_showed",false);if (!userGuide) {// 跳转到新手引导页startActivity(new Intent(SplashActivity.this, GuideActivity.class));} else {startActivity(new Intent(SplashActivity.this, MainActivity.class));}finish();}}

工具类

import android.content.Context;import android.content.SharedPreferences;/*** SharePreference封装* * @author Kevin* */public class PrefUtils {public static final String PREF_NAME = "config";public static boolean getBoolean(Context ctx, String key,boolean defaultValue) {SharedPreferences sp = ctx.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);return sp.getBoolean(key, defaultValue);}public static void setBoolean(Context ctx, String key, boolean value) {SharedPreferences sp = ctx.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);sp.edit().putBoolean(key, value).commit();}}

在新手引导页的写法是

btnStart.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 更新sp, 表示已经展示了新手引导PrefUtils.setBoolean(GuideActivity.this,"is_user_guide_showed", true);

在主页面不需要再做判断 ,因为闪屏页已经判断了。

另外一种类似的写法,但是比较全

欢迎页

import android.app.Activity;import android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.os.Handler;public class WelcomeAct extends Activity {private static final int TIME = 2000;private static final int GO_HOME = 1000;private static final int GO_GUIDE = 1001;private Handler mHandler = new Handler() {public void handleMessage(android.os.Message msg) {switch (msg.what) {case GO_HOME:goHome();break;case GO_GUIDE:goGuide();break;}};};@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.welcome);init();}private void init() {// SharedPreferences perPreferences = getSharedPreferences("jike", MODE_PRIVATE);//app第一次打开,获取的值“isFristIn”默认的值是true// isFirstIn = perPreferences.getBoolean("isFirstIn", true);!isFristIn意思是!trueboolean userGuide = PrefUtils.getBoolean(this, "isFirstIn",false);if (userGuide) {//进入主页,进入的时候还有一个时间的延时mHandler.sendEmptyMessageDelayed(GO_HOME, TIME);} else {//进入引导页 进入的时候还有一个时间的延时mHandler.sendEmptyMessageDelayed(GO_GUIDE, TIME);//储存值“isFristIn”// Editor editor = perPreferences.edit();// editor.putBoolean("isFirstIn", false);// mit();}}private void goHome() {Intent i = new Intent(WelcomeAct.this, MainActivity.class);startActivity(i);finish();}private void goGuide() {Intent i = new Intent(WelcomeAct.this, Guide.class);startActivity(i);finish();}}

新手引导页

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.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import java.util.ArrayList;import java.util.List;public class Guide extends Activity implements OnPageChangeListener {private ViewPager vp;private ViewPagerAdapter vpAdapter;private List<View> views;private ImageView[] dots;private int[] ids = {R.id.iv1, R.id.iv2, R.id.iv3};private Button start_btn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.guide);initViews();initDots();}private void initViews() {LayoutInflater inflater = LayoutInflater.from(this);views = new ArrayList<View>();views.add(inflater.inflate(R.layout.one, null));views.add(inflater.inflate(R.layout.two, null));views.add(inflater.inflate(R.layout.three, null));//数据源vpAdapter = new ViewPagerAdapter(views, this);//列表视图vp = (ViewPager) findViewById(R.id.viewpager);//填充到ui activity中vp.setAdapter(vpAdapter);//第二个(第三幅图片"three")的views的buttonstart_btn = (Button) views.get(2).findViewById(R.id.start_btn);start_btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {//表示已经展示引导页PrefUtils.setBoolean(Guide.this,"isFirstIn",true);Intent i = new Intent(Guide.this, MainActivity.class);startActivity(i);finish();}});//这是一个回调方法vp.setOnPageChangeListener(this);}//找idprivate void initDots() {dots = new ImageView[views.size()];for (int i = 0; i < views.size(); i++) {dots[i] = (ImageView) findViewById(ids[i]);}}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}//这个是点进行改变的关键代码(页面被选中的状态)//只要你手指在滑动,就会触动这个方法里面的for循环语句,它会进行三次循环i=0,1,2然后跳出循环,每滑动一个页面就会调用一次@Overridepublic void onPageSelected(int arg0) {for (int i = 0; i < ids.length; i++) {//如果agr0的值等于i,arg0的值分别是0,1,2,i的值表示的是R.id.v1 v2 v3对应的三个点的id,就是对应的点//加在一起的意思是就是 页面对应相对应的点的idif (arg0 == i) {dots[i].setImageResource(R.drawable.login_point_selected);} else {dots[i].setImageResource(R.drawable.login_point);}}}}

适配器

import android.content.Context;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.View;import java.util.List;public class ViewPagerAdapter extends PagerAdapter {private List<View> views;private Context context;public ViewPagerAdapter(List<View> views, Context context) {this.views = views;this.context = context;}@Overridepublic void destroyItem(View container, int position, Object object) {//销毁views((ViewPager) container).removeView(views.get(position));}@Overridepublic Object instantiateItem(View container, int position) {((ViewPager) container).addView(views.get(position));return views.get(position);}@Overridepublic int getCount() {return views.size();}//判断当前的view是不是需要的对象@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return (arg0 == arg1);}}

主页

import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.View;import android.view.Menu;import android.view.MenuItem;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}}

工具类

import android.content.Context;import android.content.SharedPreferences;/*** Created by pc on /4/26.*/public class PrefUtils {public static final String PREF_NAME = "jike";//需要添加Context,这样就知道是哪个对象来调用getSharedPreferencedpublic static boolean getBoolean(Context ctx, String key,boolean defaultValue) {SharedPreferences sp = ctx.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);return sp.getBoolean(key, defaultValue);}public static void setBoolean(Context ctx,String key, boolean value) {SharedPreferences sp = ctx.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);sp.edit().putBoolean(key, value).commit();}}

源码地址: /s/1pLjBAMB

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。