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);
|
||||
}
|
||||
}
|
||||
}
|
||||
156
app/src/main/java/com/ckkj/water/guide/LaunchActivity.java
Normal file
156
app/src/main/java/com/ckkj/water/guide/LaunchActivity.java
Normal file
@@ -0,0 +1,156 @@
|
||||
package com.ckkj.water.guide;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.View;
|
||||
|
||||
import com.ckkj.water.login.LoginActivity;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.ckkj.water.ConstantUtil;
|
||||
import com.ckkj.water.MyApplication;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseActivity;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.databinding.GuideLayoutBinding;
|
||||
import com.ckkj.water.main.MainContract;
|
||||
import com.ckkj.water.main.MainImpl;
|
||||
import com.ckkj.water.main.MainPresenter;
|
||||
import com.ckkj.water.main.activity.MainActivity;
|
||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||
import com.ckkj.water.mine.WebviewUserAgreement;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.utils.dataUtil.SharePreUtil;
|
||||
import com.ckkj.water.utils.manager.ActivityManager;
|
||||
|
||||
import me.jessyan.autosize.internal.CancelAdapt;
|
||||
import me.jessyan.autosize.internal.CustomAdapt;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/7/7
|
||||
* @description TODO: 启动页面
|
||||
*/
|
||||
|
||||
public class LaunchActivity extends BaseActivity<GuideLayoutBinding, MainPresenter>
|
||||
implements MainContract.MainView, CancelAdapt {
|
||||
private boolean mIsFirstEnterApp = false;
|
||||
|
||||
@Override
|
||||
public void initData(Bundle savedInstanceState) {
|
||||
super.initData(savedInstanceState);
|
||||
viewBinding.includeTitle.imgBack.setVisibility(View.GONE);
|
||||
viewBinding.includeTitle.tvTitle.setVisibility(View.GONE);
|
||||
ImmersionBar.with(this)
|
||||
.statusBarColor(R.color.white)
|
||||
.statusBarDarkFont(true)
|
||||
.titleBar(viewBinding.rlTitle) // 替换为你的标题栏View
|
||||
.keyboardEnable(true)
|
||||
.navigationBarDarkIcon(true)
|
||||
.init();
|
||||
mIsFirstEnterApp = SharePreUtil.getBooleanDefTrue(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.FIRST_ENTER_APP_AGREEMENT_TIPS);
|
||||
//首次进入,弹框提示隐私政策
|
||||
if (mIsFirstEnterApp) {
|
||||
//首次进入
|
||||
showDialogtext("温馨提示", mContext.getResources().getString(R.string.tips_yinsizhengce_dialog),
|
||||
"同意", "拒绝", "用户隐私协议", new OnDialogClick() {
|
||||
|
||||
@Override
|
||||
public void onCancelClick() {
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfirmClisk() {
|
||||
//第一次进入App隐私弹窗是否显示
|
||||
SharePreUtil.putBoolean(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.FIRST_ENTER_APP_AGREEMENT_TIPS, false);
|
||||
//用户是否同意了隐私政策
|
||||
SharePreUtil.putBoolean(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.PRIVACY_POLICY_AGREED, true);
|
||||
MyApplication app = (MyApplication) getApplicationContext();
|
||||
app.initializeUmengSDK();
|
||||
goTo(mContext, GuideActivity.class, null);
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfirmClisk(String content) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onView1Click() {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt("from_requse_code", WebviewUserAgreement.PRIVACY_CODE);
|
||||
goToWihoutNoPresent(mContext, WebviewUserAgreement.class, bundle);
|
||||
}
|
||||
}, false, true);
|
||||
} else {
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Intent intent = new Intent(mContext, MainActivity.class);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
}
|
||||
}, 2000);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (dialog != null && dialog.isShowing()) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
ActivityManager.removeAllActivity();
|
||||
finish();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public MainPresenter createPresenter() {
|
||||
return new MainPresenter(new MainImpl());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutResId(Bundle savedInstanceState) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showError(String message) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOut(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void getAppVersionSuccess(CheckVersionEntity bean) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void activationVipSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getVersionCheck(CheckVersionEntity entity) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getYunshiDataSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getUserInfoSuccess(MineUserInfoBean bean) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user