当前位置 博文首页 > 李猫er:【Android项目实战 | 从零开始写app(三)】实现引导页,
一、【Android项目实战 | 从零开始写app(一)】 创建项目
二、【Android项目实战 | 从零开始写app(二)】实现闪屏页,启动app
三、【Android项目实战 | 从零开始写app(三)】实现引导页,进入登录or主页面
四、【Android项目实战 | 从零开始写app(四)】Okhttp+Gson实现服务端登录验证功能
五、【Android项目实战 | 从零开始写app(五)】okhttp+gson实现服务端注册功能
六、【Android项目实战 | 从零开始写app(六)】用TabLayout+ViewPager搭建App 框架主页面底部导航栏
七、【Android项目实战 | 从零开始写app(七)】优化主页导航栏,禁用主页页面滑动切换效果
八、【Android项目实战 | 从零开始写app(八)】实现app首页广告轮播图切换和搜索跳转
九、【Android项目实战 | 从零开始写app(九)】Tablayout+ViewPager实现页面分类顶部标题页面联动切换
十、【Android项目实战 | 从零开始写app(十)】Okhttp+glide+json+ListView实现新闻模块数据的填充显示
十一、【Android项目实战 | 从零开始写app(十一)】实现app首页智慧服务页面服务分类数据的解析及点击跳转
十二、【Android项目实战 | 从零开始写app(十二)】实现app首页智慧服务&热门推荐&热门主题、新闻
十三、【Android项目实战 | 从零开始写app(十三)】实现用户中心模块清除token退出登录&信息修改等功能
十四、【Android项目实战 | 从零开始写app(十四)】实现图片发布模块 | 必知必会之调用系统相机拍照、相册
十五、【Android项目实战 | 从零开始写app(教程汇总)】Android 项目实战系列汇总、源代码
本篇的项目文件如下:
在GuideActivity写入下面代码:
package com.example.myapp.activity;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.example.myapp.MainActivity;
import com.example.myapp.R;
import com.example.myapp.adapter.GuideAdapter;
import java.util.ArrayList;
import java.util.List;
public class GuideActivity extends AppCompatActivity {
private ViewPager vp;
private List<ImageView> imageViews;
private int[] imgs= {R.drawable.y0,R.drawable.y1,R.drawable.y2,R.drawable.y3};
private Button btn;
private ImageView[] dotViews;
private GuideAdapter adapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide);
vp= findViewById(R.id.guide_vp);
btn= findViewById(R.id.guide_btn);
//初始化图片
initImgs();
//初始化底部圆点指示器
initDots();
adapter= new GuideAdapter(imageViews);
vp.setAdapter(adapter);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor= getSharedPreferences("data", MODE_PRIVATE).edit();
editor.putString("isFirst", "1");
editor.commit();
Intent intent= new Intent(GuideActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
});
vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for (int i= 0; i< dotViews.length; i++){
if (position== i){
dotViews[i].setImageResource(R.drawable.guide_selector);
}else {
dotViews[i].setImageResource(R.drawable.guide_white);
}
if (position== dotViews.length- 1){
btn.setVisibility(View.VISIBLE);
}else {
btn.setVisibility(View.GONE);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
/**
* 初始化底部圆点指示器
*/
private void initDots() {
LinearLayout layout= findViewById(R.id.guide_ll);
LinearLayout.LayoutParams params= new LinearLayout.LayoutParams(20, 20);
params.setMargins(10, 0, 10, 0);
dotViews= new ImageView[imgs.length];
for (int i= 0; i< imageViews.size(); i++){
ImageView imageView= new ImageView(this);
imageView.setLayoutParams(params);
imageView.setImageResource(R.drawable.guide_white);
if (i== 0){
imageView.setImageResource(R.drawable.guide_selector);
}else{
imageView.setImageResource(R.drawable.guide_white);
}
dotViews[i]= imageView;
final int finalI = i;
dotViews[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
vp.setCurrentItem(finalI);
}
});
layout.addView(imageView);
}
}
/**
* 初始化图片
*/
private void initImgs() {
ViewPager.LayoutParams params= new ViewPager.LayoutParams();
imageViews= new ArrayList<ImageView>();
for (int i= 0; i< imgs.length; i++){
ImageView imageView= new ImageView(this);
imageView.setLayoutParams(params);
imageView.setImageResource(imgs[i]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageViews.add(imageView);
}
}
}
在adapter文件夹新建GuideAdapter.class 类,继承PagerAdapter 类,重写其中的几个方法:
package com.example.myapp.adapter;
/**
* @ProjectName: MyApp
* @Package: com.example.myapp.adapter
* @ClassName: GuideAdapter
* @Description:
* @Author: liyingxia
* @CreateDate: 2021/4/13 13:41
*/