247 lines
8.1 KiB
Java
247 lines
8.1 KiB
Java
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 registerSuccess(BaseBean bean) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void getPhoneCodeSuccess(BaseBean bean) {
|
|
}
|
|
|
|
@Override
|
|
public void loginBySmsCodeSuccess(LoginEntity entity) {
|
|
}
|
|
|
|
@Override
|
|
public void updateUserPasswordSuccess(BaseBean bean) {
|
|
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|