first
This commit is contained in:
236
app/src/main/java/com/ckkj/water/guide/GuideActivity.java
Normal file
236
app/src/main/java/com/ckkj/water/guide/GuideActivity.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user