书城部分跳转动画优化,以及跳转书籍详情不能正确显示是否已经添加,搜索更多动画优化

1105075896@qq.com 8 years ago
parent 09b0f88e7d
commit ae1763afe1

@ -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
}

@ -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<IBookDetailView> implements IBookDetailPresenter {
@ -40,6 +42,8 @@ public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView>
private BookShelfBean bookShelf;
private Boolean inBookShelf = false;
private List<BookShelfBean> bookShelfs = Collections.synchronizedList(new ArrayList<BookShelfBean>()); //用来比对搜索的书籍是否已经添加进书架
public BookDetailPresenterImpl(Intent intent) {
openfrom = intent.getIntExtra("from", FROM_BOOKSHELF);
if (openfrom == FROM_BOOKSHELF) {
@ -75,15 +79,40 @@ public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView>
@Override
public void getBookShelfInfo() {
Observable.create(new ObservableOnSubscribe<List<BookShelfBean>>() {
@Override
public void subscribe(ObservableEmitter<List<BookShelfBean>> e) throws Exception {
List<BookShelfBean> temp = DbHelper.getInstance().getmDaoSession().getBookShelfBeanDao().queryBuilder().list();
if (temp == null)
temp = new ArrayList<BookShelfBean>();
e.onNext(temp);
e.onComplete();
}
}).flatMap(new Function<List<BookShelfBean>, ObservableSource<BookShelfBean>>() {
@Override
public ObservableSource<BookShelfBean> apply(List<BookShelfBean> 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());
WebBookModelImpl.getInstance().getBookInfo(bookShelfResult)
.subscribeOn(Schedulers.newThread())
return WebBookModelImpl.getInstance().getBookInfo(bookShelfResult);
}
}).map(new Function<BookShelfBean, BookShelfBean>() {
@Override
public BookShelfBean apply(BookShelfBean bookShelfBean) throws Exception {
for(int i=0;i<bookShelfs.size();i++){
if(bookShelfs.get(i).getNoteUrl().equals(bookShelfBean.getNoteUrl())){
inBookShelf = true;
break;
}
}
return bookShelfBean;
}
}).subscribeOn(Schedulers.newThread())
.compose(((BaseActivity)mView.getContext()).<BookShelfBean>bindUntilEvent(ActivityEvent.DESTROY))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<BookShelfBean>() {
@ -222,6 +251,14 @@ public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView>
}
)
public void hadRemoveBook(BookShelfBean value) {
if(bookShelfs!=null){
for(int i=0;i<bookShelfs.size();i++){
if(bookShelfs.get(i).getNoteUrl().equals(value.getNoteUrl())){
bookShelfs.remove(i);
break;
}
}
}
if ((null != bookShelf && value.getNoteUrl().equals(bookShelf.getNoteUrl())) || (null != searchBook && value.getNoteUrl().equals(searchBook.getNoteUrl()))) {
inBookShelf = false;
if (null != searchBook) {
@ -238,6 +275,7 @@ public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView>
}
)
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) {

@ -151,14 +151,11 @@ public class SearchBookAdapter extends RefreshRecyclerViewAdapter {
this.itemClickListener = itemClickListener;
}
public void addAll(List<SearchBookBean> 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<SearchBookBean> newDatas) {
if(newDatas!=null && newDatas.size()>0){
int oldCount = getItemcount();
searchBooks.addAll(newDatas);
notifyItemRangeInserted(oldCount,newDatas.size());
}
}

@ -216,9 +216,15 @@ public class BookDetailActivity extends MBaseActivity<IBookDetailPresenter> impl
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
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<IBookDetailPresenter> impl
startActivityByAnim(intent, android.R.anim.fade_in, android.R.anim.fade_out);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if(getStart_share_ele()){
finishAfterTransition();
}else{
finish();
overridePendingTransition(0,android.R.anim.fade_out);
}
} else {
finish();
overridePendingTransition(0,android.R.anim.fade_out);
}
}
});

@ -13,13 +13,17 @@ import com.monke.basemvplib.IView;
import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
public abstract class BaseActivity<T extends IPresenter> 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<T extends IPresenter> 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<T extends IPresenter> extends RxAppCompatActi
public Context getContext(){
return this;
}
public Boolean getStart_share_ele() {
return startShareAnim;
}
}
Loading…
Cancel
Save