去除百度自动更新SDK

修复小米8等刘海屏 在搜索页无法正常使用的BUG
阅读页 对于大分辨率(2K)用户的滑动/点击优化
Monke 7 years ago
parent 8736ac544c
commit 287719d550

@ -1 +0,0 @@
MonkeyBook

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<resourceExtensions />
<wildcardResourcePatterns>
<entry name="!?*.java" />
<entry name="!?*.form" />
<entry name="!?*.class" />
<entry name="!?*.groovy" />
<entry name="!?*.scala" />
<entry name="!?*.flex" />
<entry name="!?*.kt" />
<entry name="!?*.clj" />
<entry name="!?*.aj" />
</wildcardResourcePatterns>
<annotationProcessing>
<profile default="true" name="Default" enabled="false">
<processorPath useClasspath="true" />
</profile>
</annotationProcessing>
</component>
</project>

@ -1,3 +0,0 @@
<component name="CopyrightManager">
<settings default="" />
</component>

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="PROJECT" charset="UTF-8" />
</component>
</project>

@ -1,62 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="EntryPointsManager">
<entry_points version="2.0" />
</component>
<component name="NullableNotNullManager"> <component name="NullableNotNullManager">
<option name="myDefaultNullable" value="android.support.annotation.Nullable" /> <option name="myDefaultNullable" value="android.support.annotation.Nullable" />
<option name="myDefaultNotNull" value="android.support.annotation.NonNull" /> <option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
<option name="myNullables"> <option name="myNullables">
<value> <value>
<list size="4"> <list size="7">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" /> <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" /> <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" /> <item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" /> <item index="3" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
<item index="4" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.Nullable" />
<item index="6" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
</list> </list>
</value> </value>
</option> </option>
<option name="myNotNulls"> <option name="myNotNulls">
<value> <value>
<list size="4"> <list size="6">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" /> <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" /> <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" /> <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" /> <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
<item index="4" class="java.lang.String" itemvalue="androidx.annotation.NonNull" />
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" />
</list> </list>
</value> </value>
</option> </option>
</component> </component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
<OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" />
<OptionsSetting value="true" id="Checkout" />
<OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" />
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
<component name="masterDetails">
<states>
<state key="ProjectJDKs.UI">
<settings>
<last-edited>1.8</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project> </project>

@ -2,7 +2,7 @@
<project version="4"> <project version="4">
<component name="ProjectModuleManager"> <component name="ProjectModuleManager">
<modules> <modules>
<module fileurl="file://$PROJECT_DIR$/MonkeyBook.iml" filepath="$PROJECT_DIR$/MonkeyBook.iml" /> <module fileurl="file://$PROJECT_DIR$/.idea/MONKOVEL.iml" filepath="$PROJECT_DIR$/.idea/MONKOVEL.iml" />
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
<module fileurl="file://$PROJECT_DIR$/basemvplib/basemvplib.iml" filepath="$PROJECT_DIR$/basemvplib/basemvplib.iml" /> <module fileurl="file://$PROJECT_DIR$/basemvplib/basemvplib.iml" filepath="$PROJECT_DIR$/basemvplib/basemvplib.iml" />
</modules> </modules>

