diff --git a/app/build.gradle b/app/build.gradle index ce8534b..99089f6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "com.monke.monkeybook" minSdkVersion 17 targetSdkVersion 25 - versionCode 7 - versionName "1.2.2" + versionCode 8 + versionName "1.2.3" manifestPlaceholders = [UMENG_CHANNEL_VALUE: "debug"] } @@ -23,14 +23,7 @@ android { } } - signingConfigs { - config { - keyAlias 'monkeybook' - keyPassword 'zqh19931118' - storeFile file('D:/WorkSpace/Android/PersonalKey/Monke_keystore.jks') - storePassword 'zqh19931118' - } - } + lintOptions { abortOnError false } diff --git a/app/src/main/java/com/monke/monkeybook/presenter/impl/BookDetailPresenterImpl.java b/app/src/main/java/com/monke/monkeybook/presenter/impl/BookDetailPresenterImpl.java index 45ce51d..ed8d5e9 100644 --- a/app/src/main/java/com/monke/monkeybook/presenter/impl/BookDetailPresenterImpl.java +++ b/app/src/main/java/com/monke/monkeybook/presenter/impl/BookDetailPresenterImpl.java @@ -22,13 +22,15 @@ import com.monke.monkeybook.model.impl.WebBookModelImpl; import com.monke.monkeybook.presenter.IBookDetailPresenter; import com.monke.monkeybook.view.IBookDetailView; import com.trello.rxlifecycle2.android.ActivityEvent; - import java.util.ArrayList; +import java.util.Collections; import java.util.List; import io.reactivex.Observable; import io.reactivex.ObservableEmitter; import io.reactivex.ObservableOnSubscribe; +import io.reactivex.ObservableSource; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; public class BookDetailPresenterImpl extends BasePresenterImpl implements IBookDetailPresenter { @@ -40,6 +42,8 @@ public class BookDetailPresenterImpl extends BasePresenterImpl private BookShelfBean bookShelf; private Boolean inBookShelf = false; + private List bookShelfs = Collections.synchronizedList(new ArrayList()); //用来比对搜索的书籍是否已经添加进书架 + public BookDetailPresenterImpl(Intent intent) { openfrom = intent.getIntExtra("from", FROM_BOOKSHELF); if (openfrom == FROM_BOOKSHELF) { @@ -75,15 +79,40 @@ public class BookDetailPresenterImpl extends BasePresenterImpl @Override public void getBookShelfInfo() { - final BookShelfBean bookShelfResult = new BookShelfBean(); - bookShelfResult.setNoteUrl(searchBook.getNoteUrl()); - bookShelfResult.setFinalDate(System.currentTimeMillis()); - bookShelfResult.setDurChapter(0); - bookShelfResult.setDurChapterPage(0); - bookShelfResult.setTag(searchBook.getTag()); - - WebBookModelImpl.getInstance().getBookInfo(bookShelfResult) - .subscribeOn(Schedulers.newThread()) + Observable.create(new ObservableOnSubscribe>() { + @Override + public void subscribe(ObservableEmitter> e) throws Exception { + List temp = DbHelper.getInstance().getmDaoSession().getBookShelfBeanDao().queryBuilder().list(); + if (temp == null) + temp = new ArrayList(); + e.onNext(temp); + e.onComplete(); + } + }).flatMap(new Function, ObservableSource>() { + @Override + public ObservableSource apply(List bookShelfBeen) throws Exception { + bookShelfs.addAll(bookShelfBeen); + + final BookShelfBean bookShelfResult = new BookShelfBean(); + bookShelfResult.setNoteUrl(searchBook.getNoteUrl()); + bookShelfResult.setFinalDate(System.currentTimeMillis()); + bookShelfResult.setDurChapter(0); + bookShelfResult.setDurChapterPage(0); + bookShelfResult.setTag(searchBook.getTag()); + return WebBookModelImpl.getInstance().getBookInfo(bookShelfResult); + } + }).map(new Function() { + @Override + public BookShelfBean apply(BookShelfBean bookShelfBean) throws Exception { + for(int i=0;ibindUntilEvent(ActivityEvent.DESTROY)) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SimpleObserver() { @@ -222,6 +251,14 @@ public class BookDetailPresenterImpl extends BasePresenterImpl } ) public void hadRemoveBook(BookShelfBean value) { + if(bookShelfs!=null){ + for(int i=0;i } ) public void hadBook(BookShelfBean value) { + bookShelfs.add(value); if ((null != bookShelf && value.getNoteUrl().equals(bookShelf.getNoteUrl())) || (null != searchBook && value.getNoteUrl().equals(searchBook.getNoteUrl()))) { inBookShelf = true; if (null != searchBook) { diff --git a/app/src/main/java/com/monke/monkeybook/view/adapter/SearchBookAdapter.java b/app/src/main/java/com/monke/monkeybook/view/adapter/SearchBookAdapter.java index fe52fda..06b3311 100644 --- a/app/src/main/java/com/monke/monkeybook/view/adapter/SearchBookAdapter.java +++ b/app/src/main/java/com/monke/monkeybook/view/adapter/SearchBookAdapter.java @@ -151,14 +151,11 @@ public class SearchBookAdapter extends RefreshRecyclerViewAdapter { this.itemClickListener = itemClickListener; } - public void addAll(List newData) { - if (newData != null && newData.size() > 0) { - int position = getItemcount(); - if (newData != null && newData.size() > 0) { - searchBooks.addAll(newData); - } - notifyItemInserted(position); - notifyItemRangeChanged(position, newData.size()); + public void addAll(List newDatas) { + if(newDatas!=null && newDatas.size()>0){ + int oldCount = getItemcount(); + searchBooks.addAll(newDatas); + notifyItemRangeInserted(oldCount,newDatas.size()); } } diff --git a/app/src/main/java/com/monke/monkeybook/view/impl/BookDetailActivity.java b/app/src/main/java/com/monke/monkeybook/view/impl/BookDetailActivity.java index 5b76b3e..5e32dd4 100644 --- a/app/src/main/java/com/monke/monkeybook/view/impl/BookDetailActivity.java +++ b/app/src/main/java/com/monke/monkeybook/view/impl/BookDetailActivity.java @@ -216,9 +216,15 @@ public class BookDetailActivity extends MBaseActivity impl @Override public void onClick(View v) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - finishAfterTransition(); + if(getStart_share_ele()){ + finishAfterTransition(); + }else{ + finish(); + overridePendingTransition(0,android.R.anim.fade_out); + } } else { finish(); + overridePendingTransition(0,android.R.anim.fade_out); } } }); @@ -240,9 +246,15 @@ public class BookDetailActivity extends MBaseActivity impl startActivityByAnim(intent, android.R.anim.fade_in, android.R.anim.fade_out); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - finishAfterTransition(); + if(getStart_share_ele()){ + finishAfterTransition(); + }else{ + finish(); + overridePendingTransition(0,android.R.anim.fade_out); + } } else { finish(); + overridePendingTransition(0,android.R.anim.fade_out); } } }); diff --git a/basemvplib/src/main/java/com/monke/basemvplib/impl/BaseActivity.java b/basemvplib/src/main/java/com/monke/basemvplib/impl/BaseActivity.java index 8ed98d5..2ad438a 100644 --- a/basemvplib/src/main/java/com/monke/basemvplib/impl/BaseActivity.java +++ b/basemvplib/src/main/java/com/monke/basemvplib/impl/BaseActivity.java @@ -13,13 +13,17 @@ import com.monke.basemvplib.IView; import com.trello.rxlifecycle2.components.support.RxAppCompatActivity; public abstract class BaseActivity extends RxAppCompatActivity implements IView { + public final static String start_share_ele= "start_with_share_ele"; protected Bundle savedInstanceState; protected T mPresenter; - + private Boolean startShareAnim = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.savedInstanceState = savedInstanceState; + if(getIntent()!=null){ + startShareAnim = getIntent().getBooleanExtra(start_share_ele,false); + } AppActivityManager.getInstance().add(this); initSDK(); onCreateActivity(); @@ -128,6 +132,7 @@ public abstract class BaseActivity extends RxAppCompatActi protected void startActivityByAnim(Intent intent, @NonNull View view, @NonNull String transitionName, int animIn, int animExit) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + intent.putExtra(start_share_ele,true); startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, view, transitionName).toBundle()); } else { startActivityByAnim(intent, animIn, animExit); @@ -137,4 +142,8 @@ public abstract class BaseActivity extends RxAppCompatActi public Context getContext(){ return this; } + + public Boolean getStart_share_ele() { + return startShareAnim; + } } \ No newline at end of file