如何App实现引导页和欢迎页

2024-11-22 14:35:41
推荐回答(1个)
回答(1):

欢迎页:这个在我们的微信里面就有这个,我们每一次打开微信的时候都有一个地球,那么这样就是欢迎页。欢迎页具有良好的数据缓存作用。
引导页:就是我们没次安装一个app的时候,前面都有几个图片。那么这个引导页有哪些作用,第一:它有教我们怎么使用这个app和接受这app。第二:有宣传的作用。

我们在这个功能中用到的知识点有ViewPage、ViewPage的适配器PageAdapter、ViewPage的滑动改变事件、、RadioGroupRadioButton的点击事件。
好,现在我们接下来上代码了。

这个就是我的项目结构。其中WActivity.class是欢迎页、FActivity.class是引导页、MyAdapter.class是ViewPage的适配、BasePageListen实现页面滑动的接口。
第一个我们先写WActivity这个类。
package com.example.office.startapp;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class WActivity extends AppCompatActivity {
private SharedPreferences sp;
private boolean isFirst;
//欢迎页面
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_w);
//获得共享参数对象
sp=getSharedPreferences("first", Context.MODE_PRIVATE);
//参数二 如果sp文件中没有记录的话 返回的默认值
isFirst=sp.getBoolean("isFirst",true);
//这里面的判断就是 如果是第一次进入app 那就跳转引导页
//不是第一次就跳到主页面
new Handler().postDelayed(new Runnable() {
SharedPreferences.Editor editor;
Intent intent;
@Override
public void run() {
if(isFirst){
intent =new Intent(WActivity.this,FActivity.class);
startActivity(intent);
WActivity.this.finish();
//把数据保存到sp里面
//获取可以向sp里面写入数据的对象
editor=sp.edit();
editor.putBoolean("first",false);
//提交我们的数据
editor.commit();
}else {
intent=new Intent(WActivity.this,MainActivity.class);
startActivity(intent);
WActivity.this.finish();
}
}
},1500);
}
}

下面我们就写MyAdpter这个类
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import java.util.List;

/**
* Created by OFFICE on 2016/8/9.
*/
public class MyAdapter extends PagerAdapter{
private List< ImageView > list;

private Context context;

public MyAdapter(Context context, List list) {
this.context = context;
this.list = list;
}

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

@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(list.get(position));
return list.get(position);
}
//里面有一个方法必须删除super.不删除会报错
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
}

我们写BasePageListen这个类

import android.support.v4.view.ViewPager;

/**
* Created by OFFICE on 2016/8/9.
*/
public class BasePageListen implements ViewPager.OnPageChangeListener{
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
}

最后我们写FActivit
import android.content.Intent;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import java.util.ArrayList;
import java.util.List;

//引导页

public class FActivity extends AppCompatActivity {
private List list;
private RadioGroup radioGroup;
private ViewPager viewPager;
private ImageView imageView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_f);
viewPager= (ViewPager) findViewById(R.id.viewPage);
radioGroup= (RadioGroup) findViewById(R.id.radiogroup);
imageView1= (ImageView) findViewById(R.id.image) ;
initView();
imageView1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FActivity.this, MainActivity.class);
startActivity(intent);
FActivity.this.finish();
}
});
MyAdapter myAdapter=new MyAdapter(this,list);
viewPager.setAdapter(myAdapter);
//viewPage变动RadioButton也在变动
viewPager.addOnPageChangeListener(new BasePageListen(){
@Override
public void onPageSelected(int position) {
RadioButton radioButton= (RadioButton) radioGroup.getChildAt(position);
radioButton.setChecked(true);
if(position==list.size()-1){
imageView1.setVisibility(View.VISIBLE);
}else {
imageView1.setVisibility(View.GONE);
}
}
});
//当点击RadioButton的时候,viewpage也在改变
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
viewPager.setCurrentItem(checkedId);
}
});
}
private void initView(){
int [] images={R.mipmap.yd1,R.mipmap.yd2,R.mipmap.yd3};
list=new ArrayList();
for(int i=0;i ImageView imageView=new ImageView(this);
imageView.setImageResource(images[i]);
list.add(imageView);
RadioButton radioButton=new RadioButton(this);
//设置radioButton的id
radioButton.setId(i);
//把ReaioButton放在group
radioGroup.addView(radioButton);
}
//设置默认选中的第一个按钮
//获得下标为0的按钮对象
RadioButton radioButton= (RadioButton) radioGroup.getChildAt(0);
radioButton.setChecked(true);
}
}

好了,复制上去就可以实现上面的效果。