This commit is contained in:
fengjignqi
2026-05-16 16:19:39 +08:00
commit 1b1575eb8a
1632 changed files with 242221 additions and 0 deletions

View File

@@ -0,0 +1,236 @@
package com.ckkj.water.guide;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.animation.AlphaAnimation;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.core.content.ContextCompat;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.bumptech.glide.Glide;
import com.ckkj.water.AppConfig;
import com.ckkj.water.ConstantUtil;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.databinding.GuideActivityLayoutBinding;
import com.ckkj.water.login.entity.LoginEntity;
import com.ckkj.water.login.mvp.LoginContract;
import com.ckkj.water.login.mvp.LoginImpl;
import com.ckkj.water.login.mvp.LoginPresenter;
import com.ckkj.water.main.activity.MainActivity;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.utils.dataUtil.SharePreUtil;
import java.util.ArrayList;
import java.util.List;
public class GuideActivity extends BaseActivity<GuideActivityLayoutBinding, LoginPresenter>
implements LoginContract.LoginView {
private List<Drawable> mImgUrls = new ArrayList<>();
private List<ImageView> mPointList = new ArrayList<>();
private boolean mHasEnterAppFlag = false;
private String desc[] = {"探索你的个性特征",
"一键生成,智能排盘工具",
"贴心提供每日生活指南"};
private int[] guideDrawableIds = {
R.mipmap.img_guide_1,
R.mipmap.img_guide_2,
R.mipmap.img_guide_3
};
@Override
public LoginPresenter createPresenter() {
return new LoginPresenter(new LoginImpl());
}
@Override
public void initData(Bundle savedInstanceState) {
super.initData(savedInstanceState);
for (int resId : guideDrawableIds) {
mImgUrls.add(ContextCompat.getDrawable(mContext, resId));
}
mHasEnterAppFlag = SharePreUtil.getBoolean(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.FIRST_ENTER_APP_FLAG);
if (!mHasEnterAppFlag) {
viewBinding.viewpage.setAdapter(new MyAdapter());
viewBinding.viewpage.setPageTransformer(true, new CrossFadePageTransformer());
viewBinding.viewpage.setOffscreenPageLimit(1);
viewBinding.viewpage.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
setPointSelect(position);
if (position == mImgUrls.size() - 1) {
viewBinding.tvStart.setVisibility(View.VISIBLE);
AlphaAnimation fadeIn = new AlphaAnimation(0f, 1f);
fadeIn.setDuration(400);
viewBinding.tvStart.startAnimation(fadeIn);
} else {
viewBinding.tvStart.setVisibility(View.INVISIBLE);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
viewBinding.tvStart.setOnClickListener(v -> {
SharePreUtil.putBoolean(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.FIRST_ENTER_APP_FLAG, true);
Intent intent = new Intent(mContext, MainActivity.class);
startActivity(intent);
finish();
});
}
private void setPointSelect(int position) {
for (int i = 0; i < mPointList.size(); i++) {
mPointList.get(i).setImageResource(
i == position ? R.drawable.indicator_dot_selected : R.drawable.indicator_dot_normal);
}
}
private int dp2px(float dp) {
float density = getResources().getDisplayMetrics().density;
return Math.round(dp * density);
}
@Override
protected void initWidget() {
super.initWidget();
}
@Override
public void getPhoneCodeSuccess(BaseBean bean) {
}
@Override
public void loginBySmsCodeSuccess(LoginEntity entity) {
}
class MyAdapter extends PagerAdapter {
@Override
public int getCount() {
return mImgUrls.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object obj) {
return view == obj;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
FrameLayout page = new FrameLayout(mContext);
page.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
));
ImageView imageView = new ImageView(mContext);
imageView.setAdjustViewBounds(true);
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
Gravity.TOP | Gravity.CENTER_HORIZONTAL
);
imageView.setLayoutParams(lp);
Glide.with(mContext).load(mImgUrls.get(position)).into(imageView);
page.addView(imageView);
container.addView(page);
return page;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
/**
* Cross-fade page transition: outgoing page fades out (alpha 1→0),
* incoming page fades in (alpha 0→1) simultaneously.
*/
public class CrossFadePageTransformer implements ViewPager.PageTransformer {
private static final float MIN_ALPHA = 0.0f;
@Override
public void transformPage(@NonNull View page, float position) {
if (position < -1f) {
page.setAlpha(MIN_ALPHA);
} else if (position <= 0f) {
page.setAlpha(1f + position);
} else if (position <= 1f) {
page.setAlpha(1f - position);
} else {
page.setAlpha(MIN_ALPHA);
}
}
}
@RequiresApi(api = Build.VERSION_CODES.P)
@Override
public int getLayoutResId(Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
hideStatusBar();
}
hideBottomUIMenu();
return R.layout.guide_activity_layout;
}
@Override
public void showError(String message) {
}
@Override
public void logOut(BaseBean bean) {
}
@RequiresApi(api = Build.VERSION_CODES.P)
protected void hideStatusBar() {
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
getWindow().setAttributes(lp);
}
protected void hideBottomUIMenu() {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) {
View v = this.getWindow().getDecorView();
v.setSystemUiVisibility(View.GONE);
} else if (Build.VERSION.SDK_INT >= 19) {
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);
}
}
}