
引导页:就是我们没次安装一个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<ImageView>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<ImageView>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<ImageView>()
for(int i=0i<images.lengthi++){
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)
}
}
好了,复制上去就可以实现上面的效果。
1 目的区分 根据引导页的目的、出发点不同,可以将其分为功能介绍类、使用说明类、推广类、问题解决类,一般引导页不会超过5页。 功能介绍类 功能介绍类引导页主要是对产品的主要功能进行展示,让用户对产品主功能有一个大致的了解。你可以设置一个activity,然后启动定时任务,时间到了就跳转到主页,并且finish()掉当前页面。也可以在主页的activity里面做,开始设置setContentView为欢迎页,定时任务,时间到了setContentView为主页,这样还可以在此过程中做一些初始化工作
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)