Commit 98f2faa0 authored by fallenstardust's avatar fallenstardust

由各fragment监听各自返回键

卡组fragment恢复引导设置,退出确认
parent 8a3c1fad
......@@ -172,5 +172,5 @@ public abstract class BaseFragemnt extends Fragment {
public abstract void onBackHome();
public abstract void onBackPressed();
public abstract boolean onBackPressed();
}
......@@ -46,6 +46,7 @@ import ocgcore.data.LimitList;
public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallBack, CardSearcher.CallBack {
public static final String SEARCH_MESSAGE = "searchMessage";
long exitLasttime = 0;
protected DrawerLayout mDrawerlayout;
protected CardSearcher mCardSelector;
protected CardListAdapter mCardListAdapter;
......@@ -74,7 +75,7 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
return layoutView;
}
public void initView(View layoutView){
public void initView(View layoutView) {
duelAssistantManagement = DuelAssistantManagement.getInstance();
intentSearchMessage = getActivity().getIntent().getStringExtra(CardSearchFragment.SEARCH_MESSAGE);
mResult_count = layoutView.findViewById(R.id.search_result_count);
......@@ -98,7 +99,7 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
if (mLimitManager.getCount() > 0) {
mCardLoader.setLimitList(mLimitManager.getTopLimit());
}
}).fail((e)->{
}).fail((e) -> {
Toast.makeText(getContext(), R.string.tip_load_cdb_error, Toast.LENGTH_SHORT).show();
Log.e(IrrlichtBridge.TAG, "load cdb", e);
}).done((rs) -> {
......@@ -246,14 +247,20 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
}
@Override
public void onBackPressed() {
public boolean onBackPressed() {
if (mDrawerlayout.isDrawerOpen(Constants.CARD_SEARCH_GRAVITY)) {
mDrawerlayout.closeDrawer(Constants.CARD_SEARCH_GRAVITY);
} else {
onBack();
//super.onBackPressed();
//与home相同双击返回
if (System.currentTimeMillis() - exitLasttime <= 3000) {
return false;
} else {
exitLasttime = System.currentTimeMillis();
Toast.makeText(getContext(), R.string.back_tip, Toast.LENGTH_SHORT).show();
}
}
return true;
}
protected void onCardClick(int pos, CardListProvider clt) {
if (isShowDrawer()) return;
......@@ -273,7 +280,7 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
if (mCardDetail == null) {
mCardDetail = new CardDetail((BaseActivity) getActivity(), mImageLoader, mStringManager);
mCardDetail.setCallBack((card, favorite) -> {
if(mCardSelector.isShowFavorite()) {
if (mCardSelector.isShowFavorite()) {
mCardSelector.showFavorites(false);
}
});
......
......@@ -11,6 +11,9 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.DashPathEffect;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
......@@ -44,6 +47,10 @@ import androidx.recyclerview.widget.ItemTouchHelperPlus;
import androidx.recyclerview.widget.OnItemDragListener;
import androidx.recyclerview.widget.RecyclerView;
import com.app.hubert.guide.NewbieGuide;
import com.app.hubert.guide.model.GuidePage;
import com.app.hubert.guide.model.HighLight;
import com.app.hubert.guide.model.HighlightOptions;
import com.feihua.dialogutils.util.DialogUtils;
import com.nightonke.boommenu.BoomButtons.BoomButton;
import com.nightonke.boommenu.BoomButtons.TextOutsideCircleButton;
......@@ -57,7 +64,6 @@ import org.greenrobot.eventbus.ThreadMode;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
......@@ -83,6 +89,7 @@ import cn.garymb.ygomobile.ui.cards.deck.DeckItem;
import cn.garymb.ygomobile.ui.cards.deck.DeckItemTouchHelper;
import cn.garymb.ygomobile.ui.cards.deck.DeckItemType;
import cn.garymb.ygomobile.ui.cards.deck.DeckLayoutManager;
import cn.garymb.ygomobile.ui.home.HomeActivity;
import cn.garymb.ygomobile.ui.mycard.mcchat.util.ImageUtil;
import cn.garymb.ygomobile.ui.plus.AOnGestureListener;
import cn.garymb.ygomobile.ui.plus.DefaultOnBoomListener;
......@@ -117,9 +124,10 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
//region ui onCreate/onDestroy
private RecyclerView mRecyclerView;
private DeckAdapater mDeckAdapater;
public DeckAdapater mDeckAdapater;
private final AppsSettings mSettings = AppsSettings.get();
private BaseActivity mContext;
long exitLasttime = 0;
private File mPreLoadFile;
private DeckItemTouchHelper mDeckItemTouchHelper;
......@@ -129,13 +137,13 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
private CardDetail mCardDetail;
private DialogPlus mDialog;
private DialogPlus builderShareLoading;
private boolean isExit = false;
private View layoutView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View layoutView;
layoutView = inflater.inflate(R.layout.fragment_deck_cards, container, false);
AnimationShake2(layoutView);
initView(layoutView);
......@@ -144,6 +152,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
if (!EventBus.getDefault().isRegistered(this)) {//加上判断
EventBus.getDefault().register(this);
}
showNewbieGuide("deckmain");
return layoutView;
}
......@@ -251,48 +260,24 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
}
@Override
public void onFirstUserVisible() {}
public void onFirstUserVisible() {
}
@Override
public void onUserVisible() {}
public void onUserVisible() {
}
@Override
public void onFirstUserInvisible() {}
public void onFirstUserInvisible() {
}
@Override
public void onUserInvisible() {
/*
if (mDeckAdapater.isChanged()) {
File ydk = mDeckAdapater.getYdkFile();
if (ydk != null && ydk.exists()) {
DialogPlus builder = new DialogPlus(getContext());
builder.setTitle(R.string.question);
builder.setMessage(R.string.quit_deck_tip);
builder.setMessageGravity(Gravity.CENTER_HORIZONTAL);
builder.setRightButtonText(getString(R.string.save_quit));
builder.setLeftButtonText(getString(R.string.quit));
builder.setRightButtonListener((dlg, s) -> {
doMenu(R.id.action_save);
dlg.dismiss();
isExit = true;
});
builder.setLeftButtonListener((dlg, s) -> {
dlg.dismiss();
isExit = true;
});
builder.show();
}
} else {
//super.onBackHome();
}
if (mDrawerLayout.isDrawerOpen(Constants.CARD_SEARCH_GRAVITY)) {
mDrawerLayout.closeDrawer(Constants.CARD_SEARCH_GRAVITY);
return;
}
if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {
mDrawerLayout.closeDrawer(Gravity.LEFT);
return;
}*/
@Override
public void onBackHome() {
}
@Override
......@@ -642,69 +627,43 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
return false;
}
@Override
public void onBackHome() {
if (mDeckAdapater.isChanged()) {
public void askBeforeQuit() {
File ydk = mDeckAdapater.getYdkFile();
if (ydk != null && ydk.exists()) {
DialogPlus builder = new DialogPlus(getContext());
builder.setTitle(R.string.question);
builder.setMessage(R.string.quit_deck_tip);
builder.setMessageGravity(Gravity.CENTER_HORIZONTAL);
builder.setRightButtonText(getString(R.string.save_quit));
builder.setLeftButtonText(getString(R.string.quit));
builder.setRightButtonListener((dlg, s) -> {
doMenu(R.id.action_save);
builder.setLeftButtonListener((dlg, s) -> {
getActivity().finish();
dlg.dismiss();
isExit = true;
});
builder.setLeftButtonListener((dlg, s) -> {
builder.setRightButtonListener((dlg, s) -> {
dlg.dismiss();
isExit = true;
});
builder.show();
}
} else {
//super.onBackHome();
}
if (mDrawerLayout.isDrawerOpen(Constants.CARD_SEARCH_GRAVITY)) {
mDrawerLayout.closeDrawer(Constants.CARD_SEARCH_GRAVITY);
return;
}
if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {
mDrawerLayout.closeDrawer(Gravity.LEFT);
return;
}
}
@Override
public void onBackPressed() {
public boolean onBackPressed() {
if (mDrawerLayout.isDrawerOpen(Constants.CARD_RESULT_GRAVITY)) {
mDrawerLayout.closeDrawer(Constants.CARD_RESULT_GRAVITY);
} else if (mDrawerLayout.isDrawerOpen(Constants.CARD_SEARCH_GRAVITY)) {
mDrawerLayout.closeDrawer(Constants.CARD_SEARCH_GRAVITY);
} else if (!isExit) {
if (mDeckAdapater.isChanged()) {
File ydk = mDeckAdapater.getYdkFile();
if (ydk != null && ydk.exists()) {
DialogPlus builder = new DialogPlus(getContext());
builder.setTitle(R.string.question);
builder.setMessage(R.string.quit_deck_tip);
builder.setMessageGravity(Gravity.CENTER_HORIZONTAL);
builder.setLeftButtonListener((dlg, s) -> {
dlg.dismiss();
isExit = true;
//finish();
});
builder.show();
}
} else if (mDeckAdapater.isChanged()) {
askBeforeQuit();
} else {
//super.onBackPressed();
}
//与home相同双击返回
if (System.currentTimeMillis() - exitLasttime <= 3000) {
return false;
} else {
//super.onBackPressed();
exitLasttime = System.currentTimeMillis();
Toast.makeText(getContext(), R.string.back_tip, Toast.LENGTH_SHORT).show();
}
}
return true;
}
private boolean checkLimit(Card cardInfo) {
SparseArray<Integer> mCount = mDeckAdapater.getCardCount();
......@@ -1288,7 +1247,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
public void onDragEnd() {
}
/*/https://www.jianshu.com/p/99649af3b191
//https://www.jianshu.com/p/99649af3b191
public void showNewbieGuide(String scene) {
HighlightOptions options = new HighlightOptions.Builder()//绘制一个高亮虚线圈
.setOnHighlightDrewListener((canvas, rectF) -> {
......@@ -1314,7 +1273,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
.addGuidePage(
GuidePage.newInstance().setEverywhereCancelable(true)
.setBackgroundColor(0xbc000000)
.addHighLightWithOptions(findViewById(R.id.deck_menu), HighLight.Shape.CIRCLE, options)
.addHighLightWithOptions(layoutView.findViewById(R.id.deck_menu), HighLight.Shape.CIRCLE, options)
.setLayoutRes(R.layout.view_guide_home)
.setOnLayoutInflatedListener((view, controller) -> {
//可只创建一个引导layout并把相关内容都放在其中并GONE,获得ID并初始化相应为显示
......@@ -1325,7 +1284,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
.addGuidePage(
GuidePage.newInstance().setEverywhereCancelable(true)
.setBackgroundColor(0xbc000000)
.addHighLightWithOptions(findViewById(R.id.nav_search), HighLight.Shape.CIRCLE, options)
.addHighLightWithOptions(layoutView.findViewById(R.id.nav_search), HighLight.Shape.CIRCLE, options)
.setLayoutRes(R.layout.view_guide_home)
.setOnLayoutInflatedListener((view, controller) -> {
TextView tv = view.findViewById(R.id.text_about);
......@@ -1336,7 +1295,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
.addGuidePage(
GuidePage.newInstance().setEverywhereCancelable(true)
.setBackgroundColor(0xbc000000)
.addHighLightWithOptions(findViewById(R.id.nav_list), HighLight.Shape.CIRCLE, options)
.addHighLightWithOptions(layoutView.findViewById(R.id.nav_list), HighLight.Shape.CIRCLE, options)
.setLayoutRes(R.layout.view_guide_home)
.setOnLayoutInflatedListener((view, controller) -> {
TextView tv = view.findViewById(R.id.text_about);
......@@ -1347,7 +1306,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
.addGuidePage(
GuidePage.newInstance().setEverywhereCancelable(true)
.setBackgroundColor(0xbc000000)
.addHighLightWithOptions(findViewById(R.id.tv_deckmanger), HighLight.Shape.CIRCLE, options2)
.addHighLightWithOptions(layoutView.findViewById(R.id.tv_deckmanger), HighLight.Shape.CIRCLE, options2)
.setLayoutRes(R.layout.view_guide_home)
.setOnLayoutInflatedListener((view, controller) -> {
TextView tv = view.findViewById(R.id.text_about);
......@@ -1367,9 +1326,9 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
tv.setText(R.string.guide_view_move_card);
})
)
//.alwaysShow(true)//总是显示,调试时可以打开
.alwaysShow(true)//总是显示,调试时可以打开
.show();
}
}*/
}
}
......@@ -264,15 +264,22 @@ public abstract class HomeActivity extends BaseActivity implements BottomNavigat
@Override
public void onBackPressed() {
if (fragment_mycard.isVisible() && fragment_mycard.onBackPressed())
return;
if (fragment_search.isVisible() && fragment_search.onBackPressed())
return;
if (fragment_deck_cards.isVisible() && fragment_deck_cards.onBackPressed())
return;
if (System.currentTimeMillis() - exitLasttime <= 3000) {
super.onBackPressed();
} else {
showToast(R.string.back_tip, Toast.LENGTH_SHORT);
exitLasttime = System.currentTimeMillis();
if (fragment_home.isVisible() || fragment_settings.isVisible())
Toast.makeText(getContext(), R.string.back_tip, Toast.LENGTH_SHORT).show();
}
}
protected abstract void checkResourceDownload(ResCheckTask.ResCheckListener listener);
protected abstract void openGame();
......
......@@ -192,7 +192,7 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene
//轮播图
public void initBanner(View view, Bundle saveBundle) {
Log.i("3.10.0看看", saveBundle+"");
Log.i("3.10.0看看", saveBundle + "");
xb_banner = view.findViewById(R.id.xb_banner);
cv_banner = view.findViewById(R.id.cv_banner);
cv_banner.post(() -> {
......@@ -622,8 +622,8 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene
}
@Override
public void onBackPressed() {
public boolean onBackPressed() {
return false;
}
/**
......
......@@ -23,6 +23,7 @@ import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
......@@ -56,6 +57,7 @@ public class MycardFragment extends BaseFragemnt implements View.OnClickListener
private static final int TYPE_MC_LOGIN = 0;
private static final int TYPE_MC_LOGIN_FAILED = 1;
private HomeActivity homeActivity;
long exitLasttime = 0;
//头像昵称账号
private ImageView mHeadView;
private TextView mNameView, mStatusView;
......@@ -287,14 +289,24 @@ public class MycardFragment extends BaseFragemnt implements View.OnClickListener
}
@Override
public void onBackPressed() {
if (mWebViewPlus.getUrl().equals(mMyCard.getMcMainUrl())) {
return;
public boolean onBackPressed() {
if (homeActivity.fragment_mycard_chatting_room.isVisible()) {
getChildFragmentManager().beginTransaction().hide(homeActivity.fragment_mycard_chatting_room).commit();
mWebViewPlus.setVisibility(View.VISIBLE);
rl_chat.setVisibility(View.VISIBLE);
} else if (mWebViewPlus.getUrl().equals(mMyCard.getMcMainUrl())) {
//与home相同双击返回
if (System.currentTimeMillis() - exitLasttime <= 3000) {
return false;
} else {
exitLasttime = System.currentTimeMillis();
Toast.makeText(getContext(), R.string.back_tip, Toast.LENGTH_SHORT).show();
}
}
if (mWebViewPlus.canGoBack()) {
if (mWebViewPlus.canGoBack() && !homeActivity.fragment_mycard_chatting_room.isVisible()) {
mWebViewPlus.goBack();
} else {
}
return true;
}
/**
......@@ -397,7 +409,7 @@ public class MycardFragment extends BaseFragemnt implements View.OnClickListener
@Override
public void onChatUserNull() {
pb_chat_loading.setVisibility(View.GONE);
HandlerUtil.sendMessage(handler, TYPE_MC_LOGIN_FAILED,"exception");
HandlerUtil.sendMessage(handler, TYPE_MC_LOGIN_FAILED, "exception");
tv_message.setText(R.string.logining_failed);
}
......
......@@ -159,7 +159,7 @@ public class MycardChatFragment extends BaseFragemnt implements ChatListener {
}
@Override
public void onBackPressed() {
public boolean onBackPressed() {
return true;
}
}
......@@ -179,7 +179,7 @@
android:id="@+id/text_about"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_gravity="center"
android:layout_margin="20dp"
android:paddingBottom="70dp"
android:shadowColor="#000000"
......
......@@ -170,7 +170,7 @@
<string name="donation">支持我们</string>
<string name="refresh">刷新</string>
<string name="select_deck">点击选择卡组</string>
<string name="quit_deck_tip">退出卡组编辑?</string>
<string name="quit_deck_tip">卡组未保存,是否退出本应用?</string>
<string name="deck_delete_text">拖到这里删除</string>
<string name="question_keep_cur_deck">保留当前卡牌?</string>
<string name="check_choose_file" formatted="false">确定选择这个 %s ?</string>
......
......@@ -169,10 +169,10 @@
<string name="all">All</string>
<string name="refresh">Refresh</string>
<string name="select_deck">Click here to select Deck</string>
<string name="quit_deck_tip">Quit deck editor?</string>
<string name="quit_deck_tip">Deck has not been saved yet, quit App?</string>
<string name="deck_delete_text">Drag here to delete</string>
<string name="question_keep_cur_deck">keep current cards?</string>
<string name="check_choose_file" formatted="false">Determine the choose %s </string>
<string name="check_choose_file" formatted="false">Determine the choose %s \?</string>
<string name="settings_deck_delete_dialog">Delete Card use dialog</string>
<string name="settings_deck_delete_dialog_desc">show delete card dialog in deck editor</string>
<string name="delete_card" formatted="false">Delete %s ?</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment