bug fix
This commit is contained in:
parent
27e08bb384
commit
7e820840fe
|
@ -19,6 +19,8 @@ import com.novelbook.android.utils.Constants;
|
||||||
import com.novelbook.android.utils.GsonUtil;
|
import com.novelbook.android.utils.GsonUtil;
|
||||||
import com.novelbook.android.utils.HistoryCache;
|
import com.novelbook.android.utils.HistoryCache;
|
||||||
|
|
||||||
|
import org.litepal.util.Const;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -97,7 +99,7 @@ public class Activity_Search extends Activity_base {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
BookSubscribe.getHotKeyWords( new OnSuccessAndFaultSub(successAndFaultListener,this));
|
BookSubscribe.getHotKeyWords(Constants.SEX, new OnSuccessAndFaultSub(successAndFaultListener,this));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -120,7 +120,7 @@ public abstract class BasicFragment extends Fragment /*implements NativeADUnif
|
||||||
|
|
||||||
int error_try=0;
|
int error_try=0;
|
||||||
int error_try_max=5;
|
int error_try_max=5;
|
||||||
|
protected List<Integer> noveIds = new ArrayList<Integer>();
|
||||||
public BasicFragment() {
|
public BasicFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
|
@ -278,7 +278,7 @@ void initTabs(){
|
||||||
pageFactory.prepareBook(nv );
|
pageFactory.prepareBook(nv );
|
||||||
Log.d(TAG, String.format("prepare book %s 开始open book.",nv.getName()) );
|
Log.d(TAG, String.format("prepare book %s 开始open book.",nv.getName()) );
|
||||||
ReadActivity.openBook(nv ,activity);
|
ReadActivity.openBook(nv ,activity);
|
||||||
new Thread(){
|
/* new Thread(){
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
super.run();
|
super.run();
|
||||||
|
@ -289,7 +289,7 @@ void initTabs(){
|
||||||
}
|
}
|
||||||
handler.sendEmptyMessage(99);
|
handler.sendEmptyMessage(99);
|
||||||
}
|
}
|
||||||
}.start();
|
}.start();*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -452,26 +452,38 @@ public class Fragment_Shelf extends BasicFragment {
|
||||||
TextView tvLatestChapt = (TextView) bottomSheetDialog.findViewById(R.id.txtLatestCate);
|
TextView tvLatestChapt = (TextView) bottomSheetDialog.findViewById(R.id.txtLatestCate);
|
||||||
TextView tvAuthor = (TextView) bottomSheetDialog.findViewById(R.id.tvAuthor);
|
TextView tvAuthor = (TextView) bottomSheetDialog.findViewById(R.id.tvAuthor);
|
||||||
tvTitle.setText(bookLists.get(position).getName());
|
tvTitle.setText(bookLists.get(position).getName());
|
||||||
|
ImageView imageView = (ImageView) bottomSheetDialog.findViewById(R.id.imageG1);
|
||||||
|
// TextView tvImportTitle = (TextView) bottomSheetDialog.findViewById(R.id.tvImportTitle);
|
||||||
if (!bookLists.get(position).isLocalBook()) {
|
if (!bookLists.get(position).isLocalBook()) {
|
||||||
|
tvLatestChapt.setText(bookLists.get(position).getChapterName());
|
||||||
tvAuthor.setText(bookLists.get(position).getAuthor());
|
tvAuthor.setText(bookLists.get(position).getAuthor());
|
||||||
TextView tvLatest = (TextView) bottomSheetDialog.findViewById(R.id.txtLatestUpdate);
|
TextView tvLatest = (TextView) bottomSheetDialog.findViewById(R.id.txtLatestUpdate);
|
||||||
|
|
||||||
tvLatestChapt.setText(bookLists.get(position).getChapterName());
|
|
||||||
tvLatest.setText(CommonUtil.getDateString(bookLists.get(position).getLastUpdateTime()));
|
tvLatest.setText(CommonUtil.getDateString(bookLists.get(position).getLastUpdateTime()));
|
||||||
|
TextView tvLastDomain = (TextView) bottomSheetDialog.findViewById(R.id.txtLastDomain);
|
||||||
TextView tvLastVisit = (TextView) bottomSheetDialog.findViewById(R.id.txtLatestVisit);;
|
tvLastDomain. setText( "[" + bookLists.get(position).getDomainName()+"]") ;
|
||||||
tvLastVisit.setText( CommonUtil.getDateString( bookLists.get(position).getLastVisit()));
|
ImageUtil.loadImage(activity, bookLists.get(position).getCover(), imageView);
|
||||||
TextView tvLastReadChpapt = (TextView) bottomSheetDialog.findViewById(R.id.txtLatestReadChapter);;
|
// tvImportTitle.setVisibility(View.GONE);
|
||||||
tvLastReadChpapt.setText( bookLists.get(position).getLastReadChaptName()) ;
|
imageView.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
tvLatestChapt.setText("本地导入");
|
tvLatestChapt.setText("本地导入");
|
||||||
tvAuthor.setText("");
|
tvAuthor.setText("");
|
||||||
|
// imageView.setImageResource(R.drawable.blankcover);
|
||||||
|
imageView.setVisibility(View.GONE);
|
||||||
|
// tvImportTitle.setText(bookLists.get(position).getName());
|
||||||
|
// tvImportTitle.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageView imageView = (ImageView) bottomSheetDialog.findViewById(R.id.imageG1);
|
TextView tvLastVisit = (TextView) bottomSheetDialog.findViewById(R.id.txtLatestVisit);;
|
||||||
ImageUtil.loadImage(activity, bookLists.get(position).getCover(), imageView);
|
tvLastVisit.setText( CommonUtil.getDateString( bookLists.get(position).getLastVisit()));
|
||||||
|
TextView tvLastReadChpapt = (TextView) bottomSheetDialog.findViewById(R.id.txtLatestReadChapter);
|
||||||
|
String lastReadChapt = bookLists.get(position).getLastReadChaptName();
|
||||||
|
lastReadChapt = TextUtils.isEmpty(lastReadChapt)? "":lastReadChapt;
|
||||||
|
lastReadChapt =lastReadChapt.replace("null","").trim();
|
||||||
|
tvLastReadChpapt.setText( lastReadChapt) ;
|
||||||
|
|
||||||
|
Log.d(TAG, "initDialog: " + lastReadChapt);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LinearLayout lldetail = (LinearLayout) bottomSheetDialog.findViewById(R.id.llBookdetail);
|
LinearLayout lldetail = (LinearLayout) bottomSheetDialog.findViewById(R.id.llBookdetail);
|
||||||
if (!bookLists.get(position).isLocalBook())
|
if (!bookLists.get(position).isLocalBook())
|
||||||
|
|
|
@ -168,7 +168,7 @@ public class Fragment_booklist extends BasicFragment {
|
||||||
// int pn = pageNo;
|
// int pn = pageNo;
|
||||||
|
|
||||||
if(pageNo==1) {
|
if(pageNo==1) {
|
||||||
|
noveIds = new ArrayList<Integer>();
|
||||||
if (mData != null) { //下拉刷新
|
if (mData != null) { //下拉刷新
|
||||||
mData = new ArrayList<Novel>();
|
mData = new ArrayList<Novel>();
|
||||||
mAdapter.setData(mData);
|
mAdapter.setData(mData);
|
||||||
|
@ -191,7 +191,14 @@ public class Fragment_booklist extends BasicFragment {
|
||||||
try {
|
try {
|
||||||
JSONObject jsonObject = new JSONObject(result);
|
JSONObject jsonObject = new JSONObject(result);
|
||||||
setPageCount(jsonObject.getInt("pageCount")); ;
|
setPageCount(jsonObject.getInt("pageCount")); ;
|
||||||
mMoreData = GsonUtil. parserJsonArray(jsonObject,Constants.BLOCK_TITLE_NOVELS);
|
List<Novel> list = GsonUtil. parserJsonArray(jsonObject,Constants.BLOCK_TITLE_NOVELS);
|
||||||
|
mMoreData =new ArrayList<Novel>();
|
||||||
|
for(Novel novel :list){
|
||||||
|
if(!noveIds.contains(novel.getNovelId())){
|
||||||
|
mMoreData.add(novel);
|
||||||
|
noveIds.add(novel.getNovelId());
|
||||||
|
}
|
||||||
|
}
|
||||||
if(mMoreData.size()>0){
|
if(mMoreData.size()>0){
|
||||||
loadListAd(mAdapter,1,mData.size()>0);
|
loadListAd(mAdapter,1,mData.size()>0);
|
||||||
}
|
}
|
||||||
|
@ -225,7 +232,19 @@ public class Fragment_booklist extends BasicFragment {
|
||||||
JSONObject jsonObject = new JSONObject(result);
|
JSONObject jsonObject = new JSONObject(result);
|
||||||
String resultstr = jsonObject.getString("rank") ;
|
String resultstr = jsonObject.getString("rank") ;
|
||||||
setPageCount(jsonObject.getJSONObject("rank").getInt("pageCount")); ;
|
setPageCount(jsonObject.getJSONObject("rank").getInt("pageCount")); ;
|
||||||
mMoreData = GsonUtil. parserJsonArray(resultstr,Constants.BLOCK_TITLE_NOVELS);
|
List<Novel> list = GsonUtil. parserJsonArray(resultstr,Constants.BLOCK_TITLE_NOVELS);
|
||||||
|
mMoreData =new ArrayList<Novel>();
|
||||||
|
for(Novel novel :list){
|
||||||
|
if(!noveIds.contains(novel.getNovelId())){
|
||||||
|
mMoreData.add(novel);
|
||||||
|
noveIds.add(novel.getNovelId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Log.d(TAG, "排行榜详细 onSuccess: pageCount " + getPageCount());
|
Log.d(TAG, "排行榜详细 onSuccess: pageCount " + getPageCount());
|
||||||
if(mMoreData.size()>0){
|
if(mMoreData.size()>0){
|
||||||
loadListAd(mAdapter,1,mData.size()>0);
|
loadListAd(mAdapter,1,mData.size()>0);
|
||||||
|
|
|
@ -134,6 +134,14 @@ public static final String TAG = Fragment_paihang.class.getSimpleName();
|
||||||
loadSearchData();
|
loadSearchData();
|
||||||
}
|
}
|
||||||
private void loadSearchData(){
|
private void loadSearchData(){
|
||||||
|
|
||||||
|
try{
|
||||||
|
throw new Exception();
|
||||||
|
}catch (Exception e){
|
||||||
|
Log.e(TAG, "loadSearchData: ", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int pn = pageNo;
|
int pn = pageNo;
|
||||||
if(lstSex==null){
|
if(lstSex==null){
|
||||||
// getSearchTabTtitle();
|
// getSearchTabTtitle();
|
||||||
|
@ -145,7 +153,7 @@ public static final String TAG = Fragment_paihang.class.getSimpleName();
|
||||||
String sex = lstSex.get(tab1Pos);
|
String sex = lstSex.get(tab1Pos);
|
||||||
String cate = lstNt.get(tab2Pos);
|
String cate = lstNt.get(tab2Pos);
|
||||||
if(pageNo==1) {
|
if(pageNo==1) {
|
||||||
|
noveIds = new ArrayList<Integer>();
|
||||||
if (mData != null) { //下拉刷新
|
if (mData != null) { //下拉刷新
|
||||||
mData = new ArrayList<Novel>();
|
mData = new ArrayList<Novel>();
|
||||||
mAdapter.setData(mData);
|
mAdapter.setData(mData);
|
||||||
|
@ -194,7 +202,18 @@ public static final String TAG = Fragment_paihang.class.getSimpleName();
|
||||||
JSONObject jsonObject = new JSONObject(result);
|
JSONObject jsonObject = new JSONObject(result);
|
||||||
setPageCount(jsonObject.getInt("pageCount"));
|
setPageCount(jsonObject.getInt("pageCount"));
|
||||||
|
|
||||||
mMoreData = GsonUtil. parserJsonArray(jsonObject,Constants.BLOCK_TITLE_NOVELS);
|
|
||||||
|
List<Novel> list = GsonUtil. parserJsonArray(jsonObject,Constants.BLOCK_TITLE_NOVELS);
|
||||||
|
Log.d(TAG, "onSuccess: noveIds list size "+noveIds.size());
|
||||||
|
|
||||||
|
mMoreData =new ArrayList<Novel>();
|
||||||
|
for(Novel novel :list){
|
||||||
|
if(!noveIds.contains(novel.getNovelId())){
|
||||||
|
mMoreData.add(novel);
|
||||||
|
noveIds.add(novel.getNovelId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Log.d(TAG, "onSuccess: mMoreData list size "+mMoreData.size());
|
||||||
if(mMoreData.size()>0){
|
if(mMoreData.size()>0){
|
||||||
loadListAd(mAdapter,1,mData.size()>0);
|
loadListAd(mAdapter,1,mData.size()>0);
|
||||||
}
|
}
|
||||||
|
@ -335,7 +354,7 @@ public static final String TAG = Fragment_paihang.class.getSimpleName();
|
||||||
tvHint.setText(selectedKey);
|
tvHint.setText(selectedKey);
|
||||||
Log.d(TAG, String.format("tabChanged: to load data %s,pageno %s, tmp %s" , selectedKey,pageNo ,tmp));
|
Log.d(TAG, String.format("tabChanged: to load data %s,pageno %s, tmp %s" , selectedKey,pageNo ,tmp));
|
||||||
|
|
||||||
if( tmp<lstProgress.length) return;
|
if( tmp<=lstProgress.length) return;
|
||||||
|
|
||||||
loadSearchData();
|
loadSearchData();
|
||||||
|
|
||||||
|
|
|
@ -300,14 +300,38 @@ public class BookListAdapter extends RecyclerView.Adapter< RecyclerView.ViewHol
|
||||||
|
|
||||||
if (holder.tvLastRead != null) holder.tvLastRead.setText(CommonUtil.getDateString( novel.getLastVisit() ));
|
if (holder.tvLastRead != null) holder.tvLastRead.setText(CommonUtil.getDateString( novel.getLastVisit() ));
|
||||||
// if (holder.tvProgress != null) holder.tvProgress.setText( String.format("上次看到第 %s 章,共%s章",mDatas.get(position).getLastReadChapt(),mDatas.get(position).getChaptCnt()) );
|
// if (holder.tvProgress != null) holder.tvProgress.setText( String.format("上次看到第 %s 章,共%s章",mDatas.get(position).getLastReadChapt(),mDatas.get(position).getChaptCnt()) );
|
||||||
if (holder.tvProgress != null) holder.tvProgress.setText( String.format("%s",novel.getLastReadChaptName()) );
|
if (holder.tvProgress != null) {
|
||||||
|
String lastReadChapt = novel.getLastReadChaptName();
|
||||||
|
if( TextUtils.isEmpty(lastReadChapt)){
|
||||||
|
holder.tvProgress.setVisibility(View.GONE);
|
||||||
|
}else{
|
||||||
|
holder.tvProgress.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
// lastReadChapt = TextUtils.isEmpty(lastReadChapt)? "":lastReadChapt;
|
||||||
|
// lastReadChapt =lastReadChapt.replace("null","");
|
||||||
|
|
||||||
|
holder.tvProgress.setText( lastReadChapt );
|
||||||
|
}
|
||||||
if (holder.tvReadtime != null) holder.tvReadtime.setText( "总计阅读了 "+CommonUtil.getTimeCnt4Read( novel.getReadtime() ,true) );
|
if (holder.tvReadtime != null) holder.tvReadtime.setText( "总计阅读了 "+CommonUtil.getTimeCnt4Read( novel.getReadtime() ,true) );
|
||||||
|
|
||||||
|
|
||||||
if (holder.tvStatus != null) holder.tvStatus.setText(novel.getProgress());
|
if (holder.tvStatus != null) holder.tvStatus.setText(novel.getProgress());
|
||||||
if (holder.imageView != null/* && !TextUtils.isEmpty(mDatas.get(position).getCover())*/) {
|
if (holder.imageView != null/* && !TextUtils.isEmpty(mDatas.get(position).getCover())*/) {
|
||||||
// ImageUtil.loadImage(mContext, mDatas.get(position).getCover(), holder.imageView);
|
// ImageUtil.loadImage(mContext, mDatas.get(position).getCover(), holder.imageView);
|
||||||
loader.displayImage(mContext, NetUtil.getCoverUrl(novel.getCover()) ,holder.imageView);
|
if(!novel.isLocalBook()) {
|
||||||
|
loader.displayImage(mContext, NetUtil.getCoverUrl(novel.getCover()), holder.imageView);
|
||||||
|
}else{
|
||||||
|
holder.imageView.setImageResource(R.drawable.blankcover);
|
||||||
|
// loader.displayImage(mContext, R.drawable.blankcover, holder.imageView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (holder.tvImportTitle != null) {
|
||||||
|
holder.tvImportTitle.setVisibility(View.GONE);
|
||||||
|
holder.tvImportTitle.setText("");
|
||||||
|
if(novel.isLocalBook()) {
|
||||||
|
holder.tvImportTitle.setVisibility(View.VISIBLE);
|
||||||
|
holder.tvImportTitle.setText(novel.getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (holder.imageTop != null) {
|
if (holder.imageTop != null) {
|
||||||
if( novel.isTop()){
|
if( novel.isTop()){
|
||||||
|
|
|
@ -58,7 +58,9 @@ public class MyViewHolder extends RecyclerView.ViewHolder {
|
||||||
@Nullable
|
@Nullable
|
||||||
@BindView(R.id.tvLastRead)
|
@BindView(R.id.tvLastRead)
|
||||||
TextView tvLastRead;
|
TextView tvLastRead;
|
||||||
|
@Nullable
|
||||||
|
@BindView(R.id.tvImportTitle)
|
||||||
|
TextView tvImportTitle;
|
||||||
|
|
||||||
public MyViewHolder(View view) {
|
public MyViewHolder(View view) {
|
||||||
super(view);
|
super(view);
|
||||||
|
|
|
@ -16,7 +16,7 @@ public class AdSetting {
|
||||||
private slot fixBanner = new slot();
|
private slot fixBanner = new slot();
|
||||||
private slot bigBanner = new slot();
|
private slot bigBanner = new slot();
|
||||||
public boolean isShowAdsense() {
|
public boolean isShowAdsense() {
|
||||||
return false;
|
return false;
|
||||||
// return showAdsense && NetUtil.isNetworkConnected();
|
// return showAdsense && NetUtil.isNetworkConnected();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,8 +100,8 @@ public class AdSetting {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSource() {
|
public int getSource() {
|
||||||
return source;
|
return source;
|
||||||
// return 1 ;
|
// return Constants.AD_MOB ;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSource(int source) {
|
public void setSource(int source) {
|
||||||
|
|
|
@ -46,7 +46,7 @@ public class Novel extends LitePalSupport implements Serializable{
|
||||||
private long readtime; //阅读时间
|
private long readtime; //阅读时间
|
||||||
private int chaptCnt; //总章数
|
private int chaptCnt; //总章数
|
||||||
private long lastVisit;//最近浏览,如何设置默认时间?
|
private long lastVisit;//最近浏览,如何设置默认时间?
|
||||||
private String lastReadChaptName;
|
private String lastReadChaptName="";
|
||||||
public int getChaptCnt() {
|
public int getChaptCnt() {
|
||||||
return chaptCnt;
|
return chaptCnt;
|
||||||
}
|
}
|
||||||
|
@ -112,8 +112,7 @@ public class Novel extends LitePalSupport implements Serializable{
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getChapterName() {
|
public String getChapterName() {
|
||||||
|
return filterBlankHtml(chapterName);
|
||||||
return chapterName;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setChapterName(String chapterName) {
|
public void setChapterName(String chapterName) {
|
||||||
|
@ -364,9 +363,9 @@ public void testUpdate(){
|
||||||
) );
|
) );
|
||||||
|
|
||||||
|
|
||||||
boolean isLastChaptNotRead = TextUtils.isEmpty(nv.lastReadChaptName) || !( !TextUtils.isEmpty(chapterName) && (chapterName.trim()).equals(nv.lastReadChaptName.trim())); //没看过最新章节
|
boolean isLastChaptNotRead = TextUtils.isEmpty(nv.lastReadChaptName) || !( !TextUtils.isEmpty(getChapterName()) && (getChapterName().trim()).equals(nv.lastReadChaptName.trim())); //没看过最新章节
|
||||||
boolean isLastChaptUpdated = !TextUtils.isEmpty(chapterName) && !TextUtils.isEmpty(nv.chapterName) && !(chapterName.trim().equals(nv.chapterName.trim()));
|
boolean isLastChaptUpdated = !TextUtils.isEmpty(getChapterName()) && !TextUtils.isEmpty(nv.getChapterName()) && !(getChapterName().trim().equals(nv.getChapterName().trim()));
|
||||||
Log.d("Novel", String.format( " server lastUpdateTime ,server chaptername '%s',chaptername %s,lastreadchapt '%s'" , chapterName,nv.chapterName,nv.lastReadChaptName ) );
|
Log.d("Novel", String.format( " server lastUpdateTime ,server chaptername '%s',chaptername %s,lastreadchapt '%s'" , getChapterName(),nv.getChapterName(),nv.lastReadChaptName ) );
|
||||||
/*
|
/*
|
||||||
isUpdated = isUpdated && isLastReadchaptUpdated || isLastChaptUpdated ;
|
isUpdated = isUpdated && isLastReadchaptUpdated || isLastChaptUpdated ;
|
||||||
|
|
||||||
|
@ -375,6 +374,9 @@ public void testUpdate(){
|
||||||
Log.d("Novel", String.format( " is updated %s, server lastUpdateTime isLastChaptNotRead %s,isLastChaptUpdated %s" ,isUpdated,isLastChaptNotRead,isLastChaptUpdated ) );
|
Log.d("Novel", String.format( " is updated %s, server lastUpdateTime isLastChaptNotRead %s,isLastChaptUpdated %s" ,isUpdated,isLastChaptNotRead,isLastChaptUpdated ) );
|
||||||
|
|
||||||
// Log.d("Novel", String.format( " server lastUpdateTime ,server chaptername '%s',chaptername '%s',lastreadchapt '%s'" , chapterName,nv.chapterName,nv.lastReadChaptName ) );
|
// Log.d("Novel", String.format( " server lastUpdateTime ,server chaptername '%s',chaptername '%s',lastreadchapt '%s'" , chapterName,nv.chapterName,nv.lastReadChaptName ) );
|
||||||
|
if(isUpdated && !isLastChaptUpdated){
|
||||||
|
Log.e("Novel", "......................................checkAndUpdate:server lastUpdateTime last time updated but last chapter not.............................................. ");
|
||||||
|
}
|
||||||
|
|
||||||
isUpdated = isUpdated && isLastChaptUpdated || lastUpdateTime > nv.lastVisit;
|
isUpdated = isUpdated && isLastChaptUpdated || lastUpdateTime > nv.lastVisit;
|
||||||
|
|
||||||
|
@ -399,10 +401,18 @@ public void testUpdate(){
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getLastReadChaptName() {
|
public String getLastReadChaptName() {
|
||||||
return lastReadChaptName;
|
return filterBlankHtml(lastReadChaptName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLastReadChaptName(String lastReadChaptName) {
|
public void setLastReadChaptName(String lastReadChaptName) {
|
||||||
this.lastReadChaptName = lastReadChaptName;
|
this.lastReadChaptName = lastReadChaptName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String filterBlankHtml(String targets){
|
||||||
|
String blank =" ";
|
||||||
|
if(!TextUtils.isEmpty(targets) && targets.contains(blank)){
|
||||||
|
return targets.substring(targets.indexOf(blank)+blank.length());
|
||||||
|
}
|
||||||
|
return targets;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@ public interface HttpApi {
|
||||||
Observable<ResponseBody> getNovelsByIds(@Path("nvs")String nvs );
|
Observable<ResponseBody> getNovelsByIds(@Path("nvs")String nvs );
|
||||||
//返回指定id列表的小说列表
|
//返回指定id列表的小说列表
|
||||||
@GET("page/hot-keywords")
|
@GET("page/hot-keywords")
|
||||||
Observable<ResponseBody> getSearchHotKeys();
|
Observable<ResponseBody> getSearchHotKeys(@Query("sex") int Sex);
|
||||||
|
|
||||||
@GET("download/version.xml")
|
@GET("download/version.xml")
|
||||||
Observable<ResponseBody> getVersion();
|
Observable<ResponseBody> getVersion();
|
||||||
|
|
|
@ -85,8 +85,8 @@ public class BookSubscribe {
|
||||||
Observable<ResponseBody> observable = HttpMethods.getInstance("/api/page/topdata").getHttpApi().getSearchTitles(sex);
|
Observable<ResponseBody> observable = HttpMethods.getInstance("/api/page/topdata").getHttpApi().getSearchTitles(sex);
|
||||||
HttpMethods.getInstance().toSubscribe(observable, subscriber);
|
HttpMethods.getInstance().toSubscribe(observable, subscriber);
|
||||||
}
|
}
|
||||||
public static void getHotKeyWords(DisposableObserver<ResponseBody> subscriber){
|
public static void getHotKeyWords(int sex,DisposableObserver<ResponseBody> subscriber){
|
||||||
Observable<ResponseBody> observable = HttpMethods.getInstance("/api/page/hot-keywords").getHttpApi().getSearchHotKeys();
|
Observable<ResponseBody> observable = HttpMethods.getInstance("/api/page/hot-keywords").getHttpApi().getSearchHotKeys(sex);
|
||||||
HttpMethods.getInstance().toSubscribe(observable, subscriber);
|
HttpMethods.getInstance().toSubscribe(observable, subscriber);
|
||||||
}
|
}
|
||||||
public static void getNovelsByIds(String ids,DisposableObserver<ResponseBody> subscriber){
|
public static void getNovelsByIds(String ids,DisposableObserver<ResponseBody> subscriber){
|
||||||
|
|
|
@ -108,7 +108,7 @@ public class BookUtil {
|
||||||
private final int MSG_READCHAPTER_FAIL=2;
|
private final int MSG_READCHAPTER_FAIL=2;
|
||||||
private final int MSG_READCHAPTER_SUCCESS=3;
|
private final int MSG_READCHAPTER_SUCCESS=3;
|
||||||
private static final int MSG_READBOOK_FAIL = 4;
|
private static final int MSG_READBOOK_FAIL = 4;
|
||||||
|
private static final int MSG_READBOOK_EMPTY_CONTENT = 5;
|
||||||
|
|
||||||
private String m_strCharsetName;
|
private String m_strCharsetName;
|
||||||
private String bookName;
|
private String bookName;
|
||||||
|
@ -130,6 +130,7 @@ public class BookUtil {
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
Log.e(TAG, "prepare book: clearbook called", e);
|
Log.e(TAG, "prepare book: clearbook called", e);
|
||||||
}*/
|
}*/
|
||||||
|
chaptId=0;
|
||||||
charPosition.clear();
|
charPosition.clear();
|
||||||
this.muluRetryCount=0;
|
this.muluRetryCount=0;
|
||||||
this.downloadStatus = DownloadStatus.notStart;
|
this.downloadStatus = DownloadStatus.notStart;
|
||||||
|
@ -459,12 +460,18 @@ public class BookUtil {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void reportMsg(String reportType,String url,String content,String headers,String httpStatus){
|
void reportMsg(String reportType,String url,String content,String headers,String httpStatus){
|
||||||
|
|
||||||
String msg = String.format("{\"type\":%s, \"id\":%s ,\"name\":\"%s\",\"site\":\"%s\",\"url\":\"%s\",\"content\":\"%s\",\"requestHeader\":\"%s\",\"httpStatus\":\"%s\"}," ,
|
/* String msg = String.format("{\"type\":%s, \"id\":%s ,\"name\":\"%s\",\"site\":\"%s\",\"url\":\"%s\",\"content\":\"%s\",\"requestHeader\":\"%s\",\"httpStatus\":\"%s\"}," ,
|
||||||
reportType ,mNovel.getId(),mNovel.getName(),mSite.getDomain(),url ,content,headers,httpStatus);
|
reportType ,mNovel.getId(),mNovel.getName(),mSite.getDomain(),url ,content,headers,httpStatus);
|
||||||
|
*/
|
||||||
msg = String.format("{\"type\":\"%s\", \"novelId\":%s ,\"site\":\"%s\",\"url\":\"%s\",\"httpStatus\":\"%s\",\"content\":\"%s\"}" ,
|
String key =mNovel.getNovelId()+url;
|
||||||
|
if(Constants.REPORT_HIS.contains(key)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Constants.REPORT_HIS.add(key);
|
||||||
|
String msg = String.format("{\"type\":\"%s\", \"novelId\":%s ,\"site\":\"%s\",\"url\":\"%s\",\"httpStatus\":\"%s\",\"content\":\"%s\"}" ,
|
||||||
reportType ,mNovel.getNovelId(),mSite.getDomain(),url ,httpStatus,content);
|
reportType ,mNovel.getNovelId(),mSite.getDomain(),url ,httpStatus,content);
|
||||||
|
|
||||||
BookSubscribe.reportMsg(reportType ,msg);
|
BookSubscribe.reportMsg(reportType ,msg);
|
||||||
|
@ -494,6 +501,14 @@ public class BookUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setChapterNo(int chapterNo) {
|
public void setChapterNo(int chapterNo) {
|
||||||
|
|
||||||
|
try{
|
||||||
|
throw new Exception();
|
||||||
|
}catch (Exception e){
|
||||||
|
Log.e(TAG, "prepare book setChapterNo: who set chaptno "+ chapterNo,e );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
this.chapterNo = chapterNo;
|
this.chapterNo = chapterNo;
|
||||||
/*
|
/*
|
||||||
if(chapterNo <= mChapters.size()) {
|
if(chapterNo <= mChapters.size()) {
|
||||||
|
@ -507,7 +522,7 @@ public class BookUtil {
|
||||||
public int getChapterNo() {
|
public int getChapterNo() {
|
||||||
|
|
||||||
if(chapterNo > mChapters.size()){
|
if(chapterNo > mChapters.size()){
|
||||||
// Log.d(TAG, String.format(" prepare book getChapterNo ,chapterNo %s, getChapters().size() %s ,mChangeChapId %s" ,chapterNo , mChapters.size(),mChangeChapId) );
|
Log.d(TAG, String.format(" prepare book getChapterNo ,chapterNo %s, getChapters().size() %s ,mChangeChapId %s" ,chapterNo , mChapters.size(),mChangeChapId) );
|
||||||
if(mChangeChapId>0){
|
if(mChangeChapId>0){
|
||||||
return mChangeChapId;
|
return mChangeChapId;
|
||||||
}
|
}
|
||||||
|
@ -515,7 +530,7 @@ public class BookUtil {
|
||||||
}
|
}
|
||||||
chapterNo = chapterNo<=0 ?1 :chapterNo;
|
chapterNo = chapterNo<=0 ?1 :chapterNo;
|
||||||
|
|
||||||
// Log.d(TAG, String.format(" prepare book getChapterNo ,chapterNo %s, getChapters().size() %s " ,chapterNo , mChapters.size()) );
|
Log.d(TAG, String.format(" prepare book getChapterNo ,chapterNo %s, getChapters().size() %s " ,chapterNo , mChapters.size()) );
|
||||||
return chapterNo;
|
return chapterNo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1408,6 +1423,7 @@ int muluRetryCount =0;
|
||||||
return cachedPath + mNovel.getName() + index ;
|
return cachedPath + mNovel.getName() + index ;
|
||||||
}
|
}
|
||||||
public String fileChapterName(int chaptId ) {
|
public String fileChapterName(int chaptId ) {
|
||||||
|
checkAndCreateDir(chapterPath);
|
||||||
if(mNovel!=null && !TextUtils.isEmpty(mNovel.getDomain())){
|
if(mNovel!=null && !TextUtils.isEmpty(mNovel.getDomain())){
|
||||||
|
|
||||||
return getChapterPath() +mNovel.getDomain()+"/"+ chaptId ;
|
return getChapterPath() +mNovel.getDomain()+"/"+ chaptId ;
|
||||||
|
@ -1537,6 +1553,10 @@ int muluRetryCount =0;
|
||||||
if(pagefactory!=null)
|
if(pagefactory!=null)
|
||||||
pagefactory.drawStatus(PageFactory.Status.FAIL);
|
pagefactory.drawStatus(PageFactory.Status.FAIL);
|
||||||
}
|
}
|
||||||
|
else if(msg.what==MSG_READBOOK_EMPTY_CONTENT ) { //change source
|
||||||
|
if(pagefactory!=null)
|
||||||
|
pagefactory.drawStatus(PageFactory.Status.CONTENTPARESERROR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1545,7 +1565,8 @@ int muluRetryCount =0;
|
||||||
notStart,
|
notStart,
|
||||||
downloading,
|
downloading,
|
||||||
failure,
|
failure,
|
||||||
success
|
success,
|
||||||
|
emptyContent
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isChapterContentExist(int index) {
|
public boolean isChapterContentExist(int index) {
|
||||||
|
@ -1637,7 +1658,7 @@ int muluRetryCount =0;
|
||||||
Log.d(TAG, String.format("prepare book chaptDownStatus.containsKey %s ? %s", Integer.valueOf(index),chaptDownStatus.containsKey(Integer.valueOf(index))));
|
Log.d(TAG, String.format("prepare book chaptDownStatus.containsKey %s ? %s", Integer.valueOf(index),chaptDownStatus.containsKey(Integer.valueOf(index))));
|
||||||
|
|
||||||
|
|
||||||
if (!chaptDownStatus.containsKey(Integer.valueOf(index))) {
|
if (!chaptDownStatus.containsKey(Integer.valueOf(index)) || !file.exists() &&chaptDownStatus.get(Integer.valueOf(index))== DownloadStatus.success ) {
|
||||||
chaptDownStatus.put(index, DownloadStatus.downloading);
|
chaptDownStatus.put(index, DownloadStatus.downloading);
|
||||||
Log.d(TAG, String.format("prepare book put chaptDownStatus index %s,start to load chapcontent", index));
|
Log.d(TAG, String.format("prepare book put chaptDownStatus index %s,start to load chapcontent", index));
|
||||||
loadChaptContent(index);
|
loadChaptContent(index);
|
||||||
|
@ -1659,8 +1680,8 @@ int muluRetryCount =0;
|
||||||
Log.d(TAG, String.format(" prepare book loadChaptContent slept %s for downloading,isDownload %s ,thread %s ", slepttime, getDownloadStatus(), Thread.currentThread().getName()));
|
Log.d(TAG, String.format(" prepare book loadChaptContent slept %s for downloading,isDownload %s ,thread %s ", slepttime, getDownloadStatus(), Thread.currentThread().getName()));
|
||||||
}*/
|
}*/
|
||||||
while (!file.exists() && NetUtil.isNetworkConnected() && chaptDownStatus.get(Integer.valueOf(index)) == DownloadStatus.downloading && slepttime < maxSleep ) {
|
while (!file.exists() && NetUtil.isNetworkConnected() && chaptDownStatus.get(Integer.valueOf(index)) == DownloadStatus.downloading && slepttime < maxSleep ) {
|
||||||
Thread.sleep(500);
|
Thread.sleep(200);
|
||||||
slepttime += 500;
|
slepttime += 200;
|
||||||
Log.d(TAG, String.format(" prepare book loadChaptContent %s , slept %s for downloading, thread %s ",index, slepttime, Thread.currentThread().getName()));
|
Log.d(TAG, String.format(" prepare book loadChaptContent %s , slept %s for downloading, thread %s ",index, slepttime, Thread.currentThread().getName()));
|
||||||
}
|
}
|
||||||
Log.d(TAG, String.format("prepare book loadChaptContent slept %s for downloading ", slepttime));
|
Log.d(TAG, String.format("prepare book loadChaptContent slept %s for downloading ", slepttime));
|
||||||
|
@ -1933,7 +1954,7 @@ private void loadChaptContent(final int chapterIndex) throws JSONException, Inte
|
||||||
public void onFailure(Call call, IOException e) {
|
public void onFailure(Call call, IOException e) {
|
||||||
if(e!=null &&
|
if(e!=null &&
|
||||||
(e.toString().contains("closed")
|
(e.toString().contains("closed")
|
||||||
||e.getMessage().contains("Canceled")))
|
||e.getMessage()!=null && e.getMessage().contains("Canceled")))
|
||||||
{
|
{
|
||||||
Log.d(TAG, "onFailure: prepare book cancled request ,return, " + request.url());
|
Log.d(TAG, "onFailure: prepare book cancled request ,return, " + request.url());
|
||||||
return;
|
return;
|
||||||
|
@ -2005,6 +2026,7 @@ private void loadChaptContent(final int chapterIndex) throws JSONException, Inte
|
||||||
String chapterContent = title+ "\n" + bodyStr;
|
String chapterContent = title+ "\n" + bodyStr;
|
||||||
char[] buf = chapterContent.toCharArray();
|
char[] buf = chapterContent.toCharArray();
|
||||||
File file = new File(fileChapterName(index));
|
File file = new File(fileChapterName(index));
|
||||||
|
Log.d( TAG,"prepare book to create file " +fileChapterName(index));
|
||||||
file.createNewFile();
|
file.createNewFile();
|
||||||
|
|
||||||
final OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(fileChapterName(index)), charachterType);//"UTF-16LE"); // UTF-16LE 比 utf-8 文件小
|
final OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(fileChapterName(index)), charachterType);//"UTF-16LE"); // UTF-16LE 比 utf-8 文件小
|
||||||
|
|
|
@ -5,6 +5,7 @@ import com.novelbook.android.R;
|
||||||
import com.novelbook.android.bean.AdSetting;
|
import com.novelbook.android.bean.AdSetting;
|
||||||
import com.novelbook.android.bean.ProgressType;
|
import com.novelbook.android.bean.ProgressType;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class Constants {
|
public class Constants {
|
||||||
|
@ -81,6 +82,7 @@ public class Constants {
|
||||||
public static final String REPORT_REX_CHAPTER_CONTENT_ERROR ="EmptyText";//章节内容解析错误
|
public static final String REPORT_REX_CHAPTER_CONTENT_ERROR ="EmptyText";//章节内容解析错误
|
||||||
public static final String REPORT_REX_MULU_ERROR ="NovelNotFound";//目录获取错误 ,或书不存在
|
public static final String REPORT_REX_MULU_ERROR ="NovelNotFound";//目录获取错误 ,或书不存在
|
||||||
|
|
||||||
|
public static List<String> REPORT_HIS = new ArrayList<String>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -148,7 +148,10 @@ public class GsonUtil {
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
JsonElement e = (JsonElement) it.next();
|
JsonElement e = (JsonElement) it.next();
|
||||||
//JsonElement转换为JavaBean对象
|
//JsonElement转换为JavaBean对象
|
||||||
list.add((NovelBlock) gson.fromJson(e, NovelBlock.class));
|
NovelBlock nb = (NovelBlock) gson.fromJson(e, NovelBlock.class);
|
||||||
|
if(nb.getNs().size()>0) {
|
||||||
|
list.add(nb);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
@ -184,10 +187,17 @@ public class GsonUtil {
|
||||||
|
|
||||||
//遍历JsonArray对象
|
//遍历JsonArray对象
|
||||||
Iterator it = jsonArray.iterator();
|
Iterator it = jsonArray.iterator();
|
||||||
|
// int lastNoveId =0;
|
||||||
|
List<Integer> ids = new ArrayList<Integer>();
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
JsonElement e = (JsonElement) it.next();
|
JsonElement e = (JsonElement) it.next();
|
||||||
//JsonElement转换为JavaBean对象
|
//JsonElement转换为JavaBean对象
|
||||||
Novel nv = (Novel) gson.fromJson(e, Novel.class);
|
Novel nv = (Novel) gson.fromJson(e, Novel.class);
|
||||||
|
if(ids.contains(nv.getNovelId())){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ids.add(nv.getNovelId());
|
||||||
|
// lastNoveId =nv.getNovelId();
|
||||||
if(nv!=null) {
|
if(nv!=null) {
|
||||||
list.add((Novel) gson.fromJson(e, Novel.class));
|
list.add((Novel) gson.fromJson(e, Novel.class));
|
||||||
}
|
}
|
||||||
|
|
|
@ -712,7 +712,8 @@ public class PageFactory implements ChangeSource{
|
||||||
SERVERERROR,
|
SERVERERROR,
|
||||||
CHANGESOURCE ,
|
CHANGESOURCE ,
|
||||||
LOCALFAIL,
|
LOCALFAIL,
|
||||||
LASTPAGE;
|
LASTPAGE,
|
||||||
|
CONTENTPARESERROR;
|
||||||
}
|
}
|
||||||
private void hideSysUI(){
|
private void hideSysUI(){
|
||||||
if(mAd!=null){
|
if(mAd!=null){
|
||||||
|
@ -870,17 +871,23 @@ private void hideSysUI(){
|
||||||
//handler.sendEmptyMessage(MSG_SHOW_LOADING);
|
//handler.sendEmptyMessage(MSG_SHOW_LOADING);
|
||||||
// showProgressDialog();
|
// showProgressDialog();
|
||||||
break;
|
break;
|
||||||
|
case CONTENTPARESERROR:
|
||||||
|
status = "内容解析错误,请稍后再试";
|
||||||
|
mAd.showRefresh(View.VISIBLE);
|
||||||
|
mAd.showReadSetting();
|
||||||
|
mAd.showLoading(false);
|
||||||
|
break;
|
||||||
case FAIL:
|
case FAIL:
|
||||||
status = "读取错误,请稍后重试";
|
status = "读取错误,请稍后重试";
|
||||||
mAd.showRefresh(View.VISIBLE);
|
mAd.showRefresh(View.VISIBLE);
|
||||||
mAd.showReadSetting();
|
mAd.showReadSetting();
|
||||||
mAd.showLoading(false);
|
mAd.showLoading(false);
|
||||||
try {
|
/* try {
|
||||||
throw new Exception("error on reading");
|
throw new Exception("error on reading");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
Log.d(TAG, "prepare book: why fail ",e);
|
Log.d(TAG, "prepare book: why fail ",e);
|
||||||
}
|
}*/
|
||||||
break;
|
break;
|
||||||
case NETWORKFAILE:
|
case NETWORKFAILE:
|
||||||
mAd.showLoading(false);
|
mAd.showLoading(false);
|
||||||
|
@ -1023,6 +1030,10 @@ private void hideSysUI(){
|
||||||
if(m_lines.size()==0 ){
|
if(m_lines.size()==0 ){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(trPage.getChapterNo() >0 && trPage.getChapterNo() !=mBookUtil.getChapterNo()){
|
||||||
|
mBookUtil.setChapterNo(trPage.getChapterNo());
|
||||||
|
}
|
||||||
/* try {
|
/* try {
|
||||||
throw new Exception("who's ad");
|
throw new Exception("who's ad");
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
|
@ -1410,8 +1421,11 @@ private void hideSysUI(){
|
||||||
if(mBookUtil.isBusy()){
|
if(mBookUtil.isBusy()){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if(currentPage.getChapterNo()>0 && currentPage.getChapterNo() != currentChapter) {
|
||||||
// Log.d(TAG, "prepare book nextPage:chaptid " +mBookUtil.getChapterNo());
|
currentChapter = currentPage.getChapterNo();
|
||||||
|
Log.d(TAG, "getNextPage: prepare book correct current chapterno to " +currentChapter);
|
||||||
|
}
|
||||||
|
Log.d(TAG, "prepare book nextPage:chaptid " +mBookUtil.getChapterNo());
|
||||||
if (currentPage.getEnd() >= mBookUtil.getChapterLen()) {
|
if (currentPage.getEnd() >= mBookUtil.getChapterLen()) {
|
||||||
Log.d(TAG,"已经是本章最后一页了");
|
Log.d(TAG,"已经是本章最后一页了");
|
||||||
File file =new File( mBookUtil.fileChapterName(currentChapter+1));
|
File file =new File( mBookUtil.fileChapterName(currentChapter+1));
|
||||||
|
@ -1425,7 +1439,7 @@ private void hideSysUI(){
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
int slepttime = 0; mBookUtil.muluRetryCount=0;
|
int slepttime = 0; mBookUtil.muluRetryCount=0;
|
||||||
while (slepttime<200 && mBookUtil.getChapters().size()==0 && (mBookUtil.mMuluStatus == BookUtil.MuluStatus.isDownloading || mBookUtil.muluRetryCount < Constants.retryCnt)) {
|
while (slepttime<300 && mBookUtil.getChapters().size()==0 && (mBookUtil.mMuluStatus == BookUtil.MuluStatus.isDownloading || mBookUtil.muluRetryCount < Constants.retryCnt)) {
|
||||||
try {
|
try {
|
||||||
sleep(50);
|
sleep(50);
|
||||||
slepttime++;
|
slepttime++;
|
||||||
|
@ -1445,8 +1459,11 @@ private void hideSysUI(){
|
||||||
currentChapter=mBookUtil.getChapterNo();
|
currentChapter=mBookUtil.getChapterNo();
|
||||||
handler.sendEmptyMessage(MSG_NEXTPAGE) ;
|
handler.sendEmptyMessage(MSG_NEXTPAGE) ;
|
||||||
}else if(mBookUtil.mMuluStatus == BookUtil.MuluStatus.failed || mStatus !=Status.OPENING){
|
}else if(mBookUtil.mMuluStatus == BookUtil.MuluStatus.failed || mStatus !=Status.OPENING){
|
||||||
|
mBookUtil.setChapterNo(mBookUtil.getChapterNo()-1);
|
||||||
|
currentChapter=mBookUtil.getChapterNo();
|
||||||
handler.sendEmptyMessage(MSG_NEXTPAGE_FAIL) ;
|
handler.sendEmptyMessage(MSG_NEXTPAGE_FAIL) ;
|
||||||
}
|
}
|
||||||
|
mLoadingChaptNo=currentChapter;
|
||||||
|
|
||||||
}}.start();
|
}}.start();
|
||||||
|
|
||||||
|
@ -1664,8 +1681,12 @@ private void hideSysUI(){
|
||||||
public TRPage getNextPage(){
|
public TRPage getNextPage(){
|
||||||
|
|
||||||
int nextPageNo =currentPage.getPageNo();
|
int nextPageNo =currentPage.getPageNo();
|
||||||
// Log.e(TAG,String.format("prepare book getNextPage() currentChapter %s, chapters().size() %s,currentChaptPages .size() is %s,currentpage pageno is %s"
|
Log.e(TAG,String.format("prepare book getNextPage() currentChapter %s, chapters().size() %s,currentChaptPages .size() is %s, currentpage pageno is %s ,currentpage chaptNo %s"
|
||||||
// ,currentChapter, getChapters().size(), currentChaptPages.size() , nextPageNo));
|
,currentChapter, getChapters().size(), currentChaptPages.size() , nextPageNo,currentPage.getChapterNo()));
|
||||||
|
if(currentPage.getChapterNo()>0 && currentPage.getChapterNo() < currentChapter) {
|
||||||
|
currentChapter = currentPage.getChapterNo();
|
||||||
|
Log.d(TAG, "getNextPage: prepare book correct current chapterno to " +currentChapter);
|
||||||
|
}
|
||||||
if(nextPageNo==0){
|
if(nextPageNo==0){
|
||||||
drawStatus();
|
drawStatus();
|
||||||
}
|
}
|
||||||
|
@ -1691,8 +1712,9 @@ private void hideSysUI(){
|
||||||
|
|
||||||
|
|
||||||
int prePageNo =currentPage.getPageNo()-1;
|
int prePageNo =currentPage.getPageNo()-1;
|
||||||
// Log.d(TAG,String.format("currentPageno %s,total pagno %s",currentPage.getPageNo(),currentChaptPages.size()));
|
Log.d(TAG,String.format("prepare book currentPageno %s,total pagno %s",currentPage.getPageNo(),currentChaptPages.size()));
|
||||||
|
Log.e(TAG,String.format("prepare book getPrePage() currentChapter %s, chapters().size() %s,currentChaptPages .size() is %s,currentpage pageno is %s"
|
||||||
|
,currentChapter, getChapters().size(), currentChaptPages.size() , prePageNo));
|
||||||
|
|
||||||
if(prePageNo <=0){
|
if(prePageNo <=0){
|
||||||
nextChaptPages =currentChaptPages;
|
nextChaptPages =currentChaptPages;
|
||||||
|
|
|
@ -1,17 +1,25 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout
|
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/main_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:fitsSystemWindows="true"
|
||||||
>
|
android:clipToPadding="true"
|
||||||
|
>
|
||||||
|
|
||||||
|
<android.support.design.widget.AppBarLayout
|
||||||
|
android:id="@+id/appbar"
|
||||||
|
style="@style/barLayout"
|
||||||
|
>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</android.support.design.widget.AppBarLayout>
|
||||||
|
|
||||||
<com.czp.searchmlist.mSearchLayout
|
<com.czp.searchmlist.mSearchLayout
|
||||||
android:layout_marginTop="35dp"
|
android:layout_marginTop="5dp"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:id="@+id/msearchlayout"
|
android:id="@+id/msearchlayout"
|
||||||
|
@ -28,5 +36,4 @@
|
||||||
android:id="@+id/banner_container"/>
|
android:id="@+id/banner_container"/>
|
||||||
|
|
||||||
|
|
||||||
|
</android.support.design.widget.CoordinatorLayout>
|
||||||
</LinearLayout>
|
|
||||||
|
|
|
@ -96,7 +96,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:lines="1"
|
android:lines="1"
|
||||||
android:text="上次读到"
|
android:text="上次读到"
|
||||||
android:paddingEnd="10dp"
|
android:paddingEnd="15dp"
|
||||||
android:layout_gravity="center_vertical|center_horizontal"
|
android:layout_gravity="center_vertical|center_horizontal"
|
||||||
android:gravity="right"
|
android:gravity="right"
|
||||||
|
|
||||||
|
@ -109,6 +109,15 @@
|
||||||
android:paddingLeft="5dp"
|
android:paddingLeft="5dp"
|
||||||
>
|
>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/txtLastDomain"
|
||||||
|
style="@style/TextViewDesc.small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:lines="1"
|
||||||
|
android:text=""
|
||||||
|
|
||||||
|
/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/txtLatestReadChapter"
|
android:id="@+id/txtLatestReadChapter"
|
||||||
|
@ -144,7 +153,11 @@
|
||||||
app:cardBackgroundColor="@color/white"
|
app:cardBackgroundColor="@color/white"
|
||||||
app:cardCornerRadius="6dp"
|
app:cardCornerRadius="6dp"
|
||||||
app:cardElevation="2dp">
|
app:cardElevation="2dp">
|
||||||
|
<!-- <FrameLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
|
||||||
|
>-->
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/imageG1"
|
android:id="@+id/imageG1"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -153,6 +166,17 @@
|
||||||
android:src="@drawable/googleg_standard_color_18"
|
android:src="@drawable/googleg_standard_color_18"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
|
<!-- <TextView
|
||||||
|
android:id="@+id/tvImportTitle"
|
||||||
|
style="@style/TextViewNovelTitle"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_width="75dp"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text=""
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:visibility="gone"
|
||||||
|
/>-->
|
||||||
|
<!--</FrameLayout>-->
|
||||||
</android.support.v7.widget.CardView>
|
</android.support.v7.widget.CardView>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
|
@ -2,19 +2,19 @@
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="10dp"
|
android:padding="0dp"
|
||||||
android:background="@color/white"
|
android:background="@color/white"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/btnZhengli"
|
android:id="@+id/btnZhengli"
|
||||||
style="@style/buttonCates"
|
style="@style/buttonCates.bold"
|
||||||
android:text="整理书架"
|
android:text="整理书架"
|
||||||
/>
|
/>
|
||||||
<LinearLayout style="@style/llGraySplit.2dp"/>
|
<LinearLayout style="@style/llGraySplit.2dp"/>
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/btnImport"
|
android:id="@+id/btnImport"
|
||||||
style="@style/buttonCates"
|
style="@style/buttonCates.bold"
|
||||||
android:text="本地导入"
|
android:text="本地导入"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
android:padding="@dimen/_10dp"
|
android:padding="@dimen/_10dp"
|
||||||
>
|
>
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/buttonCates"
|
style="@style/buttonCates.bold"
|
||||||
android:layout_marginBottom="5dp"
|
android:layout_marginBottom="5dp"
|
||||||
android:text="@string/title_shelforder"
|
android:text="@string/title_shelforder"
|
||||||
|
|
||||||
|
|
|
@ -7,24 +7,26 @@
|
||||||
android:background="@drawable/item_selector"
|
android:background="@drawable/item_selector"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:layout_margin="0dp"
|
android:layout_marginTop="3dp"
|
||||||
android:padding="2dp">
|
android:padding="2dp">
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content"
|
||||||
|
|
||||||
|
>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/imageView"
|
android:id="@+id/imageView"
|
||||||
style="@style/NovelImage"
|
style="@style/NovelImage"
|
||||||
|
|
||||||
android:src="@drawable/googleg_standard_color_18" />
|
android:src="@drawable/blankcover" />
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/imageUpdated"
|
android:id="@+id/imageUpdated"
|
||||||
android:layout_width="35dp"
|
android:layout_width="35dp"
|
||||||
android:layout_height="35dp"
|
android:layout_height="35dp"
|
||||||
android:layout_gravity="end"
|
android:layout_gravity="end"
|
||||||
android:layout_marginTop="2dp"
|
android:layout_marginTop="2dp"
|
||||||
android:layout_marginRight="6dp"
|
android:layout_marginRight="0dp"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
android:src="@drawable/ic_book_update_flag" />
|
android:src="@drawable/ic_book_update_flag" />
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -45,6 +47,17 @@
|
||||||
android:layout_marginTop="5dp"
|
android:layout_marginTop="5dp"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
android:text=""/>
|
android:text=""/>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvImportTitle"
|
||||||
|
style="@style/TextViewNovelTitle"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_width="75dp"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text=""
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:visibility="gone"
|
||||||
|
/>
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="90dp"
|
android:layout_width="90dp"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
android:layout_margin="0dp"
|
android:layout_marginTop="3dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:background="@drawable/item_selector"
|
android:background="@drawable/item_selector"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
|
@ -30,8 +30,9 @@
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:text="天龙八部天龙八部天龙八部"
|
android:text="天龙八部天龙八部天龙八部"
|
||||||
android:paddingRight="2dp"
|
android:paddingRight="4dp"
|
||||||
android:paddingLeft="2dp"
|
android:paddingLeft="4dp"
|
||||||
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,10 @@
|
||||||
<item name="android:paddingTop">2dp</item>
|
<item name="android:paddingTop">2dp</item>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
<style name="buttonCates.bold" >
|
||||||
|
<item name="android:textStyle">bold</item>
|
||||||
|
|
||||||
|
</style>
|
||||||
<style name="buttonCates.big">
|
<style name="buttonCates.big">
|
||||||
<item name="android:layout_height">match_parent</item>
|
<item name="android:layout_height">match_parent</item>
|
||||||
</style>
|
</style>
|
||||||
|
@ -168,16 +171,16 @@
|
||||||
</style>
|
</style>
|
||||||
<style name="NovelImage">
|
<style name="NovelImage">
|
||||||
<item name="android:layout_width">80dp</item>
|
<item name="android:layout_width">80dp</item>
|
||||||
<item name="android:layout_height">100dp</item>
|
<item name="android:layout_height">115dp</item>
|
||||||
<item name="android:layout_weight">1</item>
|
<item name="android:layout_weight">1</item>
|
||||||
<item name="android:layout_gravity">center</item>
|
<item name="android:layout_gravity">center</item>
|
||||||
<item name="android:gravity">center_horizontal</item>
|
<item name="android:gravity">center_horizontal</item>
|
||||||
<item name="android:scaleType">fitStart</item>
|
<item name="android:scaleType">matrix</item>
|
||||||
<item name="android:paddingTop">2dp</item>
|
<item name="android:paddingTop">2dp</item>
|
||||||
</style>
|
</style>
|
||||||
<style name="NovelImage.grid">
|
<style name="NovelImage.grid">
|
||||||
<item name="android:layout_width">100dp</item>
|
<item name="android:layout_width">90dp</item>
|
||||||
<item name="android:layout_height">120dp</item>
|
<item name="android:layout_height">129dp</item>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
<style name="NovelImage.horizon">
|
<style name="NovelImage.horizon">
|
||||||
|
|
|
@ -106,6 +106,7 @@
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_aapt_derived_proguard_rules" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_aapt_derived_proguard_rules" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_main_dex_list" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_main_dex_list" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint_jar" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged-not-compiled-resources" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged-not-compiled-resources" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" />
|
||||||
|
@ -125,6 +126,7 @@
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/signing_config" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/signing_config" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/tmp" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/validate_signing_config" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/validate_signing_config" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
|
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
|
||||||
|
|
Loading…
Reference in New Issue