@ -2,27 +2,18 @@ apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' apply plugin: 'org.greenrobot.greendao'
android { android {
compileSdkVersion 25 compileSdkVersion 28
buildToolsVersion '25.0.0' buildToolsVersion '28.0.3'
defaultConfig { defaultConfig {
applicationId "com.monke.monkeybook" applicationId "com.monke.monkeybook"
minSdkVersion 17 minSdkVersion 17
targetSdkVersion 25 targetSdkVersion 28
versionCode 9 versionCode 10
versionName "1.2.4" versionName "1.2.5"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "debug"] manifestPlaceholders = [UMENG_CHANNEL_VALUE: "debug"]
} }
productFlavors{
baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
}
pyger{
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "pyger"]
}
}
lintOptions { lintOptions {
abortOnError false abortOnError false
} }
@ -31,16 +22,6 @@ android {
buildConfigField "boolean", "IS_RELEASE", "true" buildConfigField "boolean", "IS_RELEASE", "true"
minifyEnabled true minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
//apk
def fileName = APP_NAME +"_"+"${variant.productFlavors[0].name}"+ "_v" + defaultConfig.versionName + "(" + defaultConfig.versionCode + ").apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
} }
debug { debug {
buildConfigField "boolean", "IS_RELEASE", "false" buildConfigField "boolean", "IS_RELEASE", "false"
@ -59,41 +40,40 @@ repositories{
dependencies { dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs') api fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12' testImplementation 'junit:junit:4.12'
compile(name: 'autoupdatesdk-release', ext: 'aar') api 'com.android.support:appcompat-v7:28.0.0'
compile 'com.android.support:appcompat-v7:25.1.0' api 'com.android.support:design:28.0.0'
compile 'com.android.support:design:25.1.0' api 'com.android.support:cardview-v7:28.0.0'
compile 'com.android.support:cardview-v7:25.1.0' api 'com.android.support:support-compat:28.0.0'
compile 'com.android.support:support-compat:25.1.0' api project(':basemvplib')
compile project(':basemvplib')
//GreenDao //GreenDao
compile 'org.greenrobot:greendao:3.0.1' api 'org.greenrobot:greendao:3.0.1'
compile 'org.greenrobot:greendao-generator:3.0.0' api 'org.greenrobot:greendao-generator:3.0.0'
//JSOUP //JSOUP
compile 'org.jsoup:jsoup:1.10.2' api 'org.jsoup:jsoup:1.10.2'
// //
compile 'com.zhangmonke:ImmerseLayout:1.1.1' api 'com.zhangmonke:ImmerseLayout:1.1.1'
//ProgressBar //ProgressBar
compile 'com.zhangmonke:MProgressBar:1.0.1' api 'com.zhangmonke:MProgressBar:1.0.1'
//Glide //Glide
compile 'com.github.bumptech.glide:glide:3.7.0' api 'com.github.bumptech.glide:glide:3.7.0'
//AutofitTextView //AutofitTextView
compile 'me.grantland:autofittextview:0.2.1' api 'me.grantland:autofittextview:0.2.1'
// //
compile 'tyrantgit:explosionfield:1.0.1' api 'tyrantgit:explosionfield:1.0.1'
//View //View
compile 'com.daimajia.easing:library:2.0@aar' api 'com.daimajia.easing:library:2.0@aar'
compile 'com.daimajia.androidanimations:library:2.2@aar' api 'com.daimajia.androidanimations:library:2.2@aar'
//CircleImageView //CircleImageView
compile 'de.hdodenhof:circleimageview:2.1.0' api 'de.hdodenhof:circleimageview:2.1.0'
//SwitchButton //SwitchButton
compile 'com.kyleduo.switchbutton:library:1.4.4' api 'com.kyleduo.switchbutton:library:1.4.4'
compile 'com.victor:lib:1.0.4' api 'com.victor:lib:1.0.4'
compile files('libs/commons-codec-1.10-sources.jar') api files('libs/commons-codec-1.10-sources.jar')
compile files('libs/juniversalchardet-1.0.3.jar') api files('libs/juniversalchardet-1.0.3.jar')
compile files('libs/umeng-analytics-v6.1.1.jar') api files('libs/umeng-analytics-v6.1.1.jar')
compile files('libs/utdid4all-1.0.4.jar') api files('libs/utdid4all-1.0.4.jar')
} }
greendao { greendao {

@ -10,7 +10,8 @@
android:label="@string/app_name" android:label="@string/app_name"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/CAppTheme" android:theme="@style/CAppTheme"
tools:replace="android:theme"> tools:replace="android:theme"
android:networkSecurityConfig="@xml/network_security_config">
<activity <activity
android:name=".view.impl.WelcomeActivity" android:name=".view.impl.WelcomeActivity"
android:screenOrientation="portrait"> android:screenOrientation="portrait">
@ -59,26 +60,9 @@
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:theme="@style/CAppTransparentTheme" /> android:theme="@style/CAppTransparentTheme" />
<meta-data
android:name="BDAPPID"
android:value="@string/baidu_app_id" />
<meta-data
android:name="BDAPPKEY"
android:value="@string/baidu_app_key" />
<meta-data <meta-data
android:name="UMENG_CHANNEL_VALUE" android:name="UMENG_CHANNEL_VALUE"
android:value="${UMENG_CHANNEL_VALUE}" /> android:value="${UMENG_CHANNEL_VALUE}" />
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/bdp_update_filepaths" />
</provider>
</application> </application>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
@ -87,6 +71,5 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-sdk android:minSdkVersion="8"></uses-sdk>
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest> </manifest>

@ -84,7 +84,18 @@ public class DensityUtil {
public static int getWindowWidth(Context context){ public static int getWindowWidth(Context context){
WindowManager wm = (WindowManager) context WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE); .getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth(); DisplayMetrics dm = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
return width; return width;
} }
public static int getWindowHeight(Context context){
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
int height = dm.heightPixels;
return height;
}
} }

@ -10,9 +10,6 @@ import android.widget.FrameLayout;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Toast; import android.widget.Toast;
import com.baidu.autoupdatesdk.BDAutoUpdateSDK;
import com.baidu.autoupdatesdk.UICheckUpdateCallback;
import com.monke.monkeybook.BitIntentDataManager; import com.monke.monkeybook.BitIntentDataManager;
import com.monke.monkeybook.R; import com.monke.monkeybook.R;
import com.monke.monkeybook.base.MBaseActivity; import com.monke.monkeybook.base.MBaseActivity;
@ -165,22 +162,6 @@ public class MainActivity extends MBaseActivity<IMainPresenter> implements IMain
@Override @Override
protected void firstRequest() { protected void firstRequest() {
//通过百度API 判断是否有更新
try {
BDAutoUpdateSDK.uiUpdateAction(this, new UICheckUpdateCallback() {
@Override
public void onNoUpdateFound() {
}
@Override
public void onCheckComplete() {
}
});
} catch (Exception e) {
e.printStackTrace();
}
mPresenter.queryBookShelf(false); mPresenter.queryBookShelf(false);
} }

@ -1,6 +1,5 @@
//Copyright (c) 2017. 章钦豪. All rights reserved. //Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.view.impl; package com.monke.monkeybook.view.impl;
import android.animation.Animator; import android.animation.Animator;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -26,7 +25,6 @@ import android.widget.FrameLayout;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import com.daimajia.androidanimations.library.Techniques; import com.daimajia.androidanimations.library.Techniques;
import com.daimajia.androidanimations.library.YoYo; import com.daimajia.androidanimations.library.YoYo;
import com.monke.immerselayout.StatusBarUtils; import com.monke.immerselayout.StatusBarUtils;
@ -37,6 +35,7 @@ import com.monke.monkeybook.bean.SearchHistoryBean;
import com.monke.monkeybook.presenter.ISearchPresenter; import com.monke.monkeybook.presenter.ISearchPresenter;
import com.monke.monkeybook.presenter.impl.BookDetailPresenterImpl; import com.monke.monkeybook.presenter.impl.BookDetailPresenterImpl;
import com.monke.monkeybook.presenter.impl.SearchPresenterImpl; import com.monke.monkeybook.presenter.impl.SearchPresenterImpl;
import com.monke.monkeybook.utils.DensityUtil;
import com.monke.monkeybook.utils.NetworkUtil; import com.monke.monkeybook.utils.NetworkUtil;
import com.monke.monkeybook.view.ISearchView; import com.monke.monkeybook.view.ISearchView;
import com.monke.monkeybook.view.adapter.SearchBookAdapter; import com.monke.monkeybook.view.adapter.SearchBookAdapter;
@ -44,16 +43,12 @@ import com.monke.monkeybook.view.adapter.SearchHistoryAdapter;
import com.monke.monkeybook.widget.flowlayout.TagFlowLayout; import com.monke.monkeybook.widget.flowlayout.TagFlowLayout;
import com.monke.monkeybook.widget.refreshview.OnLoadMoreListener; import com.monke.monkeybook.widget.refreshview.OnLoadMoreListener;
import com.monke.monkeybook.widget.refreshview.RefreshRecyclerView; import com.monke.monkeybook.widget.refreshview.RefreshRecyclerView;
import java.util.List; import java.util.List;
import tyrantgit.explosionfield.ExplosionField; import tyrantgit.explosionfield.ExplosionField;
public class SearchActivity extends MBaseActivity<ISearchPresenter> implements ISearchView { public class SearchActivity extends MBaseActivity<ISearchPresenter> implements ISearchView {
private FrameLayout flSearchContent; private FrameLayout flSearchContent;
private EditText edtContent; private EditText edtContent;
private TextView tvTosearch; private TextView tvTosearch;
private LinearLayout llSearchHistory; private LinearLayout llSearchHistory;
private TextView tvSearchHistoryClean; private TextView tvSearchHistoryClean;
private TagFlowLayout tflSearchHistory; private TagFlowLayout tflSearchHistory;
@ -61,62 +56,50 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
private Animation animHistory; private Animation animHistory;
private Animator animHistory5; private Animator animHistory5;
private ExplosionField explosionField; private ExplosionField explosionField;
private RefreshRecyclerView rfRvSearchBooks; private RefreshRecyclerView rfRvSearchBooks;
private SearchBookAdapter searchBookAdapter; private SearchBookAdapter searchBookAdapter;
@Override @Override
protected ISearchPresenter initInjector() { protected ISearchPresenter initInjector() {
return new SearchPresenterImpl(); return new SearchPresenterImpl();
} }
@Override @Override
protected void onCreateActivity() { protected void onCreateActivity() {
setContentView(R.layout.activity_search); setContentView(R.layout.activity_search);
} }
@Override @Override
protected void initData() { protected void initData() {
explosionField = ExplosionField.attach2Window(this); explosionField = ExplosionField.attach2Window(this);
searchHistoryAdapter = new SearchHistoryAdapter(); searchHistoryAdapter = new SearchHistoryAdapter();
searchBookAdapter = new SearchBookAdapter(); searchBookAdapter = new SearchBookAdapter();
} }
@Override @Override
protected void bindView() { protected void bindView() {
flSearchContent = (FrameLayout) findViewById(R.id.fl_search_content); flSearchContent = (FrameLayout) findViewById(R.id.fl_search_content);
edtContent = (EditText) findViewById(R.id.edt_content); edtContent = (EditText) findViewById(R.id.edt_content);
tvTosearch = (TextView) findViewById(R.id.tv_tosearch); tvTosearch = (TextView) findViewById(R.id.tv_tosearch);
llSearchHistory = (LinearLayout) findViewById(R.id.ll_search_history); llSearchHistory = (LinearLayout) findViewById(R.id.ll_search_history);
tvSearchHistoryClean = (TextView) findViewById(R.id.tv_search_history_clean); tvSearchHistoryClean = (TextView) findViewById(R.id.tv_search_history_clean);
tflSearchHistory = (TagFlowLayout) findViewById(R.id.tfl_search_history); tflSearchHistory = (TagFlowLayout) findViewById(R.id.tfl_search_history);
tflSearchHistory.setAdapter(searchHistoryAdapter); tflSearchHistory.setAdapter(searchHistoryAdapter);
rfRvSearchBooks = (RefreshRecyclerView) findViewById(R.id.rfRv_search_books); rfRvSearchBooks = (RefreshRecyclerView) findViewById(R.id.rfRv_search_books);
rfRvSearchBooks.setRefreshRecyclerViewAdapter(searchBookAdapter, new LinearLayoutManager(this)); rfRvSearchBooks.setRefreshRecyclerViewAdapter(searchBookAdapter, new LinearLayoutManager(this));
View viewRefreshError = LayoutInflater.from(this).inflate(R.layout.view_searchbook_refresherror, null); View viewRefreshError = LayoutInflater.from(this).inflate(R.layout.view_searchbook_refresherror, null);
viewRefreshError.findViewById(R.id.tv_refresh_again).setOnClickListener(new View.OnClickListener() { viewRefreshError.findViewById(R.id.tv_refresh_again).setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
//刷新失败 ,重试 //刷新失败 ,重试
mPresenter.initPage(); mPresenter.initPage();
mPresenter.toSearchBooks(null,true); mPresenter.toSearchBooks(null, true);
rfRvSearchBooks.startRefresh(); rfRvSearchBooks.startRefresh();
} }
}); });
rfRvSearchBooks.setNoDataAndrRefreshErrorView(LayoutInflater.from(this).inflate(R.layout.view_searchbook_nodata, null), rfRvSearchBooks.setNoDataAndrRefreshErrorView(LayoutInflater.from(this).inflate(R.layout.view_searchbook_nodata, null),
viewRefreshError); viewRefreshError);
searchBookAdapter.setItemClickListener(new SearchBookAdapter.OnItemClickListener() { searchBookAdapter.setItemClickListener(new SearchBookAdapter.OnItemClickListener() {
@Override @Override
public void clickAddShelf(View clickView, int position, SearchBookBean searchBookBean) { public void clickAddShelf(View clickView, int position, SearchBookBean searchBookBean) {
mPresenter.addBookToShelf(searchBookBean); mPresenter.addBookToShelf(searchBookBean);
} }
@Override @Override
public void clickItem(View animView, int position, SearchBookBean searchBookBean) { public void clickItem(View animView, int position, SearchBookBean searchBookBean) {
Intent intent = new Intent(SearchActivity.this, BookDetailActivity.class); Intent intent = new Intent(SearchActivity.this, BookDetailActivity.class);
@ -126,10 +109,8 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
} }
}); });
} }
@Override @Override
protected void bindEvent() { protected void bindEvent() {
tvSearchHistoryClean.setOnClickListener(new View.OnClickListener() { tvSearchHistoryClean.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@ -142,14 +123,10 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
edtContent.addTextChangedListener(new TextWatcher() { edtContent.addTextChangedListener(new TextWatcher() {
@Override @Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { public void beforeTextChanged(CharSequence s, int start, int count, int after) {
} }
@Override @Override
public void onTextChanged(CharSequence s, int start, int before, int count) { public void onTextChanged(CharSequence s, int start, int before, int count) {
} }
@Override @Override
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
edtContent.setSelection(edtContent.length()); edtContent.setSelection(edtContent.length());
@ -160,7 +137,8 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
edtContent.setOnEditorActionListener(new TextView.OnEditorActionListener() { edtContent.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override @Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH || (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { if (actionId == EditorInfo.IME_ACTION_SEARCH || (event != null && event.getKeyCode() ==
KeyEvent.KEYCODE_ENTER)) {
toSearch(); toSearch();
return true; return true;
} else } else
@ -182,7 +160,6 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
} }
} }
}); });
searchHistoryAdapter.setOnItemClickListener(new SearchHistoryAdapter.OnItemClickListener() { searchHistoryAdapter.setOnItemClickListener(new SearchHistoryAdapter.OnItemClickListener() {
@Override @Override
public void itemClick(SearchHistoryBean searchHistoryBean) { public void itemClick(SearchHistoryBean searchHistoryBean) {
@ -190,28 +167,23 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
toSearch(); toSearch();
} }
}); });
bindKeyBoardEvent(); bindKeyBoardEvent();
rfRvSearchBooks.setLoadMoreListener(new OnLoadMoreListener() { rfRvSearchBooks.setLoadMoreListener(new OnLoadMoreListener() {
@Override @Override
public void startLoadmore() { public void startLoadmore() {
mPresenter.toSearchBooks(null, false); mPresenter.toSearchBooks(null, false);
} }
@Override @Override
public void loadMoreErrorTryAgain() { public void loadMoreErrorTryAgain() {
mPresenter.toSearchBooks(null, true); mPresenter.toSearchBooks(null, true);
} }
}); });
} }
@Override @Override
protected void firstRequest() { protected void firstRequest() {
super.firstRequest(); super.firstRequest();
mPresenter.querySearchHistory(); mPresenter.querySearchHistory();
} }
//开始搜索 //开始搜索
private void toSearch() { private void toSearch() {
if (edtContent.getText().toString().trim().length() > 0) { if (edtContent.getText().toString().trim().length() > 0) {
@ -219,7 +191,7 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
mPresenter.setHasSearch(true); mPresenter.setHasSearch(true);
mPresenter.insertSearchHistory(); mPresenter.insertSearchHistory();
closeKeyBoard(); closeKeyBoard();
//执搜索请求 //执搜索请求
new Handler().postDelayed(new Runnable() { new Handler().postDelayed(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -232,7 +204,6 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
YoYo.with(Techniques.Shake).playOn(flSearchContent); YoYo.with(Techniques.Shake).playOn(flSearchContent);
} }
} }
private void bindKeyBoardEvent() { private void bindKeyBoardEvent() {
llSearchHistory.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { llSearchHistory.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override @Override
@ -240,14 +211,19 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
Rect r = new Rect(); Rect r = new Rect();
llSearchHistory.getWindowVisibleDisplayFrame(r); llSearchHistory.getWindowVisibleDisplayFrame(r);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) llSearchHistory.getLayoutParams(); FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) llSearchHistory.getLayoutParams();
int height = llSearchHistory.getContext().getResources().getDisplayMetrics().heightPixels; int height = llSearchHistory.getContext().getResources().getDisplayMetrics().heightPixels;
if (height < r.bottom) { //⼩⽶8-Android9.0 刘海屏问题,可⻅区域⾼度会⼤于屏幕⾼度
r.bottom = height;
}
int diff = height - r.bottom; int diff = height - r.bottom;
if (diff != 0 && Math.abs(diff) != StatusBarUtils.getNavi_height()) { if (diff != 0 && Math.abs(diff) != StatusBarUtils.getNavi_height()) {
if (layoutParams.bottomMargin != diff) { if (layoutParams.bottomMargin != diff) {
layoutParams.setMargins(0, 0, 0, Math.abs(diff)); //华为可隐藏导航栏,在⼿动隐藏或显示导航栏 屏幕⾼度获取数值不会改变。
llSearchHistory.setLayoutParams(layoutParams); if (Math.abs(layoutParams.bottomMargin - Math.abs(diff)) != StatusBarUtils.getNavi_height()) {
//打开输入 layoutParams.setMargins(0, 0, 0, Math.abs(diff));
llSearchHistory.setLayoutParams(layoutParams);
}
//打开输⼊
if (llSearchHistory.getVisibility() != View.VISIBLE) if (llSearchHistory.getVisibility() != View.VISIBLE)
openOrCloseHistory(true); openOrCloseHistory(true);
} }
@ -262,7 +238,7 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
} else { } else {
layoutParams.setMargins(0, 0, 0, 0); layoutParams.setMargins(0, 0, 0, 0);
llSearchHistory.setLayoutParams(layoutParams); llSearchHistory.setLayoutParams(layoutParams);
//关闭输 //关闭输
if (llSearchHistory.getVisibility() == View.VISIBLE) if (llSearchHistory.getVisibility() == View.VISIBLE)
openOrCloseHistory(false); openOrCloseHistory(false);
} }
@ -270,24 +246,23 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
} }
} }
}); });
getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new
getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { ViewTreeObserver.OnGlobalLayoutListener() {
@Override @Override
public void onGlobalLayout() { public void onGlobalLayout() {
new Handler().postDelayed(new Runnable() { new Handler().postDelayed(new Runnable() {
@Override @Override
public void run() { public void run() {
openKeyBoard(); openKeyBoard();
} }
}, 100); }, 100);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
getWindow().getDecorView().getViewTreeObserver().removeOnGlobalLayoutListener(this); getWindow().getDecorView().getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else } else
getWindow().getDecorView().getViewTreeObserver().removeGlobalOnLayoutListener(this); getWindow().getDecorView().getViewTreeObserver().removeGlobalOnLayoutListener(this);
} }
}); });
} }
private void checkTvToSearch() { private void checkTvToSearch() {
if (llSearchHistory.getVisibility() == View.VISIBLE) { if (llSearchHistory.getVisibility() == View.VISIBLE) {
tvTosearch.setText("搜索"); tvTosearch.setText("搜索");
@ -297,7 +272,6 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
mPresenter.setInput(false); mPresenter.setInput(false);
} }
} }
private void openOrCloseHistory(Boolean open) { private void openOrCloseHistory(Boolean open) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (null != animHistory5) { if (null != animHistory5) {
@ -317,21 +291,16 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
edtContent.setCursorVisible(true); edtContent.setCursorVisible(true);
checkTvToSearch(); checkTvToSearch();
} }
@Override @Override
public void onAnimationEnd(Animator animation) { public void onAnimationEnd(Animator animation) {
if (rfRvSearchBooks.getVisibility() != View.VISIBLE) if (rfRvSearchBooks.getVisibility() != View.VISIBLE)
rfRvSearchBooks.setVisibility(View.VISIBLE); rfRvSearchBooks.setVisibility(View.VISIBLE);
} }
@Override @Override
public void onAnimationCancel(Animator animation) { public void onAnimationCancel(Animator animation) {
} }
@Override @Override
public void onAnimationRepeat(Animator animation) { public void onAnimationRepeat(Animator animation) {
} }
}); });
animHistory5.start(); animHistory5.start();
@ -345,24 +314,18 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
animHistory5.addListener(new Animator.AnimatorListener() { animHistory5.addListener(new Animator.AnimatorListener() {
@Override @Override
public void onAnimationStart(Animator animation) { public void onAnimationStart(Animator animation) {
} }
@Override @Override
public void onAnimationEnd(Animator animation) { public void onAnimationEnd(Animator animation) {
llSearchHistory.setVisibility(View.GONE); llSearchHistory.setVisibility(View.GONE);
edtContent.setCursorVisible(false); edtContent.setCursorVisible(false);
checkTvToSearch(); checkTvToSearch();
} }
@Override @Override
public void onAnimationCancel(Animator animation) { public void onAnimationCancel(Animator animation) {
} }
@Override @Override
public void onAnimationRepeat(Animator animation) { public void onAnimationRepeat(Animator animation) {
} }
}); });
animHistory5.start(); animHistory5.start();
@ -382,16 +345,13 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
edtContent.setCursorVisible(true); edtContent.setCursorVisible(true);
checkTvToSearch(); checkTvToSearch();
} }
@Override @Override
public void onAnimationEnd(Animation animation) { public void onAnimationEnd(Animation animation) {
if (rfRvSearchBooks.getVisibility() != View.VISIBLE) if (rfRvSearchBooks.getVisibility() != View.VISIBLE)
rfRvSearchBooks.setVisibility(View.VISIBLE); rfRvSearchBooks.setVisibility(View.VISIBLE);
} }
@Override @Override
public void onAnimationRepeat(Animation animation) { public void onAnimationRepeat(Animation animation) {
} }
}); });
llSearchHistory.startAnimation(animHistory); llSearchHistory.startAnimation(animHistory);
@ -403,41 +363,34 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
@Override @Override
public void onAnimationStart(Animation animation) { public void onAnimationStart(Animation animation) {
} }
@Override @Override
public void onAnimationEnd(Animation animation) { public void onAnimationEnd(Animation animation) {
llSearchHistory.setVisibility(View.GONE); llSearchHistory.setVisibility(View.GONE);
edtContent.setCursorVisible(false); edtContent.setCursorVisible(false);
checkTvToSearch(); checkTvToSearch();
} }
@Override @Override
public void onAnimationRepeat(Animation animation) { public void onAnimationRepeat(Animation animation) {
} }
}); });
llSearchHistory.startAnimation(animHistory); llSearchHistory.startAnimation(animHistory);
} }
} }
} }
private void closeKeyBoard() { private void closeKeyBoard() {
InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE); InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edtContent.getWindowToken(), 0); imm.hideSoftInputFromWindow(edtContent.getWindowToken(), 0);
} }
private void openKeyBoard() { private void openKeyBoard() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
edtContent.requestFocus(); edtContent.requestFocus();
imm.showSoftInput(edtContent, InputMethodManager.RESULT_UNCHANGED_SHOWN); imm.showSoftInput(edtContent, InputMethodManager.RESULT_UNCHANGED_SHOWN);
} }
@Override @Override
public void insertSearchHistorySuccess(SearchHistoryBean searchHistoryBean) { public void insertSearchHistorySuccess(SearchHistoryBean searchHistoryBean) {
//搜索历史插或者修改成功 //搜索历史插或者修改成功
mPresenter.querySearchHistory(); mPresenter.querySearchHistory();
} }
@Override @Override
public void querySearchHistorySuccess(List<SearchHistoryBean> datas) { public void querySearchHistorySuccess(List<SearchHistoryBean> datas) {
searchHistoryAdapter.replaceAll(datas); searchHistoryAdapter.replaceAll(datas);
@ -447,63 +400,54 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
tvSearchHistoryClean.setVisibility(View.INVISIBLE); tvSearchHistoryClean.setVisibility(View.INVISIBLE);
} }
} }
@Override @Override
public void refreshSearchBook(List<SearchBookBean> books) { public void refreshSearchBook(List<SearchBookBean> books) {
searchBookAdapter.replaceAll(books); searchBookAdapter.replaceAll(books);
} }
@Override @Override
public void refreshFinish(Boolean isAll) { public void refreshFinish(Boolean isAll) {
rfRvSearchBooks.finishRefresh(isAll, true); rfRvSearchBooks.finishRefresh(isAll, true);
} }
@Override @Override
public void loadMoreFinish(Boolean isAll) { public void loadMoreFinish(Boolean isAll) {
rfRvSearchBooks.finishLoadMore(isAll, true); rfRvSearchBooks.finishLoadMore(isAll, true);
} }
@Override @Override
public void searchBookError(Boolean isRefresh) { public void searchBookError(Boolean isRefresh) {
if (isRefresh) { if (isRefresh) {
rfRvSearchBooks.refreshError(); rfRvSearchBooks.refreshError();
} else { } else {
rfRvSearchBooks.loadMoreError(); rfRvSearchBooks.loadMoreError();
} }
} }
@Override @Override
public void loadMoreSearchBook(final List<SearchBookBean> books) { public void loadMoreSearchBook(final List<SearchBookBean> books) {
searchBookAdapter.addAll(books); searchBookAdapter.addAll(books);
} }
@Override @Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
explosionField.clear(); explosionField.clear();
} }
@Override @Override
public EditText getEdtContent() { public EditText getEdtContent() {
return edtContent; return edtContent;
} }
@Override @Override
public void addBookShelfFailed(int code) { public void addBookShelfFailed(int code) {
Toast.makeText(this, NetworkUtil.getErrorTip(code), Toast.LENGTH_SHORT).show(); Toast.makeText(this, NetworkUtil.getErrorTip(code), Toast.LENGTH_SHORT).show();
} }
@Override @Override
public SearchBookAdapter getSearchBookAdapter() { public SearchBookAdapter getSearchBookAdapter() {
return searchBookAdapter; return searchBookAdapter;
} }
@Override @Override
public void updateSearchItem(int index) { public void updateSearchItem(int index) {
if (index < searchBookAdapter.getItemcount()) { if (index < searchBookAdapter.getItemcount()) {
int startIndex = ((LinearLayoutManager) rfRvSearchBooks.getRecyclerView().getLayoutManager()).findFirstVisibleItemPosition(); int startIndex = ((LinearLayoutManager)
TextView tvAddShelf = (TextView) ((ViewGroup) rfRvSearchBooks.getRecyclerView()).getChildAt(index - startIndex).findViewById(R.id.tv_addshelf); rfRvSearchBooks.getRecyclerView().getLayoutManager()).findFirstVisibleItemPosition();
TextView tvAddShelf = (TextView) ((ViewGroup) rfRvSearchBooks.getRecyclerView()).getChildAt(index -
startIndex).findViewById(R.id.tv_addshelf);
if (tvAddShelf != null) { if (tvAddShelf != null) {
if (searchBookAdapter.getSearchBooks().get(index).getAdd()) { if (searchBookAdapter.getSearchBooks().get(index).getAdd()) {
tvAddShelf.setText("已添加"); tvAddShelf.setText("已添加");
@ -515,16 +459,16 @@ public class SearchActivity extends MBaseActivity<ISearchPresenter> implements I
} }
} }
} }
@Override @Override
public Boolean checkIsExist(SearchBookBean searchBookBean) { public Boolean checkIsExist(SearchBookBean searchBookBean) {
Boolean result = false; Boolean result = false;
for (int i = 0; i < searchBookAdapter.getItemcount(); i++) { for (int i = 0; i < searchBookAdapter.getItemcount(); i++) {
if (searchBookAdapter.getSearchBooks().get(i).getNoteUrl().equals(searchBookBean.getNoteUrl()) && searchBookAdapter.getSearchBooks().get(i).getTag().equals(searchBookBean.getTag())) { if (searchBookAdapter.getSearchBooks().get(i).getNoteUrl().equals(searchBookBean.getNoteUrl()) &&
searchBookAdapter.getSearchBooks().get(i).getTag().equals(searchBookBean.getTag())) {
result = true; result = true;
break; break;
} }
} }
return result; return result;
} }
} }

