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

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

@ -9,8 +9,8 @@ android {
applicationId "com.monke.monkeybook" applicationId "com.monke.monkeybook"
minSdkVersion 17 minSdkVersion 17
targetSdkVersion 25 targetSdkVersion 25
versionCode 7 versionCode 8
versionName "1.2.2" versionName "1.2.3"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "debug"] 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 { lintOptions {
abortOnError false abortOnError false
} }

@ -22,13 +22,15 @@ import com.monke.monkeybook.model.impl.WebBookModelImpl;
import com.monke.monkeybook.presenter.IBookDetailPresenter; import com.monke.monkeybook.presenter.IBookDetailPresenter;
import com.monke.monkeybook.view.IBookDetailView; import com.monke.monkeybook.view.IBookDetailView;
import com.trello.rxlifecycle2.android.ActivityEvent; import com.trello.rxlifecycle2.android.ActivityEvent;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.ObservableEmitter; import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe; import io.reactivex.ObservableOnSubscribe;
import io.reactivex.ObservableSource;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView> implements IBookDetailPresenter { public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView> implements IBookDetailPresenter {
@ -40,6 +42,8 @@ public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView>
private BookShelfBean bookShelf; private BookShelfBean bookShelf;
private Boolean inBookShelf = false; private Boolean inBookShelf = false;
private List<BookShelfBean> bookShelfs = Collections.synchronizedList(new ArrayList<BookShelfBean>()); //用来比对搜索的书籍是否已经添加进书架
public BookDetailPresenterImpl(Intent intent) { public BookDetailPresenterImpl(Intent intent) {
openfrom = intent.getIntExtra("from", FROM_BOOKSHELF); openfrom = intent.getIntExtra("from", FROM_BOOKSHELF);
if (openfrom == FROM_BOOKSHELF) { if (openfrom == FROM_BOOKSHELF) {
@ -75,15 +79,40 @@ public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView>
@Override @Override
public void getBookShelfInfo() { public void getBookShelfInfo() {
final BookShelfBean bookShelfResult = new BookShelfBean(); Observable.create(new ObservableOnSubscribe<List<BookShelfBean>>() {
bookShelfResult.setNoteUrl(searchBook.getNoteUrl()); @Override
bookShelfResult.setFinalDate(System.currentTimeMillis()); public void subscribe(ObservableEmitter<List<BookShelfBean>> e) throws Exception {
bookShelfResult.setDurChapter(0); List<BookShelfBean> temp = DbHelper.getInstance().getmDaoSession().getBookShelfBeanDao().queryBuilder().list();
bookShelfResult.setDurChapterPage(0); if (temp == null)
bookShelfResult.setTag(searchBook.getTag()); temp = new ArrayList<BookShelfBean>();
e.onNext(temp);
WebBookModelImpl.getInstance().getBookInfo(bookShelfResult) e.onComplete();
.subscribeOn(Schedulers.newThread()) }
}).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());
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)) .compose(((BaseActivity)mView.getContext()).<BookShelfBean>bindUntilEvent(ActivityEvent.DESTROY))
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<BookShelfBean>() { .subscribe(new SimpleObserver<BookShelfBean>() {
@ -222,6 +251,14 @@ public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView>
} }
) )
public void hadRemoveBook(BookShelfBean value) { 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()))) { if ((null != bookShelf && value.getNoteUrl().equals(bookShelf.getNoteUrl())) || (null != searchBook && value.getNoteUrl().equals(searchBook.getNoteUrl()))) {
inBookShelf = false; inBookShelf = false;
if (null != searchBook) { if (null != searchBook) {
@ -238,6 +275,7 @@ public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView>
} }
) )
public void hadBook(BookShelfBean value) { public void hadBook(BookShelfBean value) {
bookShelfs.add(value);
if ((null != bookShelf && value.getNoteUrl().equals(bookShelf.getNoteUrl())) || (null != searchBook && value.getNoteUrl().equals(searchBook.getNoteUrl()))) { if ((null != bookShelf && value.getNoteUrl().equals(bookShelf.getNoteUrl())) || (null != searchBook && value.getNoteUrl().equals(searchBook.getNoteUrl()))) {
inBookShelf = true; inBookShelf = true;
if (null != searchBook) { if (null != searchBook) {

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

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

@ -13,13 +13,17 @@ import com.monke.basemvplib.IView;
import com.trello.rxlifecycle2.components.support.RxAppCompatActivity; import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
public abstract class BaseActivity<T extends IPresenter> extends RxAppCompatActivity implements IView { 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 Bundle savedInstanceState;
protected T mPresenter; protected T mPresenter;
private Boolean startShareAnim = false;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
this.savedInstanceState = savedInstanceState; this.savedInstanceState = savedInstanceState;
if(getIntent()!=null){
startShareAnim = getIntent().getBooleanExtra(start_share_ele,false);
}
AppActivityManager.getInstance().add(this); AppActivityManager.getInstance().add(this);
initSDK(); initSDK();
onCreateActivity(); 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) { protected void startActivityByAnim(Intent intent, @NonNull View view, @NonNull String transitionName, int animIn, int animExit) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
intent.putExtra(start_share_ele,true);
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, view, transitionName).toBundle()); startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, view, transitionName).toBundle());
} else { } else {
startActivityByAnim(intent, animIn, animExit); startActivityByAnim(intent, animIn, animExit);
@ -137,4 +142,8 @@ public abstract class BaseActivity<T extends IPresenter> extends RxAppCompatActi
public Context getContext(){ public Context getContext(){
return this; return this;
} }
public Boolean getStart_share_ele() {
return startShareAnim;
}
} }
Loading…
Cancel
Save