Commit b555db14 authored by wangfugui's avatar wangfugui

new UI for webcrawler

parent 526ead6a
......@@ -29,7 +29,7 @@ android {
}
buildTypes {
debug {
debuggable false
debuggable true
buildConfigField 'boolean', 'DEBUG_MODE', 'true'
}
release {
......
......@@ -148,11 +148,6 @@
<!-- android:screenOrientation="landscape"-->
<activity
android:name="cn.garymb.ygomobile.ex_card.ExCardActivity"
android:theme="@style/AppTheme.Mycard"
android:launchMode="singleTop"
/>
<activity
android:name="cn.garymb.ygomobile.ex_card.ExCardActivity2"
android:theme="@style/AppTheme.Mycard"
......
......@@ -2,6 +2,7 @@ package cn.garymb.ygomobile.ex_card;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.appcompat.widget.Toolbar;
......@@ -25,24 +26,20 @@ public class ExCardActivity2 extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ex_card2);
toolbar = (Toolbar) findViewById(R.id.toolbar);
if (getSupportActionBar() == null) {
setSupportActionBar(toolbar);
} else {
toolbar.setVisibility(View.GONE);
}
getSupportActionBar().setTitle("Packages");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setOffscreenPageLimit(2);
tabLayout = (TabLayout) findViewById(R.id.packagetablayout);
createTabFragment();
List<ExCard> exCardList = this.getIntent()
.getParcelableArrayListExtra("exCardList");
List<ExCardLogItem> exCardLogItemList = this.getIntent()
.getParcelableArrayListExtra("exCardLogList");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("webCrawler", "excard activity destroy");
}
private void createTabFragment() {
adapter = new PackageTabAdapter(getSupportFragmentManager(), tabLayout);
viewPager.setAdapter(adapter);
......
package cn.garymb.ygomobile.ex_card;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
import cn.garymb.ygomobile.lite.R;
/**
* A simple {@link Fragment} subclass.
* Use the {@link ExCardFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class ExCardFragment extends Fragment {
private View layoutView;
private ExCardListAdapter mExCardListAdapter;
private RecyclerView mExCardListView;
private List<ExCard> dataList = new ArrayList<>();
public void setDataList(){
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
layoutView = inflater.inflate(R.layout.fragment_ex_card, container, false);
initView(layoutView);
Log.i("webCrawler", "excardfragment onCreateView");
return layoutView;
}
public void initView(View layoutView) {
mExCardListView = layoutView.findViewById(R.id.list_ex_card);
mExCardListAdapter = new ExCardListAdapter(R.layout.item_ex_card, dataList);
mExCardListView.setAdapter(mExCardListAdapter);
initButton();
}
public void initButton() {
}
}
\ No newline at end of file
......@@ -2,27 +2,94 @@ package cn.garymb.ygomobile.ex_card;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.util.Log;
import android.widget.ImageView;
import com.bumptech.glide.RequestBuilder;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.util.ArrayList;
import java.util.List;
import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.ImageLoader;
import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.glide.GlideCompat;
public class ExCardListAdapter extends BaseQuickAdapter<ExCard, BaseViewHolder> {
private ImageLoader imageLoader;
public ExCardListAdapter(int layoutResId, List<ExCard> data) {
super(layoutResId, data);
//use the imageLoader to load image from url
imageLoader = new ImageLoader(true);
public ExCardListAdapter(int layoutResId) {
super(layoutResId);
}
public void loadData() {
final DialogPlus dialog_read_ex = DialogPlus.show(getContext(), null, getContext().getString(R.string.fetch_ex_card));
VUiKit.defer().when(() -> {
String aurl = Constants.URL_YGO233_ADVANCE;
//Connect to the website
Document document = Jsoup.connect(aurl).get();
Element pre_card_content = document.getElementById("pre_release_cards");
Element tbody = pre_card_content.getElementsByTag("tbody").get(0);
Elements cards = tbody.getElementsByTag("tr");
if (cards.size() > 1000) {//Considering the efficiency of html parse, if the size of
// pre cards list is to large, return null directly.
return null;
}
ArrayList<ExCard> exCardList = new ArrayList<>();
for (Element card : cards) {
Elements card_attributes = card.getElementsByTag("td");
String imageUrl = card_attributes.get(0).getElementsByTag("a").attr("href");
String name = card_attributes.get(1).text();
String description = card_attributes.get(2).text();
ExCard exCard = new ExCard(name, imageUrl, description, 0);
exCardList.add(exCard);
}
if (exCardList.isEmpty()) {
return null;
} else {
return exCardList;
}
}).fail((e) -> {
//关闭异常
if (dialog_read_ex.isShowing()) {
try {
dialog_read_ex.dismiss();
} catch (Exception ex) {
}
}
//Log.i("webCrawler", "webCrawler fail");
}).done(exCardList -> {
if (exCardList != null) {
//Log.i("webCrawler", "webCrawler done");
getData().clear();
addData(exCardList);
notifyDataSetChanged();
}
//关闭异常
if (dialog_read_ex.isShowing()) {
try {
dialog_read_ex.dismiss();
} catch (Exception ex) {
}
}
});
}
@Override
......
......@@ -2,27 +2,41 @@ package cn.garymb.ygomobile.ex_card;
import android.content.Context;
import android.graphics.Typeface;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit;
public class ExCardLogAdapter extends BaseExpandableListAdapter {
public ExCardLogAdapter(Context context, List<ExCardLogItem> expandalbeList) {
this.expandalbeList = expandalbeList;
public ExCardLogAdapter(Context context) {
this.context = context;
}
private Context context;
private List<ExCardLogItem> expandalbeList;
private List<ExCardLogItem> expandalbeList = new ArrayList<>();
public void setData(List<ExCardLogItem> expandalbeList) {
this.expandalbeList = expandalbeList;
}
@Override
public int getChildrenCount(int groupPosition) {
return this.expandalbeList.get(groupPosition).getCount();
......@@ -78,12 +92,7 @@ public class ExCardLogAdapter extends BaseExpandableListAdapter {
}
TextView listTitleTextView = (TextView) convertView
.findViewById(R.id.listTitle);
if(groupPosition == 0){
listTitleTextView.setTextSize(15);
}else{
listTitleTextView.setTextSize(12);
}
listTitleTextView.setTypeface(null, Typeface.BOLD);
listTitleTextView.setText(expandalbeList.get(groupPosition).getDateTime());
return convertView;
}
......
package cn.garymb.ygomobile.ex_card;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -9,10 +10,19 @@ import android.widget.ExpandableListView;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit;
public class ExCardLogFragment extends Fragment {
......@@ -20,7 +30,6 @@ public class ExCardLogFragment extends Fragment {
private View layoutView;
private ExCardLogAdapter mExCardLogAdapter;
private ExpandableListView mExCardLogView;
private List<ExCardLogItem> dataList = new ArrayList<>();//TODO 把数据传入
@Override
......@@ -29,16 +38,81 @@ public class ExCardLogFragment extends Fragment {
super.onCreateView(inflater, container, savedInstanceState);
layoutView = inflater.inflate(R.layout.fragment_ex_card_log, container, false);
initView(layoutView);
loadData();
return layoutView;
}
public void initView(View layoutView) {
mExCardLogView = layoutView.findViewById(R.id.expandableListView);
mExCardLogAdapter = new ExCardLogAdapter(getContext(), dataList);
mExCardLogAdapter = new ExCardLogAdapter(getContext());
mExCardLogView.setAdapter(mExCardLogAdapter);
initButton();
}
public void loadData() {
final DialogPlus dialog_read_ex = DialogPlus.show(getContext(), null, getContext().getString(R.string.fetch_ex_card));
VUiKit.defer().when(() -> {
String aurl = Constants.URL_YGO233_ADVANCE;
//Connect to the website
Document document = Jsoup.connect(aurl).get();
Element pre_update_log = document.getElementById("pre_update_log");
ArrayList<ExCardLogItem> exCardLogList = new ArrayList<>();
Elements cardLogElements = pre_update_log.select("ul[class=auto-generated]").get(0).getElementsByTag("li");
pre_update_log.getElementsByTag("ul");
for (Element cardLog : cardLogElements) {
String judgeData = cardLog.toString();
Pattern p = Pattern.compile("<li>\\d{4}");
boolean result = p.matcher(judgeData).find();
if (result) {
Elements logItems = cardLog.getElementsByTag("li");
List<String> logs = new ArrayList<>();
logItems.get(0).select("ul").remove();
String dateTime = logItems.get(0).text();
for (int i = 1; i < logItems.size(); i++) {
logs.add(logItems.get(i).text());
}
exCardLogList.add(new ExCardLogItem(logs.size(), dateTime, logs));
} else {
continue;
}
}
if (exCardLogList.isEmpty()) {
return null;
} else {
return exCardLogList;
}
}).fail((e) -> {
//关闭异常
if (dialog_read_ex.isShowing()) {
try {
dialog_read_ex.dismiss();
} catch (Exception ex) {
}
}
Log.i("webCrawler", "webCrawler fail");
}).done(exCardLogList -> {
mExCardLogAdapter.setData(exCardLogList);
mExCardLogAdapter.notifyDataSetChanged();
public void initButton() {
mExCardLogView.expandGroup(0);
mExCardLogView.expandGroup(1);
mExCardLogView.expandGroup(2);
if (exCardLogList != null) {
Log.i("webCrawler", "webCrawler parse html complete");
}
//关闭异常
if (dialog_read_ex.isShowing()) {
try {
dialog_read_ex.dismiss();
} catch (Exception ex) {
}
}
});
}
}
\ No newline at end of file
package cn.garymb.ygomobile.ex_card;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
......@@ -20,11 +18,10 @@ public class PackageTabAdapter extends FragmentStatePagerAdapter {
}
@Override
public Fragment getItem(int position) {
Log.i("webCrawler", "getItem");
Fragment fragment = null;
if (position == 0)
{
fragment = new ExCardFragment();//TODO
fragment = new ExCardListFragment();//TODO
}
else if (position == 1)
{
......@@ -41,11 +38,11 @@ public class PackageTabAdapter extends FragmentStatePagerAdapter {
String title = null;
if (position == 0)
{
title = "Domestic";
title = "先行卡";//TODO
}
else if (position == 1)
{
title = "International";
title = "更新日志";
}
return title;
}
......
......@@ -41,17 +41,12 @@ import com.tubb.smrv.SwipeMenuRecyclerView;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import cn.garymb.ygodata.YGOGameOptions;
import cn.garymb.ygomobile.App;
......@@ -63,11 +58,8 @@ import cn.garymb.ygomobile.bean.Deck;
import cn.garymb.ygomobile.bean.ServerInfo;
import cn.garymb.ygomobile.bean.ServerList;
import cn.garymb.ygomobile.bean.events.ServerInfoEvent;
import cn.garymb.ygomobile.ex_card.ExCard;
import cn.garymb.ygomobile.ex_card.ExCardActivity;
import cn.garymb.ygomobile.bean.events.ExCardEvent;
import cn.garymb.ygomobile.ex_card.ExCardActivity2;
import cn.garymb.ygomobile.ex_card.ExCardLogItem;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.ImageLoader;
import cn.garymb.ygomobile.ui.activities.WebActivity;
......@@ -148,7 +140,6 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene
if (!EventBus.getDefault().isRegistered(this)) {//加上判断
EventBus.getDefault().register(this);
}
changeExCardNewMark();
changeColor();
//showNewbieGuide("homePage");
return layoutView;
......@@ -283,15 +274,16 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene
* 通过http访问web读取先行卡版本号。
* 读取结果通过handler发到ui线程
* 注意在ExCardActivity中包含一个相同实现
* ServerUtil获取到版本状态后会通过eventmessage通知调用本函数,不需要在主函数显式调用
*/
public void changeExCardNewMark() {
Log.i("webCrawler", "excard version " + ServerUtil.exCardState);
Log.i("webCrawler", "check excard new mark, version:" + ServerUtil.exCardState);
if (ServerUtil.exCardState == ServerUtil.ExCardState.UPDATED) {
ll_new_notice.setVisibility(View.GONE);
} else if (ServerUtil.exCardState == ServerUtil.ExCardState.NEED_UPDATE) {
ll_new_notice.setVisibility(View.VISIBLE);
} else if (ServerUtil.exCardState == ServerUtil.ExCardState.ERROR) {
Toast.makeText(getActivity(), "无法获取服务器先行卡信息", Toast.LENGTH_LONG).show();
Toast.makeText(getActivity(), "无法获取服务器先行卡信息", Toast.LENGTH_SHORT).show();
ll_new_notice.setVisibility(View.GONE);
}
......@@ -576,7 +568,6 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageReceived(ExCardEvent event) {
Log.i("webCrawler", "event received " + event.getType());
if (event.getType() == ExCardEvent.EventType.exCardPackageChange) {
changeExCardNewMark();
changeColor();
......@@ -588,7 +579,6 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene
@Subscribe(threadMode = ThreadMode.MAIN)
public void onServerInfoEvent(ServerInfoEvent event) {
Log.i("webCrawler", "dialog");
if (event.delete) {
DialogPlus dialogPlus = new DialogPlus(getContext());
dialogPlus.setTitle(R.string.question);
......@@ -731,107 +721,9 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene
// Toast.makeText(getActivity(), R.string.ypk_go_setting, Toast.LENGTH_LONG).show();
// break;
// }
//using Web crawler to extract the information of pre card
final DialogPlus dialog_read_ex = DialogPlus.show(getContext(), null, getContext().getString(R.string.fetch_ex_card));
VUiKit.defer().when(() -> {
String aurl = Constants.URL_YGO233_ADVANCE;
//Connect to the website
Document document = Jsoup.connect(aurl).get();
Element pre_card_content = document.getElementById("pre_release_cards");
Element pre_update_log = document.getElementById("pre_update_log");
Element tbody = pre_card_content.getElementsByTag("tbody").get(0);
Elements cards = tbody.getElementsByTag("tr");
if (cards.size() > 1000) {//Considering the efficiency of html parse, if the size of
// pre cards list is to large, return null directly.
return null;
}
ArrayList<ExCard> exCardList = new ArrayList<>();
for (Element card : cards) {
Elements card_attributes = card.getElementsByTag("td");
String imageUrl = card_attributes.get(0).getElementsByTag("a").attr("href");
String name = card_attributes.get(1).text();
String description = card_attributes.get(2).text();
ExCard exCard = new ExCard(name, imageUrl, description, 0);
exCardList.add(exCard);
}
ArrayList<ExCardLogItem> exCardLogList = new ArrayList<>();
exCardLogList.add(new ExCardLogItem(0, getString(R.string.ex_card_log_title), new ArrayList<>()));
Elements cardLogElements = pre_update_log.select("ul[class=auto-generated]").get(0).getElementsByTag("li");
pre_update_log.getElementsByTag("ul");
for (Element cardLog : cardLogElements) {
String judgeData = cardLog.toString();
Pattern p = Pattern.compile("<li>\\d{4}");
boolean result = p.matcher(judgeData).find();
if (result) {
Elements logItems = cardLog.getElementsByTag("li");
List<String> logs = new ArrayList<>();
logItems.get(0).select("ul").remove();
String dateTime = logItems.get(0).text();
for (int i = 1; i < logItems.size(); i++) {
logs.add(logItems.get(i).text());
}
exCardLogList.add(new ExCardLogItem(logs.size(), dateTime, logs));
} else {
continue;
}
}
Intent intent = new Intent(getActivity(), ExCardActivity2.class);
intent.putParcelableArrayListExtra("exCardLogList", exCardLogList);
intent.putParcelableArrayListExtra("exCardList", exCardList);
if (exCardList.isEmpty() && exCardLogList.isEmpty()) {
return null;
} else {
return intent;
}
}).fail((e) -> {
//关闭异常
if (dialog_read_ex.isShowing()) {
try {
dialog_read_ex.dismiss();
} catch (Exception ex) {
}
}
//If the crawler process failed, open webActivity
String aurl = Constants.URL_YGO233_ADVANCE;
if (ll_new_notice.getVisibility() == View.VISIBLE) {
aurl = aurl + "#pre_update_title";
}
WebActivity.open(getContext(), getString(R.string.action_download_expansions), aurl);
ll_new_notice.setVisibility(View.GONE);
Log.i("webCrawler", "webCrawler fail");
}).done(intent -> {
if (intent != null) {
Log.i("webCrawler", "webCrawler done");
startActivity(intent);
} else {
//If the crawler process cannot return right ex-card data,
//open webActivity
String aurl = Constants.URL_YGO233_ADVANCE;
if (ll_new_notice.getVisibility() == View.VISIBLE) {
aurl = aurl + "#pre_update_title";
}
WebActivity.open(getContext(), getString(R.string.action_download_expansions), aurl);
ll_new_notice.setVisibility(View.GONE);
Log.i("webCrawler", "webCrawler cannot return ex-card data");
}
//关闭异常
if (dialog_read_ex.isShowing()) {
try {
dialog_read_ex.dismiss();
Log.i("webCrawler", "dialog close");
} catch (Exception ex) {
}
}
});
/* using Web crawler to extract the information of pre card */
Intent exCardIntent = new Intent(getActivity(), ExCardActivity2.class);
startActivity(exCardIntent);
break;
case R.id.action_help: {
final DialogPlus dialog = new DialogPlus(getContext());
......
......@@ -220,10 +220,7 @@ public class SettingFragment extends PreferenceFragmentPlus {
//设置使用额外卡库后重新加载卡片数据
DataManager.get().load(true);
EventBus.getDefault().postSticky(new ExCardEvent(ExCardEvent.EventType.exCardPrefChange));
/* TODO 考虑以下特殊情况,用户在未开启先行卡的情况下,下载了先行卡包,之后跳转到设置页面,勾选开启先行卡后,DataManager自动安装,但此时本地的先行卡版本号尚未更新。
先行卡,此时应更新先行卡状态
*/
ServerUtil.initExCardState();
//ServerUtil.initExCardState();
}
//开关决斗助手
if (preference.getKey().equals(PREF_START_SERVICEDUELASSISTANT)) {
......
package cn.garymb.ygomobile.utils;
import static cn.garymb.ygomobile.Constants.URL_YGO233_DATAVER;
import static cn.garymb.ygomobile.Constants.URL_YGO233_FILE_ALT;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
import org.greenrobot.eventbus.EventBus;
import java.io.IOException;
import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.bean.events.ExCardEvent;
import cn.garymb.ygomobile.lite.BuildConfig;
import okhttp3.Call;
import okhttp3.Callback;
......@@ -20,16 +25,21 @@ public class ServerUtil {
}
/* 存储了当前先行卡是否需要更新的状态,UI逻辑直接读取该变量就能获知是否已安装先行卡 */
public static ExCardState exCardState = ExCardState.ERROR;
public static String serverExCardVersion = "";
public volatile static ExCardState exCardState = ExCardState.ERROR;//TODO 可能有并发问题
public volatile static String serverExCardVersion = "";
private volatile static int failCounter = 0;
/**
* 在可能更改先行卡状态的操作后调用,
* 删除先行卡时入参为null,
* 安装先行卡时入参为版本号
*
*/
// ++FailedCount;
// if (FailedCount <= 2) {
// Toast.makeText(getActivity(), R.string.Ask_to_Change_Other_Way, Toast.LENGTH_SHORT).show();
// downloadfromWeb(URL_YGO233_FILE_ALT);
// }
/**
* 初始化本地先行卡版本的状态,
......@@ -38,7 +48,7 @@ public class ServerUtil {
*/
public static void initExCardState() {
String oldVer = SharedPreferenceUtil.getExpansionDataVer();
Log.i("webCrawler", "old pre-card version:" + oldVer);
Log.i("webCrawler", "server util, old pre-card version:" + oldVer);
OkhttpUtil.get(URL_YGO233_DATAVER, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
......@@ -46,14 +56,20 @@ public class ServerUtil {
serverExCardVersion = "";
Log.i(BuildConfig.VERSION_NAME, "error" + e);
Log.i("webCrawler", "network failed, pre-card version:" + exCardState);
if (failCounter < 3) {
Log.i("webCrawler", "network failed, retry fetch pre-card version:");
failCounter++;
initExCardState();
}
}
@Override
public void onResponse(Call call, Response response) throws IOException {
failCounter = 0;//充值计数器
String newVer = response.body().string();
serverExCardVersion = newVer;
Log.i("webCrawler", "pre-card version:" + newVer);
Log.i("webCrawler", "ServerUtil fetch pre-card version:" + newVer);
if (!TextUtils.isEmpty(newVer)) {
if (!newVer.equals(oldVer)) {//如果oldVer为null,也会触发
......@@ -64,6 +80,9 @@ public class ServerUtil {
} else {
exCardState = ExCardState.ERROR;
}
/* 通知homeFragment更新图标 */
EventBus.getDefault().postSticky(new ExCardEvent(ExCardEvent.EventType.exCardPackageChange));
}
});
}
......
......@@ -48,7 +48,7 @@ public class DataManager {
public void load(boolean force) {
Log.i("webCrawler", "DataManager load data");
//Log.i("webCrawler", "DataManager load data");
boolean needLoad = false;
synchronized (this) {
if (!mInit || force) {
......
......@@ -5,7 +5,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
android:background="@drawable/list_item_bg">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
......@@ -15,12 +15,6 @@
android:paddingBottom="5dp"
app:elevation="0dp">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/packagetablayout"
......@@ -28,7 +22,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:tabGravity="fill"
app:tabMode="scrollable" />
app:tabMode="scrollable"/>
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment_ex_card">
<androidx.drawerlayout.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:openDrawer="right">
<FrameLayout
android:id="@+id/layout_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.tubb.smrv.SwipeMenuRecyclerView
android:id="@+id/list_ex_card"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@android:color/transparent"
android:dividerHeight="4dp"
android:padding="5dp"
android:scrollbars="vertical" />
<LinearLayout
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_gravity="bottom|right"
android:layout_marginRight="20dp"
android:layout_marginBottom="70dp"
android:orientation="vertical">
<Button
android:id="@+id/btn_search"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginBottom="10dp"
android:background="@drawable/search"
android:gravity="center" />
<TextView
android:id="@+id/search_result_count"
android:layout_width="60dp"
android:layout_height="30dp"
android:background="@drawable/radius"
android:gravity="center_horizontal"
android:text="0"
android:textColor="@color/gold"
android:textStyle="bold" />
</LinearLayout>
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="right"
android:orientation="vertical">
<include
android:id="@+id/nav_view_list"
layout="@layout/nav_card_search" />
</LinearLayout>
</androidx.drawerlayout.widget.DrawerLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment_ex_card"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.tubb.smrv.SwipeMenuRecyclerView
android:id="@+id/list_ex_card"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@android:color/transparent"
android:dividerHeight="4dp"
android:padding="5dp"
android:scrollbars="vertical" />
<LinearLayout
android:id="@+id/btn_download_prerelease"
android:focusableInTouchMode="true"
android:clickable="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_marginRight="20dp"
android:layout_marginBottom="70dp"
android:orientation="vertical"
android:padding="20dp">
<Button
android:clickable="false"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginBottom="10dp"
android:background="@drawable/downloadimages"
/>
<TextView
android:clickable="false"
android:id="@+id/text_download_prerelease"
android:layout_width="60dp"
android:layout_height="30dp"
android:background="@drawable/radius"
android:gravity="center"
android:textAlignment="center"
android:textSize="10sp"
android:textColor="@color/gold"
/>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
......@@ -32,7 +32,8 @@
android:shadowRadius="2"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.AppCompat.Title"
android:textColor="@color/item_title"
android:textColor="@color/brightgreen"
android:padding="20dp"
android:textSize="15sp"
tools:text="Card Name" />
......
......@@ -10,6 +10,9 @@
android:layout_height="wrap_content"
android:paddingLeft="?android:attr/expandableListPreferredChildPaddingLeft"
android:paddingTop="2dp"
android:paddingBottom="2dp" />
android:paddingBottom="2dp"
android:textSize="12dp"
android:textStyle="normal"/>
</LinearLayout>
\ No newline at end of file
......@@ -11,6 +11,8 @@
android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textColor="@color/item_title"/>
android:textSize="15sp"
android:textColor="@color/brightgreen"
/>
</LinearLayout>
......@@ -38,7 +38,7 @@
<string name="quit_tip">앱을 종료하겠습니까?</string>
<string name="back_tip">뒤로가기 키를 한번 더 누르시면 앱이 종료됩니다</string>
<string name="string_help_text">현재 앱에 필요한 권한이 없습니다. \n설정 - 권한 - 필요한 권한 얻기를 터치하십시오.</string>
<string name="fetch_ex_card">확장 카드 불러오는 중</string>
<string name="fetch_ex_card">Fetching pre-cards via web</string>
<string name="ex_card_log_title">update log</string>
<string name="ex_card_check_toast_message">To use it, We recommend you to download the pre-card setting in the pre-card download page unless you have installed pre-card in another way.</string>
......
......@@ -38,7 +38,7 @@
<string name="quit_tip">退出游戏?</string>
<string name="back_tip">请再按一次返回键退出</string>
<string name="string_help_text">当前应用缺少必要权限。\n请点击 设置-权限 打开所需权限。</string>
<string name="fetch_ex_card">取先行卡</string>
<string name="fetch_ex_card">通过网络获取先行卡</string>
<string name="ex_card_log_title">更新日志</string>
<string name="ex_card_check_toast_message">检测到未下载扩展卡,如果未通过其他途径安装扩展卡,建议在扩展卡页面下载</string>
......
......@@ -45,7 +45,7 @@
<string name="back_tip">Press back key again to exit.</string>
<string name="string_help_text">The current application lacks the necessary permissions. \n
please click Settings - permissions - open the required permissions.</string>
<string name="fetch_ex_card">Fetching pre-cards</string>
<string name="fetch_ex_card">Fetching pre-cards via web</string>
<string name="ex_card_log_title">update log</string>
<string name="ex_card_check_toast_message">To use it, We recommend you to download the pre-card setting in the pre-card download page unless you have installed pre-card in another way.</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