@ -13,12 +13,15 @@ import android.view.View;
import android.view.ViewTreeObserver; import android.view.ViewTreeObserver;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.Toast; import android.widget.Toast;
import com.monke.monkeybook.ReadBookControl; import com.monke.monkeybook.ReadBookControl;
import com.monke.monkeybook.utils.DensityUtil; import com.monke.monkeybook.utils.DensityUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class ContentSwitchView extends FrameLayout implements BookContentView.SetDataListener { public class ContentSwitchView extends FrameLayout implements BookContentView.SetDataListener {
private final int screenWidth = DensityUtil.getWindowWidth(getContext());
private final long animDuration = 300; private final long animDuration = 300;
public final static int NONE = -1; public final static int NONE = -1;
public final static int PREANDNEXT = 0; public final static int PREANDNEXT = 0;
@ -32,9 +35,10 @@ public class ContentSwitchView extends FrameLayout implements BookContentView.Se
private BookContentView durPageView; private BookContentView durPageView;
private List<BookContentView> viewContents; private List<BookContentView> viewContents;
public interface OnBookReadInitListener{ public interface OnBookReadInitListener {
public void success(); public void success();
} }
private OnBookReadInitListener bookReadInitListener; private OnBookReadInitListener bookReadInitListener;
public ContentSwitchView(Context context) { public ContentSwitchView(Context context) {
@ -74,11 +78,12 @@ public class ContentSwitchView extends FrameLayout implements BookContentView.Se
} }
public void bookReadInit(OnBookReadInitListener bookReadInitListener){ public void bookReadInit(OnBookReadInitListener bookReadInitListener) {
this.bookReadInitListener = bookReadInitListener; this.bookReadInitListener = bookReadInitListener;
durPageView.getTvContent().getViewTreeObserver().addOnGlobalLayoutListener(layoutInitListener); durPageView.getTvContent().getViewTreeObserver().addOnGlobalLayoutListener(layoutInitListener);
} }
public void startLoading(){
public void startLoading() {
int height = durPageView.getTvContent().getHeight(); int height = durPageView.getTvContent().getHeight();
if (height > 0) { if (height > 0) {
if (loadDataListener != null && durHeight != height) { if (loadDataListener != null && durHeight != height) {
@ -100,15 +105,26 @@ public class ContentSwitchView extends FrameLayout implements BookContentView.Se
public boolean onTouchEvent(MotionEvent event) { public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction(); int action = event.getAction();
if (!isMoving) { if (!isMoving) {
int durWidth = screenWidth > 1400 ? 10 : 0; //当分辨率过大时,添加横向滑动冗余值
switch (action) { switch (action) {
case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_DOWN:
startX = event.getX(); startX = event.getX();
break; break;
case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_MOVE:
if(viewContents.size() > 1){ if (viewContents.size() > 1) {
if (startX == -1) if (startX == -1)
startX = event.getX(); startX = event.getX();
//处理分辨率过大,移动冗余值,当横向滑动值超过冗余值则开始滑动
int durX = (int) (event.getX() - startX); int durX = (int) (event.getX() - startX);
if(durX>durWidth){
durX = durX - durWidth;
}else if(durX<-durWidth){
durX = durX + durWidth;
}else{
durX = 0;
}
if (durX > 0 && (state == PREANDNEXT || state == ONLYPRE)) { if (durX > 0 && (state == PREANDNEXT || state == ONLYPRE)) {
int tempX = durX - getWidth(); int tempX = durX - getWidth();
if (tempX < -getWidth()) if (tempX < -getWidth())
@ -127,12 +143,14 @@ public class ContentSwitchView extends FrameLayout implements BookContentView.Se
} }
} }
break; break;
case MotionEvent.ACTION_CANCEL: //小米8长按传送门会引导手势进入action_cancel
case MotionEvent.ACTION_UP: case MotionEvent.ACTION_UP:
if(startX == -1) if (startX == -1)
startX = event.getX(); startX = event.getX();
if (event.getX() - startX > 0) { if (event.getX() - startX > durWidth) {
if (state == PREANDNEXT || state == ONLYPRE) { if (state == PREANDNEXT || state == ONLYPRE) {
if (event.getX() - startX > scrollX) { //注意冗余值
if (event.getX() - startX + durWidth> scrollX) {
//向前翻页成功 //向前翻页成功
initMoveSuccessAnim(viewContents.get(0), 0); initMoveSuccessAnim(viewContents.get(0), 0);
} else { } else {
@ -142,10 +160,11 @@ public class ContentSwitchView extends FrameLayout implements BookContentView.Se
//没有上一页 //没有上一页
noPre(); noPre();
} }
} else if (event.getX() - startX < 0) { } else if (event.getX() - startX < -durWidth) {
if (state == PREANDNEXT || state == ONLYNEXT) { if (state == PREANDNEXT || state == ONLYNEXT) {
int tempIndex = (state == PREANDNEXT ? 1 : 0); int tempIndex = (state == PREANDNEXT ? 1 : 0);
if (startX - event.getX() > scrollX) { //注意冗余值
if (startX - event.getX() - durWidth > scrollX) {
//向后翻页成功 //向后翻页成功
initMoveSuccessAnim(viewContents.get(tempIndex), -getWidth()); initMoveSuccessAnim(viewContents.get(tempIndex), -getWidth());
} else { } else {
@ -238,7 +257,7 @@ public class ContentSwitchView extends FrameLayout implements BookContentView.Se
viewContents.remove(viewContents.size() - 1); viewContents.remove(viewContents.size() - 1);
} }
state = ONLYNEXT; state = ONLYNEXT;
if(durPageView.getDurChapterIndex()-1>=0 || durPageView.getDurPageIndex()-1>=0){ if (durPageView.getDurChapterIndex() - 1 >= 0 || durPageView.getDurPageIndex() - 1 >= 0) {
addPrePage(durPageView.getDurChapterIndex(), durPageView.getChapterAll(), durPageView.getDurPageIndex(), durPageView.getPageAll()); addPrePage(durPageView.getDurChapterIndex(), durPageView.getChapterAll(), durPageView.getDurPageIndex(), durPageView.getPageAll());
if (state == NONE) if (state == NONE)
state = ONLYPRE; state = ONLYPRE;
@ -254,7 +273,7 @@ public class ContentSwitchView extends FrameLayout implements BookContentView.Se
viewContents.remove(0); viewContents.remove(0);
} }
state = ONLYPRE; state = ONLYPRE;
if(durPageView.getDurChapterIndex()+1 <=durPageView.getChapterAll()-1 || durPageView.getDurPageIndex()+1 <= durPageView.getPageAll()-1){ if (durPageView.getDurChapterIndex() + 1 <= durPageView.getChapterAll() - 1 || durPageView.getDurPageIndex() + 1 <= durPageView.getPageAll() - 1) {
addNextPage(durPageView.getDurChapterIndex(), durPageView.getChapterAll(), durPageView.getDurPageIndex(), durPageView.getPageAll()); addNextPage(durPageView.getDurChapterIndex(), durPageView.getChapterAll(), durPageView.getDurPageIndex(), durPageView.getPageAll());
if (state == NONE) if (state == NONE)
state = ONLYNEXT; state = ONLYNEXT;
@ -431,7 +450,7 @@ public class ContentSwitchView extends FrameLayout implements BookContentView.Se
private ViewTreeObserver.OnGlobalLayoutListener layoutInitListener = new ViewTreeObserver.OnGlobalLayoutListener() { private ViewTreeObserver.OnGlobalLayoutListener layoutInitListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override @Override
public void onGlobalLayout() { public void onGlobalLayout() {
if(bookReadInitListener !=null){ if (bookReadInitListener != null) {
bookReadInitListener.success(); bookReadInitListener.success();
} }
durPageView.getTvContent().getViewTreeObserver().removeOnGlobalLayoutListener(layoutInitListener); durPageView.getTvContent().getViewTreeObserver().removeOnGlobalLayoutListener(layoutInitListener);
@ -456,25 +475,25 @@ public class ContentSwitchView extends FrameLayout implements BookContentView.Se
return durPageView.getTvContent().getPaint(); return durPageView.getTvContent().getPaint();
} }
public int getContentWidth(){ public int getContentWidth() {
return durPageView.getTvContent().getWidth(); return durPageView.getTvContent().getWidth();
} }
public void changeBg(){ public void changeBg() {
for(BookContentView item : viewContents){ for (BookContentView item : viewContents) {
item.setBg(readBookControl); item.setBg(readBookControl);
} }
} }
public void changeTextSize(){ public void changeTextSize() {
for(BookContentView item : viewContents){ for (BookContentView item : viewContents) {
item.setTextKind(readBookControl); item.setTextKind(readBookControl);
} }
loadDataListener.initData(durPageView.getLineCount(durHeight)); loadDataListener.initData(durPageView.getLineCount(durHeight));
} }
public boolean onKeyDown(int keyCode, KeyEvent event){ public boolean onKeyDown(int keyCode, KeyEvent event) {
if(readBookControl.getCanKeyTurn() && keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){ if (readBookControl.getCanKeyTurn() && keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
if (state == PREANDNEXT || state == ONLYNEXT) { if (state == PREANDNEXT || state == ONLYNEXT) {
int tempIndex = (state == PREANDNEXT ? 1 : 0); int tempIndex = (state == PREANDNEXT ? 1 : 0);
initMoveSuccessAnim(viewContents.get(tempIndex), -getWidth()); initMoveSuccessAnim(viewContents.get(tempIndex), -getWidth());
@ -482,7 +501,7 @@ public class ContentSwitchView extends FrameLayout implements BookContentView.Se
noNext(); noNext();
} }
return true; return true;
}else if(readBookControl.getCanKeyTurn() && keyCode == KeyEvent.KEYCODE_VOLUME_UP){ } else if (readBookControl.getCanKeyTurn() && keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
if (state == PREANDNEXT || state == ONLYPRE) { if (state == PREANDNEXT || state == ONLYPRE) {
initMoveSuccessAnim(viewContents.get(0), 0); initMoveSuccessAnim(viewContents.get(0), 0);
} else { } else {
@ -493,10 +512,10 @@ public class ContentSwitchView extends FrameLayout implements BookContentView.Se
return false; return false;
} }
public boolean onKeyUp(int keyCode, KeyEvent event){ public boolean onKeyUp(int keyCode, KeyEvent event) {
if(readBookControl.getCanKeyTurn() && keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){ if (readBookControl.getCanKeyTurn() && keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
return true; return true;
}else if(readBookControl.getCanKeyTurn() && keyCode == KeyEvent.KEYCODE_VOLUME_UP){ } else if (readBookControl.getCanKeyTurn() && keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
return true; return true;
} }
return false; return false;
@ -510,8 +529,8 @@ public class ContentSwitchView extends FrameLayout implements BookContentView.Se
this.bookReadInitListener = bookReadInitListener; this.bookReadInitListener = bookReadInitListener;
} }
public void loadError(){ public void loadError() {
if(durPageView != null){ if (durPageView != null) {
durPageView.loadError(); durPageView.loadError();
} }
} }

@ -3,9 +3,6 @@
<string name="umeng_key">5954b3f999f0c76d1b001600</string> <string name="umeng_key">5954b3f999f0c76d1b001600</string>
<string name="baidu_app_id">9942412</string>
<string name="baidu_app_key">5cZ5UKGW2tqEXK0dUiv4ngLEQ7I4Bf6s</string>
<string name="net_error_10001">没有网络</string> <string name="net_error_10001">没有网络</string>
<string name="net_error_10002">网络连接超时</string> <string name="net_error_10002">网络连接超时</string>
<string name="net_error_10003">数据解析失败</string> <string name="net_error_10003">数据解析失败</string>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>

@ -1,12 +1,12 @@
apply plugin: 'com.android.library' apply plugin: 'com.android.library'
android { android {
compileSdkVersion 25 compileSdkVersion 28
buildToolsVersion '25.0.0' buildToolsVersion '28.0.3'
defaultConfig { defaultConfig {
minSdkVersion 14 minSdkVersion 14
targetSdkVersion 25 targetSdkVersion 28
versionCode 2 versionCode 2
versionName "1.1.0" versionName "1.1.0"
} }
@ -19,28 +19,28 @@ android {
} }
dependencies { dependencies {
compile fileTree(dir: 'libs', include: ['*.jar']) api fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12' testImplementation 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:25.1.0' api 'com.android.support:appcompat-v7:28.0.0'
//RxAndroid //RxAndroid
compile 'io.reactivex.rxjava2:rxandroid:2.0.1' api 'io.reactivex.rxjava2:rxandroid:2.1.0'
compile 'io.reactivex.rxjava2:rxjava:2.0.1' api 'io.reactivex.rxjava2:rxjava:2.2.5'
//Rxlifecycle //Rxlifecycle
compile 'com.trello.rxlifecycle2:rxlifecycle:2.0.1' api 'com.trello.rxlifecycle2:rxlifecycle:2.0.1'
compile 'com.trello.rxlifecycle2:rxlifecycle-android:2.0.1' // If you want to bind to Android-specific lifecycles api 'com.trello.rxlifecycle2:rxlifecycle-android:2.0.1' // If you want to bind to Android-specific lifecycles
compile 'com.trello.rxlifecycle2:rxlifecycle-components:2.0.1' // If you want pre-written Activities and Fragments you can subclass as providers api 'com.trello.rxlifecycle2:rxlifecycle-components:2.0.1' // If you want pre-written Activities and Fragments you can subclass as providers
compile 'com.trello.rxlifecycle2:rxlifecycle-navi:2.0.1' // If you want to use Navi for providers api 'com.trello.rxlifecycle2:rxlifecycle-navi:2.0.1' // If you want to use Navi for providers
compile 'com.trello.rxlifecycle2:rxlifecycle-kotlin:2.0.1' // If you want to use Kotlin syntax api 'com.trello.rxlifecycle2:rxlifecycle-kotlin:2.0.1' // If you want to use Kotlin syntax
//Retrofit //Retrofit
compile 'com.squareup.retrofit2:retrofit:2.2.0' api 'com.squareup.retrofit2:retrofit:2.2.0'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0' api 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
compile 'com.squareup.retrofit2:converter-scalars:2.2.0' api 'com.squareup.retrofit2:converter-scalars:2.2.0'
//RxBus //RxBus
compile ('com.hwangjr.rxbus:rxbus:2.0.0-beta') { api ('com.hwangjr.rxbus:rxbus:2.0.0-beta') {
exclude group: 'com.jakewharton.timber', module: 'timber' exclude group: 'com.jakewharton.timber', module: 'timber'
} }
} }

@ -65,6 +65,11 @@ public abstract class BaseActivity<T extends IPresenter> extends RxAppCompatActi
} }
} }
@Override
protected void onPause() {
super.onPause();
}
/** /**
* PV * PV
*/ */

@ -3,9 +3,14 @@ buildscript {
repositories { repositories {
jcenter() jcenter()
mavenCentral() mavenCentral()
maven {
url 'https://maven.google.com/'
name 'Google'
}
google()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:2.3.3' classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0' classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
} }
} }
@ -13,6 +18,10 @@ buildscript {
allprojects { allprojects {
repositories { repositories {
jcenter() jcenter()
maven {
url 'https://maven.google.com/'
name 'Google'
}
} }
} }

@ -1,6 +1,6 @@
#Fri May 26 22:05:25 CST 2017 #Wed Jan 02 23:04:20 CST 2019
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save