Commit 89039f45 by amateur

1

1 parent b00c5e6c
...@@ -20,24 +20,23 @@ import com.bumptech.glide.Glide; ...@@ -20,24 +20,23 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.DrawableImageViewTarget; import com.bumptech.glide.request.target.DrawableImageViewTarget;
import com.bumptech.glide.request.transition.Transition; import com.bumptech.glide.request.transition.Transition;
import com.polysoft.nafmii.utils.IntentUtils; import com.polysoft.nafmii.utils.IntentUtils;
import com.whaty.nafmii.BuildConfig; import com.polysoft.nafmii.viewmodel.AdvertisementViewModel;
import com.whaty.nafmii.R; import com.whaty.nafmii.R;
import com.whaty.nafmii.activity.HomeActivity; import com.whaty.nafmii.activity.AdvertisementWebviewActvity;
import com.whaty.nafmii.activity.InputUrlActivity; import com.whaty.nafmii.activity.IActivityEvent;
import com.whaty.nafmii.activity.TestHomeActivity;
public class AdvertisementFragment extends Fragment implements View.OnClickListener { public class AdvertisementFragment extends Fragment implements View.OnClickListener {
private ImageView mImgView; private ImageView mImgView;
private TextView mCountDown; private TextView mCountDown;
private boolean finished = false;
private AdvertisementFragment() { public static AdvertisementFragment newInstance(String data) {
} AdvertisementFragment fragment = new AdvertisementFragment();
Bundle args = new Bundle();
public static Fragment getInstance(String data) { args.putString("data", data);
Fragment fragment = new AdvertisementFragment(); fragment.setArguments(args);
Bundle bundle = new Bundle();
bundle.putString("data", data);
fragment.setArguments(bundle);
return fragment; return fragment;
} }
...@@ -55,12 +54,26 @@ public class AdvertisementFragment extends Fragment implements View.OnClickListe ...@@ -55,12 +54,26 @@ public class AdvertisementFragment extends Fragment implements View.OnClickListe
this.mImgView = view.findViewById(R.id.advertisement_imgview); this.mImgView = view.findViewById(R.id.advertisement_imgview);
this.mCountDown = view.findViewById(R.id.advertisement_countdown); this.mCountDown = view.findViewById(R.id.advertisement_countdown);
this.loadAdvertisementImage(); this.mImgView.setOnClickListener(this);
AdvertisementViewModel.newInstance(getActivity()).observe(data ->{
System.out.println("=====>>>>>data ");
});
// this.loadAdvertisementImage();
this.loadAdvertisementImageTest();
} }
@Override @Override
public void onClick(View v) { public void onClick(View v) {
this.gotoHome(); if (v.getId() == R.id.advertisement_pass) {
this.dispatchActivityEvent();
} else if (v.getId() == R.id.advertisement_imgview) {
if (this.setFinishedFlag()) {
IntentUtils.startActivity(getActivity(), AdvertisementWebviewActvity.class);
}
}
} }
private void loadAdvertisementImage() { private void loadAdvertisementImage() {
...@@ -80,6 +93,12 @@ public class AdvertisementFragment extends Fragment implements View.OnClickListe ...@@ -80,6 +93,12 @@ public class AdvertisementFragment extends Fragment implements View.OnClickListe
}); });
} }
private void loadAdvertisementImageTest() {
this.mImgView.setImageResource(R.mipmap.advertisement);
this.startCountDown();
}
private void startCountDown() { private void startCountDown() {
long unit = 1000, maxSecond = 5; long unit = 1000, maxSecond = 5;
mCountDown.setText(String.format("%ds", maxSecond)); mCountDown.setText(String.format("%ds", maxSecond));
...@@ -87,24 +106,28 @@ public class AdvertisementFragment extends Fragment implements View.OnClickListe ...@@ -87,24 +106,28 @@ public class AdvertisementFragment extends Fragment implements View.OnClickListe
@Override @Override
public void onTick(long millisUntilFinished) { public void onTick(long millisUntilFinished) {
long second = millisUntilFinished / unit; long second = millisUntilFinished / unit;
Log.d("CountDownTimer", "onTick: " + second);
mCountDown.setText(String.format("%ds", second)); mCountDown.setText(String.format("%ds", second));
} }
@Override @Override
public void onFinish() { public void onFinish() {
gotoHome(); dispatchActivityEvent();
} }
}.start(); }.start();
} }
private synchronized void gotoHome() { private void dispatchActivityEvent() {
if (null != getActivity() && !getActivity().isFinishing()) { if (this.setFinishedFlag()) {
if (BuildConfig.SHOW_INPUT) { IActivityEvent activity = (IActivityEvent) getActivity();
IntentUtils.startActivity(getActivity(), InputUrlActivity.class); activity.dispatchEvent(IActivityEvent.EVENT_ADVERTISEMENT);
} else { }
IntentUtils.startActivity(getActivity(), HomeActivity.class); }
}
private synchronized boolean setFinishedFlag() {
if (!this.finished) {
this.finished = true;
return true;
} }
return false;
} }
} }
package com.whaty.nafmii.activity; package com.polysoft.nafmii.fragment;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.KeyEvent; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.RadioButton; import android.widget.RadioButton;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import com.polysoft.nafmii.utils.IntentUtils; import com.polysoft.nafmii.utils.IntentUtils;
import com.polysoft.nafmii.utils.SpUtils; import com.polysoft.nafmii.utils.SpUtils;
import com.whaty.nafmii.BuildConfig;
import com.whaty.nafmii.R; import com.whaty.nafmii.R;
import com.whaty.nafmii.activity.IActivityEvent;
import com.whaty.nafmii.activity.TestHomeActivity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class GuideActivity extends BaseActivity implements View.OnClickListener { public class GuideFragment extends Fragment implements View.OnClickListener {
public static GuideFragment newInstance() {
Bundle args = new Bundle();
GuideFragment fragment = new GuideFragment();
fragment.setArguments(args);
return fragment;
}
@Nullable
@Override @Override
protected void onCreate(Bundle savedInstanceState) { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); return View.inflate(container.getContext(), R.layout.fragment_guide, null);
super.setContentView(R.layout.activity_guide);
this.initView();
} }
private void initView() { @Override
ViewPager viewPager = super.findViewById(R.id.guide_viewpager); public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
this.initView(view);
}
private void initView(View view) {
ViewPager viewPager = view.findViewById(R.id.guide_viewpager);
List<View> viewList = this.initGuideImage(); List<View> viewList = this.initGuideImage();
viewPager.setAdapter(new ViewPagerAdapter(viewList)); viewPager.setAdapter(new ViewPagerAdapter(viewList));
viewPager.setCurrentItem(0); viewPager.setCurrentItem(0);
RadioButton point1 = super.findViewById(R.id.guide_point1); RadioButton point1 = view.findViewById(R.id.guide_point1);
RadioButton point2 = super.findViewById(R.id.guide_point2); RadioButton point2 = view.findViewById(R.id.guide_point2);
RadioButton point3 = super.findViewById(R.id.guide_point3); RadioButton point3 = view.findViewById(R.id.guide_point3);
RadioButton[] points = new RadioButton[]{point1, point2, point3}; RadioButton[] points = new RadioButton[]{point1, point2, point3};
View goHomeBtn = super.findViewById(R.id.guide_btn_gohome); View goHomeBtn = view.findViewById(R.id.guide_btn_gohome);
goHomeBtn.setOnClickListener(this); goHomeBtn.setOnClickListener(this);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
...@@ -65,7 +81,7 @@ public class GuideActivity extends BaseActivity implements View.OnClickListener ...@@ -65,7 +81,7 @@ public class GuideActivity extends BaseActivity implements View.OnClickListener
List<View> viewList = new ArrayList<>(); List<View> viewList = new ArrayList<>();
int match = ViewGroup.LayoutParams.MATCH_PARENT; int match = ViewGroup.LayoutParams.MATCH_PARENT;
for (int i = 0; i < arrays.length; i++) { for (int i = 0; i < arrays.length; i++) {
ImageView imageView = new ImageView(this); ImageView imageView = new ImageView(getContext());
imageView.setImageResource(arrays[i]); imageView.setImageResource(arrays[i]);
imageView.setLayoutParams(new ViewGroup.LayoutParams(match, match)); imageView.setLayoutParams(new ViewGroup.LayoutParams(match, match));
imageView.setScaleType(ImageView.ScaleType.FIT_XY); imageView.setScaleType(ImageView.ScaleType.FIT_XY);
...@@ -77,20 +93,10 @@ public class GuideActivity extends BaseActivity implements View.OnClickListener ...@@ -77,20 +93,10 @@ public class GuideActivity extends BaseActivity implements View.OnClickListener
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (v.getId() == R.id.guide_btn_gohome) { if (v.getId() == R.id.guide_btn_gohome) {
SpUtils.putBoolean("isFirstRun", true); ((IActivityEvent) getActivity()).dispatchEvent(IActivityEvent.EVENT_GUIDE);
// if (BuildConfig.SHOW_INPUT) {
// IntentUtils.startActivity(this, InputUrlActivity.class);
// } else {
// IntentUtils.startActivity(this, HomeActivity.class);
// }
IntentUtils.startActivity(this, TestActivity.class);
} }
} }
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return false;
}
class ViewPagerAdapter extends PagerAdapter { class ViewPagerAdapter extends PagerAdapter {
private List<View> viewList = new ArrayList<>(); private List<View> viewList = new ArrayList<>();
...@@ -122,4 +128,4 @@ public class GuideActivity extends BaseActivity implements View.OnClickListener ...@@ -122,4 +128,4 @@ public class GuideActivity extends BaseActivity implements View.OnClickListener
container.removeView(viewList.get(position)); container.removeView(viewList.get(position));
} }
} }
}
\ No newline at end of file \ No newline at end of file
}
package com.polysoft.nafmii.utils;
import android.os.CountDownTimer;
import android.os.Handler;
public class TimerUtils {
public static void setTimeOut(Handler.Callback callback, long millisInFuture) {
new CountDownTimer(millisInFuture, 1000) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
callback.handleMessage(null);
}
}.start();
}
}
package com.polysoft.nafmii.viewmodel;
import android.app.Activity;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelStoreOwner;
import com.polysoft.nafmii.utils.TimerUtils;
import com.whaty.nafmii.BuildConfig;
public class AdvertisementViewModel extends ViewModel {
private MutableLiveData<LiveData> data = new MutableLiveData<>();
private final LifecycleOwner owner;
public static AdvertisementViewModel newInstance(FragmentActivity owner) {
ViewModelProvider.Factory factory = new ViewModelProvider.Factory() {
@NonNull
@Override
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
return (T) new AdvertisementViewModel(owner);
}
};
return new ViewModelProvider(owner, factory).get(AdvertisementViewModel.class);
}
AdvertisementViewModel(LifecycleOwner owner) {
this.owner = owner;
System.out.println("=====================>>>>>AdvertisementViewModel");
TimerUtils.setTimeOut(msg -> {
this.data.setValue(new LiveData());
return false;
}, 1000);
}
public void observe(Observer<LiveData> observer) {
this.data.observe(this.owner, observer);
}
public static class LiveData {
public String json;
public boolean empty() {
if (BuildConfig.DEBUG) {
return true;
}
return TextUtils.isEmpty(json);
}
}
}
...@@ -4,6 +4,9 @@ import android.os.Bundle; ...@@ -4,6 +4,9 @@ import android.os.Bundle;
import android.view.KeyEvent; import android.view.KeyEvent;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.polysoft.nafmii.utils.StatusBarUtils; import com.polysoft.nafmii.utils.StatusBarUtils;
import com.polysoft.nafmii.utils.ToastUtils; import com.polysoft.nafmii.utils.ToastUtils;
...@@ -11,7 +14,7 @@ import com.polysoft.nafmii.utils.ToastUtils; ...@@ -11,7 +14,7 @@ import com.polysoft.nafmii.utils.ToastUtils;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
public class BaseActivity extends AppCompatActivity { public class BaseActivity extends AppCompatActivity implements IActivityEvent {
private boolean mBackKeyPressed = false; private boolean mBackKeyPressed = false;
...@@ -61,4 +64,18 @@ public class BaseActivity extends AppCompatActivity { ...@@ -61,4 +64,18 @@ public class BaseActivity extends AppCompatActivity {
} }
return super.onKeyDown(keyCode, event); return super.onKeyDown(keyCode, event);
} }
public FragmentTransaction newFragmentTransaction() {
FragmentManager manager = super.getSupportFragmentManager();
return manager.beginTransaction();
}
public Fragment findFragmentTag(String tag) {
return super.getSupportFragmentManager().findFragmentByTag(tag);
}
@Override
public void dispatchEvent(String event) {
}
} }
\ No newline at end of file \ No newline at end of file
package com.whaty.nafmii.activity;
public interface IActivityEvent {
String EVENT_GUIDE = "EVENT_GUIDE";
String EVENT_ADVERTISEMENT = "EVENT_ADVERTISEMENT";
void dispatchEvent(String event);
}
package com.whaty.nafmii.activity; package com.whaty.nafmii.activity;
import android.Manifest; import android.Manifest;
import android.annotation.SuppressLint;
import android.os.Bundle; import android.os.Bundle;
import android.os.CountDownTimer;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction; import androidx.fragment.app.FragmentTransaction;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.polysoft.nafmii.constants.ServerApi;
import com.polysoft.nafmii.enums.StateEnum;
import com.polysoft.nafmii.fragment.AdvertisementFragment; import com.polysoft.nafmii.fragment.AdvertisementFragment;
import com.polysoft.nafmii.net.RequestBack; import com.polysoft.nafmii.fragment.GuideFragment;
import com.polysoft.nafmii.utils.CtxUtils;
import com.polysoft.nafmii.utils.IntentUtils; import com.polysoft.nafmii.utils.IntentUtils;
import com.polysoft.nafmii.utils.PermissionUtils; import com.polysoft.nafmii.utils.PermissionUtils;
import com.polysoft.nafmii.utils.SpUtils; import com.polysoft.nafmii.utils.SpUtils;
import com.polysoft.nafmii.utils.TimerUtils;
import com.polysoft.nafmii.utils.ToastUtils; import com.polysoft.nafmii.utils.ToastUtils;
import com.polysoft.nafmii.viewmodel.AdvertisementViewModel;
import com.polysoft.nafmii.webview.X5Core; import com.polysoft.nafmii.webview.X5Core;
import com.whaty.nafmii.R; import com.whaty.nafmii.R;
public class MainActivity extends BaseActivity { public class MainActivity extends BaseActivity {
private static final String TAG = MainActivity.class.getName(); private AdvertisementViewModel.LiveData mAdvertisementData;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
...@@ -33,14 +31,6 @@ public class MainActivity extends BaseActivity { ...@@ -33,14 +31,6 @@ public class MainActivity extends BaseActivity {
this.checkAndRequestPermission(); this.checkAndRequestPermission();
} }
private void checkAndRequestPermission() {
String[] permissions = new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA
};
PermissionUtils.requestMorePermissions(this, permissions);
}
@Override @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode != PermissionUtils.REQUEST_CODE) { if (requestCode != PermissionUtils.REQUEST_CODE) {
...@@ -49,50 +39,69 @@ public class MainActivity extends BaseActivity { ...@@ -49,50 +39,69 @@ public class MainActivity extends BaseActivity {
if (this.checkPermissionSetting()) { if (this.checkPermissionSetting()) {
X5Core.init(); X5Core.init();
this.showAdvertisement(); this.showLayout();
} }
} }
@Override
public void dispatchEvent(String event) {
if (IActivityEvent.EVENT_GUIDE.equals(event)) {
SpUtils.putBoolean(getFirstRunKey(), true);
IntentUtils.startActivity(this, TestHomeActivity.class);
} else if (IActivityEvent.EVENT_ADVERTISEMENT.equals(event)) {
IntentUtils.startActivity(this, TestHomeActivity.class);
}
}
private void checkAndRequestPermission() {
String[] permissions = new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA
};
PermissionUtils.requestMorePermissions(this, permissions);
}
private boolean checkPermissionSetting() { private boolean checkPermissionSetting() {
// 必要读写权限申请失败 // 必要读写权限申请失败
if (!PermissionUtils.checkPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { if (!PermissionUtils.checkPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
ToastUtils.showLong("请授权APP必要运行权限"); ToastUtils.showLong("请授权APP必要运行权限");
new CountDownTimer(2000, 1000) { TimerUtils.setTimeOut(msg -> {
@Override PermissionUtils.toAppSetting(MainActivity.this);
public void onTick(long millisUntilFinished) { return false;
} }, 2000);
@Override
public void onFinish() {
PermissionUtils.toAppSetting(MainActivity.this);
}
}.start();
return false; return false;
} }
return true; return true;
} }
private void showAdvertisement() { private void showLayout() {
if (!SpUtils.getBoolean("isFirstRun", false)) { AdvertisementViewModel.newInstance(this).observe(data -> this.mAdvertisementData = data);
IntentUtils.startActivity(this, GuideActivity.class);
// 延时2秒获取广告数据
TimerUtils.setTimeOut(msg -> {
if (!SpUtils.getBoolean(this.getFirstRunKey(), false)) {
FragmentTransaction transaction = super.newFragmentTransaction();
transaction.replace(R.id.main_framelayout, GuideFragment.newInstance()).commit();
} else {
this.showAdvertisement();
}
return false;
}, 2000);
}
private synchronized void showAdvertisement() {
if (null == this.mAdvertisementData || this.mAdvertisementData.empty()) {
this.dispatchEvent(IActivityEvent.EVENT_ADVERTISEMENT);
return; return;
} }
ServerApi.get(ServerApi.getAdvertSettings, new RequestBack<JSONObject>() { FragmentTransaction transaction = super.newFragmentTransaction();
@Override Fragment fragment = AdvertisementFragment.newInstance("");
protected void onResponse(StateEnum state, JSONObject data, String message) { transaction.replace(R.id.main_framelayout, fragment).commit();
if (state == StateEnum.OK) {
JSONArray jsonArray = data.getJSONArray("item");
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject item = jsonArray.getJSONObject(i);
Fragment fragment = AdvertisementFragment.getInstance(item.toJSONString());
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.main_framelayout, fragment).commit();
return;
}
}
}
});
} }
@SuppressLint("DefaultLocale")
private String getFirstRunKey() {
int versionCode = CtxUtils.getPackageInfo().versionCode;
return String.format("ISFIRSTRUN_%d", versionCode);
}
} }
\ No newline at end of file \ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!