diff --git a/app/build.gradle b/app/build.gradle
index 53f5398..70aa3a6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -116,7 +116,7 @@ android {
greendao{
- schemaVersion 3
+ schemaVersion 4
daoPackage 'com.yzx.webebook.model.gen'
targetGenDir 'src/main/java'
}
@@ -168,4 +168,6 @@ dependencies {
//RxJava
implementation deps.reactivex.rxandroid
implementation deps.reactivex.rxjava2
+
+ implementation 'es.voghdev.pdfviewpager:library:1.1.2'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9d4e6bb..16cba6b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,8 +12,8 @@
-
-
+
+
-
+
+
(),ReadView {
Config.APP_NAME = "家校互通(本地)"
Config.BASE_URL = mBaseUrl
Config.M_URL = mUrl
-// User.clearUserInfo()
+ if (BuildConfig.BUILD_TYPE != "debug") {
+ User.clearUserInfo()
+ }
startActivity()
}
btn4.setOnClickListener {
@@ -88,9 +90,9 @@ class MainActivity : BaseActivity(),ReadView {
}
btn7.setOnClickListener {
+ startActivity()
-
- mPresenter?.loadCategory("17")
+// mPresenter?.loadCategory("17")
}
/*OkGo.post("https://fileupload.oa.qbjjyyun.net/edufile/fileUpload")
diff --git a/app/src/main/java/com/yzx/webebook/activity/HomeActivity.kt b/app/src/main/java/com/yzx/webebook/activity/HomeActivity.kt
index 1dba326..47b2a7d 100644
--- a/app/src/main/java/com/yzx/webebook/activity/HomeActivity.kt
+++ b/app/src/main/java/com/yzx/webebook/activity/HomeActivity.kt
@@ -15,10 +15,8 @@ import androidx.recyclerview.widget.GridLayoutManager
import com.allenliu.versionchecklib.v2.AllenVersionChecker
import com.allenliu.versionchecklib.v2.builder.UIData
import com.allenliu.versionchecklib.v2.callback.CustomDownloadingDialogListener
-import com.blankj.utilcode.util.AppUtils
-import com.blankj.utilcode.util.NetworkUtils
-import com.blankj.utilcode.util.SPUtils
-import com.blankj.utilcode.util.StringUtils
+import com.blankj.utilcode.constant.PermissionConstants
+import com.blankj.utilcode.util.*
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.lzy.okgo.OkGo
@@ -107,11 +105,29 @@ class HomeActivity : BaseActivity>() {
//请求权限
- ActivityCompat.requestPermissions(
- this,
- PERMISSIONS,
- PERMISSIONS_REQUEST_STORAGE
- )
+// ActivityCompat.requestPermissions(
+// this,
+// PERMISSIONS,
+// PERMISSIONS_REQUEST_STORAGE
+// )
+
+ PermissionUtils.permissionGroup(PermissionConstants.STORAGE)
+ .rationale { activity, shouldRequest ->
+
+ }.callback(object :PermissionUtils.FullCallback{
+ override fun onGranted(granted: MutableList) {
+ LogUtils.d("权限通过",granted)
+ }
+
+ override fun onDenied(
+ deniedForever: MutableList,
+ denied: MutableList
+ ) {
+ LogUtils.d("权限拒绝",denied)
+ }
+
+ }).theme { activity -> ScreenUtils.setFullScreen(activity) }
+ .request()
}
private val PERMISSIONS_REQUEST_STORAGE = 1
diff --git a/app/src/main/java/com/yzx/webebook/activity/PDFViewActivity.kt b/app/src/main/java/com/yzx/webebook/activity/PDFViewActivity.kt
new file mode 100644
index 0000000..17112b8
--- /dev/null
+++ b/app/src/main/java/com/yzx/webebook/activity/PDFViewActivity.kt
@@ -0,0 +1,162 @@
+package com.yzx.webebook.activity
+
+import android.content.Context
+import android.os.PowerManager
+import android.os.PowerManager.WakeLock
+import androidx.viewpager.widget.ViewPager
+import com.blankj.utilcode.util.NumberUtils
+import com.yzx.webebook.R
+import com.yzx.webebook.activity.base.BaseActivity
+import com.yzx.webebook.model.bean.BookRecordBean
+import com.yzx.webebook.model.bean.CollBookBean
+import com.yzx.webebook.model.local.BookRepository
+import com.yzx.webebook.presenter.ReadPresenter
+import com.yzx.webebook.presenter.ReadView
+import com.yzx.webebook.widget.YzxPDFViewPager
+import kotlinx.android.synthetic.main.activity_pdf_view.*
+
+/**
+ * pdf 预览页面
+ */
+class PDFViewActivity : BaseActivity(), ReadView {
+
+ private var mBookRecord: BookRecordBean? = null
+ private var mCollBook: CollBookBean? = null
+ private var mRealBookId: String = ""
+ private var mReadTaskId: String = ""
+ private var mBookId: String = ""
+ var currPage = 0
+ var total = 0
+ var oldPosition = 0
+
+ //控制屏幕常亮
+ private var mWakeLock: WakeLock? = null
+
+ override val inflateId: Int
+ get() = R.layout.activity_pdf_view
+
+ override fun initView() {
+ mBookId = intent.getStringExtra("book_id") ?: ""
+ mReadTaskId = intent.getStringExtra("read_task_id") ?: ""
+ mRealBookId = intent.getStringExtra("real_book_id") ?: ""
+
+ mCollBook = BookRepository.getInstance().getCollBook(mBookId)
+
+ mCollBook.apply {
+ loadPdf()
+ }
+
+ }
+
+ private fun loadPdf() {
+ val pdf = YzxPDFViewPager(this, mCollBook?.cover ?: "")
+ pdfView.addView(pdf)
+
+ total = pdf.adapter?.count ?: 0
+ btnLeft.setOnClickListener {
+ if (currPage > 0) {
+ pdf.currentItem = --currPage
+ }
+ }
+
+ btnRight.setOnClickListener {
+ if (currPage < total - 1) {
+ pdf.currentItem = ++currPage
+ }
+ }
+ prepareBook()
+
+ pdf.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ override fun onPageScrollStateChanged(state: Int) {
+
+ }
+
+ override fun onPageScrolled(
+ position: Int,
+ positionOffset: Float,
+ positionOffsetPixels: Int
+ ) {
+
+ }
+
+ override fun onPageSelected(position: Int) {
+ currPageTv.text = "${position + 1}"
+ percentTv.text = "${getPercent(position.toFloat(), total.toFloat())}%"
+ mBookRecord?.pagePos = position
+ }
+
+ })
+ val pos = mBookRecord?.pagePos?:0;
+ pdf.currentItem =pos
+ currPage = pos
+ }
+
+ /**
+ * 初始化书籍
+ */
+ private fun prepareBook() {
+ mBookRecord = BookRepository.getInstance()
+ .getBookRecord(mCollBook!!._id)
+ if (mBookRecord == null) {
+ mBookRecord = BookRecordBean()
+ mBookRecord?.bookId = mBookId
+ totalPageTv.text = "$total"
+ currPageTv.text = "${currPage + 1}"
+ percentTv.text = "${getPercent(1f, total.toFloat())}%"
+ oldPosition = 0
+ } else {
+ oldPosition = mBookRecord!!.pagePos
+ totalPageTv.text = "$total"
+ currPageTv.text = "${mBookRecord!!.pagePos + 1}"
+ percentTv.text =
+ "${getPercent((mBookRecord!!.pagePos + 1).toFloat(), total.toFloat())}%"
+ }
+ }
+
+ override fun initData() {
+ //初始化屏幕常亮类
+
+ //初始化屏幕常亮类
+ val pm =
+ getSystemService(Context.POWER_SERVICE) as PowerManager
+ mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "ireader:keep bright")
+
+ }
+
+ private fun getPercent(curr: Float, total: Float): String {
+ val percent = NumberUtils.format(curr * 100f / total, 2)
+ return "$percent"
+ }
+
+ override fun initPresenter(): ReadPresenter = ReadPresenter(this)
+ override fun onResume() {
+ super.onResume()
+ mWakeLock?.acquire()
+ }
+ override fun onPause() {
+ super.onPause()
+ mWakeLock?.release()
+ //存储到数据库
+ if (mBookRecord != null) {
+ BookRepository.getInstance()
+ .saveBookRecord(mBookRecord)
+ if (mBookRecord!!.pagePos > oldPosition) {
+ mPresenter?.updateReadProgress(
+ mRealBookId, mReadTaskId, getPercent(
+ (mBookRecord!!.pagePos + 1).toFloat(),
+ total.toFloat()
+ )
+ )
+ }
+ }
+ }
+
+ override fun finishChapter() {
+ }
+
+ override fun errorChapter() {
+ }
+
+ override fun showCategory(localId: String?) {
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yzx/webebook/activity/ReadActivity.java b/app/src/main/java/com/yzx/webebook/activity/ReadActivity.java
index 9accc49..bc481cb 100644
--- a/app/src/main/java/com/yzx/webebook/activity/ReadActivity.java
+++ b/app/src/main/java/com/yzx/webebook/activity/ReadActivity.java
@@ -120,6 +120,9 @@ public class ReadActivity extends BaseActivity implements ReadVie
private boolean isRegistered = false;
private String mBookId;
+ private String mRealBookId;
+ private String mReadTaskId;
+ private float lastProgress = 0f;
private Handler mHandler = new Handler() {
@@ -216,6 +219,8 @@ public class ReadActivity extends BaseActivity implements ReadVie
@Override
public void initData() {
String id = getIntent().getStringExtra("book_id");
+ mReadTaskId = getIntent().getStringExtra("read_task_id");
+ mRealBookId = getIntent().getStringExtra("real_book_id");
loadBookData(id);
}
@@ -280,7 +285,7 @@ public class ReadActivity extends BaseActivity implements ReadVie
}
private void saveBookInfo() {
- if(mCollBook!=null){
+ if (mCollBook != null) {
mCollBook.setLastRead(StringUtils.
dateConvert(System.currentTimeMillis(), Constant.FORMAT_BOOK_DATE));
@@ -331,7 +336,15 @@ public class ReadActivity extends BaseActivity implements ReadVie
@Override
public void onPageChange(int pos) {
mSbChapterProgress.post(
- () -> mSbChapterProgress.setProgress(pos)
+ () -> {
+ mSbChapterProgress.setProgress(pos);
+ int max = mSbChapterProgress.getMax() + 1;
+ float progress = (pos + 1) * 1.0f / max;
+ if (progress > 0 && progress > lastProgress) {
+ lastProgress = progress;
+
+ }
+ }
);
}
}
@@ -653,6 +666,9 @@ public class ReadActivity extends BaseActivity implements ReadVie
saveBookInfo();
mPageLoader.saveRecord();
}
+ if(getMPresenter()!=null && mPageLoader!=null){
+ getMPresenter().updateReadProgress(mRealBookId, mReadTaskId, String.valueOf(mPageLoader.getPercent()));
+ }
}
@Override
diff --git a/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt b/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt
index ea70c97..8045fba 100644
--- a/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt
+++ b/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt
@@ -440,7 +440,7 @@ class YzxJavascriptInterface(var ctx: Activity) {
* 保存用户信息
*/
@JavascriptInterface
- fun saveUserInfo(json:String){
+ fun saveUserInfo(json: String) {
val resultType = object : TypeToken() {}.type
val gson = Gson()
val user = gson.fromJson(json, resultType)
@@ -448,17 +448,17 @@ class YzxJavascriptInterface(var ctx: Activity) {
}
@JavascriptInterface
- fun saveUnitCount(count:Int){
+ fun saveUnitCount(count: Int) {
User.saveUnitCount(count)
}
@JavascriptInterface
- fun toHome(){
+ fun toHome() {
ctx.startActivity()
}
@JavascriptInterface
- fun logout(){
+ fun logout() {
val sp = SPUtils.getInstance()
sp.remove("user_name")
sp.remove("user_id")
@@ -478,8 +478,8 @@ class YzxJavascriptInterface(var ctx: Activity) {
}
@JavascriptInterface
- fun readPage(bookTaskId:String){
- val presenter = ReadPresenter(object :ReadView{
+ fun readPage(bookTaskId: String) {
+ val presenter = ReadPresenter(object : ReadView {
override fun finishChapter() {
}
@@ -490,9 +490,43 @@ class YzxJavascriptInterface(var ctx: Activity) {
override fun showCategory(localId: String?) {
val collBook = BookRepository.getInstance().getCollBook(localId)
- if(collBook.cover.endsWith(".txt")){
+ if (collBook.cover.endsWith(".txt")) {
ctx.startActivity("book_id" to localId)
- }else{
+ } else {
+ ToastUtils.showLong("暂不支持该格式预览!")
+ }
+ }
+
+ })
+ presenter.loadCategory(bookTaskId)
+ }
+
+ @JavascriptInterface
+ fun readPage(bookTaskId: String, readTaskId: String) {
+ val presenter = ReadPresenter(object : ReadView {
+ override fun finishChapter() {
+
+ }
+
+ override fun errorChapter() {
+
+ }
+
+ override fun showCategory(localId: String?) {
+ val collBook = BookRepository.getInstance().getCollBook(localId)
+ if (collBook.cover.endsWith(".txt")) {
+ ctx.startActivity(
+ "book_id" to localId,
+ "read_task_id" to readTaskId,
+ "real_book_id" to bookTaskId
+ )
+ } else if (collBook.cover.endsWith(".pdf")) {
+ ctx.startActivity(
+ "book_id" to localId,
+ "read_task_id" to readTaskId,
+ "real_book_id" to bookTaskId
+ )
+ } else {
ToastUtils.showLong("暂不支持该格式预览!")
}
}
diff --git a/app/src/main/java/com/yzx/webebook/model/bean/BookCount.java b/app/src/main/java/com/yzx/webebook/model/bean/BookCount.java
new file mode 100644
index 0000000..96de437
--- /dev/null
+++ b/app/src/main/java/com/yzx/webebook/model/bean/BookCount.java
@@ -0,0 +1,38 @@
+package com.yzx.webebook.model.bean;
+
+import org.greenrobot.greendao.annotation.Entity;
+import org.greenrobot.greendao.annotation.Id;
+import org.greenrobot.greendao.annotation.Generated;
+
+@Entity
+public class BookCount {
+ @Id
+ private String _id; // 本地书籍中,path 的 md5 值作为本地书籍的 id
+ private int total;
+
+ @Generated(hash = 433479827)
+ public BookCount(String _id, int total) {
+ this._id = _id;
+ this.total = total;
+ }
+
+ @Generated(hash = 2056164259)
+ public BookCount() {
+ }
+
+ public int getTotal() {
+ return total;
+ }
+
+ public String get_id() {
+ return _id;
+ }
+
+ public void set_id(String _id) {
+ this._id = _id;
+ }
+
+ public void setTotal(int total) {
+ this.total = total;
+ }
+}
diff --git a/app/src/main/java/com/yzx/webebook/model/bean/ChapterPageCount.java b/app/src/main/java/com/yzx/webebook/model/bean/ChapterPageCount.java
new file mode 100644
index 0000000..f5b48c3
--- /dev/null
+++ b/app/src/main/java/com/yzx/webebook/model/bean/ChapterPageCount.java
@@ -0,0 +1,52 @@
+package com.yzx.webebook.model.bean;
+
+import org.greenrobot.greendao.annotation.Entity;
+import org.greenrobot.greendao.annotation.Id;
+import org.greenrobot.greendao.annotation.Generated;
+import org.greenrobot.greendao.annotation.Index;
+
+@Entity
+public class ChapterPageCount {
+ @Id
+ private String _id; // 本地书籍中,path 的 md5 值作为本地书籍的 id
+ private int total;
+ @Index
+ private String book_id;
+
+ @Generated(hash = 774780221)
+ public ChapterPageCount(String _id, int total, String book_id) {
+ this._id = _id;
+ this.total = total;
+ this.book_id = book_id;
+ }
+
+ @Generated(hash = 876465118)
+ public ChapterPageCount() {
+ }
+
+ public void setTotal(int total) {
+ this.total = total;
+ }
+
+ public void set_id(String _id) {
+ this._id = _id;
+ }
+
+ public void setBook_id(String book_id) {
+ this.book_id = book_id;
+ }
+
+ public int getTotal() {
+ return total;
+ }
+
+ public String get_id() {
+ return _id;
+ }
+
+ public String getBook_id() {
+ return book_id;
+ }
+
+
+}
diff --git a/app/src/main/java/com/yzx/webebook/model/local/LocalRepository.java b/app/src/main/java/com/yzx/webebook/model/local/LocalRepository.java
index 9c196be..a9c5ea7 100644
--- a/app/src/main/java/com/yzx/webebook/model/local/LocalRepository.java
+++ b/app/src/main/java/com/yzx/webebook/model/local/LocalRepository.java
@@ -3,7 +3,11 @@ package com.yzx.webebook.model.local;
import com.google.gson.Gson;
import com.yzx.webebook.model.bean.AuthorBean;
+import com.yzx.webebook.model.bean.BookCount;
+import com.yzx.webebook.model.bean.ChapterPageCount;
import com.yzx.webebook.model.bean.DownloadTaskBean;
+import com.yzx.webebook.model.gen.BookCountDao;
+import com.yzx.webebook.model.gen.ChapterPageCountDao;
import com.yzx.webebook.model.gen.DaoSession;
import org.greenrobot.greendao.Property;
@@ -74,4 +78,39 @@ public class LocalRepository implements SaveDbHelper,GetDbHelper,DeleteDbHelper{
public void saveDownloadTask(DownloadTaskBean bean) {
}
+
+ @Override
+ public void saveBookCount(BookCount bookCount) {
+ mSession.getBookCountDao().insertOrReplaceInTx(bookCount);
+ }
+
+ @Override
+ public int getBookCount(String id) {
+
+ BookCount list = mSession.getBookCountDao()
+ .queryBuilder()
+ .where(BookCountDao.Properties._id.eq(id))
+ .unique();
+ if(list!=null){
+ return list.getTotal();
+ }
+ return 0;
+ }
+
+ @Override
+ public void saveChapterCount(List list) {
+ mSession.getChapterPageCountDao().insertOrReplaceInTx(list);
+ }
+
+ @Override
+ public List getChapterCount(String book_id) {
+ List list = mSession.getChapterPageCountDao()
+ .queryBuilder()
+ .where(ChapterPageCountDao.Properties.Book_id.eq(book_id))
+ .list();
+ if(list!=null && list.size()>0){
+ return list;
+ }
+ return new ArrayList();
+ }
}
diff --git a/app/src/main/java/com/yzx/webebook/model/local/SaveDbHelper.java b/app/src/main/java/com/yzx/webebook/model/local/SaveDbHelper.java
index 67772c6..71f039b 100644
--- a/app/src/main/java/com/yzx/webebook/model/local/SaveDbHelper.java
+++ b/app/src/main/java/com/yzx/webebook/model/local/SaveDbHelper.java
@@ -3,6 +3,8 @@ package com.yzx.webebook.model.local;
import com.yzx.webebook.model.bean.AuthorBean;
+import com.yzx.webebook.model.bean.BookCount;
+import com.yzx.webebook.model.bean.ChapterPageCount;
import com.yzx.webebook.model.bean.DownloadTaskBean;
import java.util.List;
@@ -15,4 +17,12 @@ public interface SaveDbHelper {
void saveAuthors(List beans);
/*************DownloadTask*********************/
void saveDownloadTask(DownloadTaskBean bean);
+
+ void saveBookCount(BookCount bookCount);
+
+ int getBookCount(String id);
+
+ void saveChapterCount(List list);
+
+ List getChapterCount(String book_id);
}
diff --git a/app/src/main/java/com/yzx/webebook/presenter/ReadPresenter.java b/app/src/main/java/com/yzx/webebook/presenter/ReadPresenter.java
index e36d798..5ff7a17 100644
--- a/app/src/main/java/com/yzx/webebook/presenter/ReadPresenter.java
+++ b/app/src/main/java/com/yzx/webebook/presenter/ReadPresenter.java
@@ -60,7 +60,7 @@ public class ReadPresenter extends BasePresenter {
Gson gson = new Gson();
BaseBean bean = gson.fromJson(response.body(), new TypeToken>() {
}.getType());
- if ("txt".equals(bean.getData().getFile_type())) {
+ if ("txt".equals(bean.getData().getFile_type()) || "pdf".equals(bean.getData().getFile_type().toLowerCase())) {
downloadBook(bean.getData(), bookTaskId);
} else {
Book book = bean.getData();
@@ -142,4 +142,30 @@ public class ReadPresenter extends BasePresenter {
public void loadChapter(String bookId, List bookChapterList) {
}
+
+ public void updateReadProgress(String bookId,String readTaskId,String progress){
+ User user = User.Companion.getUser();
+ String url = Config.INSTANCE.getBASE_URL() + "/parent/readTask/updateReadProgress";
+ HttpHeaders headers = new HttpHeaders();
+ headers.put("phone", user.getPhone());
+ headers.put("token", user.getToken());
+ OkGo.post(url)
+ .tag(this)
+ .params("id", bookId)
+ .params("read_task_id", readTaskId)
+ .params("read_progress", progress)
+ .headers(headers)
+ .execute(new StringCallback() {
+
+ @Override
+ public void onSuccess(Response response) {
+
+ }
+
+ @Override
+ public void onError(Response response) {
+ super.onError(response);
+ }
+ });
+ }
}
diff --git a/app/src/main/java/com/yzx/webebook/widget/YzxPDFViewPager.kt b/app/src/main/java/com/yzx/webebook/widget/YzxPDFViewPager.kt
new file mode 100644
index 0000000..d3eab06
--- /dev/null
+++ b/app/src/main/java/com/yzx/webebook/widget/YzxPDFViewPager.kt
@@ -0,0 +1,26 @@
+package com.yzx.webebook.widget
+
+import android.content.Context
+import android.view.MotionEvent
+import es.voghdev.pdfviewpager.library.PDFViewPager
+
+class YzxPDFViewPager(context:Context,path:String):PDFViewPager(context,path){
+
+
+ override fun setCurrentItem(item: Int, smoothScroll: Boolean) {
+ super.setCurrentItem(item, false)
+ }
+
+ override fun setCurrentItem(item: Int) {
+ super.setCurrentItem(item,false)
+ }
+
+ override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean {
+ return false
+ }
+
+ override fun onTouchEvent(ev: MotionEvent?): Boolean {
+ return false
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yzx/webebook/widget/page/LocalPageLoader.java b/app/src/main/java/com/yzx/webebook/widget/page/LocalPageLoader.java
index b8fb93c..541038e 100644
--- a/app/src/main/java/com/yzx/webebook/widget/page/LocalPageLoader.java
+++ b/app/src/main/java/com/yzx/webebook/widget/page/LocalPageLoader.java
@@ -41,7 +41,7 @@ import io.reactivex.disposables.Disposable;
public class LocalPageLoader extends PageLoader {
private static final String TAG = "LocalPageLoader";
//默认从文件中获取数据的长度
- private final static int BUFFER_SIZE = 10 * 1024;
+ private final static int BUFFER_SIZE = 50 * 1024;
//没有标题的时候,每个章节的最大长度
private final static int MAX_LENGTH_WITH_NO_CHAPTER = 10 * 1024;
diff --git a/app/src/main/java/com/yzx/webebook/widget/page/PageLoader.java b/app/src/main/java/com/yzx/webebook/widget/page/PageLoader.java
index af6683c..d65a3aa 100644
--- a/app/src/main/java/com/yzx/webebook/widget/page/PageLoader.java
+++ b/app/src/main/java/com/yzx/webebook/widget/page/PageLoader.java
@@ -9,16 +9,22 @@ import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Typeface;
import android.text.TextPaint;
+import android.util.Log;
import androidx.core.content.ContextCompat;
+import com.blankj.utilcode.util.NumberUtils;
+import com.yzx.webebook.model.bean.BookCount;
import com.yzx.webebook.model.bean.BookRecordBean;
+import com.yzx.webebook.model.bean.ChapterPageCount;
import com.yzx.webebook.model.bean.CollBookBean;
import com.yzx.webebook.model.local.BookRepository;
+import com.yzx.webebook.model.local.LocalRepository;
import com.yzx.webebook.model.local.ReadSettingManager;
import com.yzx.webebook.utils.Constant;
import com.yzx.webebook.utils.IOUtils;
+import com.yzx.webebook.utils.MD5Utils;
import com.yzx.webebook.utils.RxUtils;
import com.yzx.webebook.utils.ScreenUtils;
import com.yzx.webebook.utils.StringUtils;
@@ -391,6 +397,8 @@ public abstract class PageLoader {
// 重新获取指定页面
mCurPage = mCurPageList.get(mCurPage.position);
+
+// getTotalPage(true);
}
mPageView.drawCurPage(false);
@@ -724,6 +732,44 @@ public abstract class PageLoader {
mPageView.invalidate();
}
+ private int getTotalPage() {
+ return getTotalPage(false);
+ }
+
+ private int getTotalPage(boolean update) {
+// int total = LocalRepository.getInstance().getBookCount(mCollBook.get_id());
+// if (total > 0 && !update) {
+// return total;
+// }
+
+ int size = 0;
+ List chapterPageCountsList = new ArrayList<>();
+ for (TxtChapter txtChapter : mChapterList) {
+ int index = mChapterList.indexOf(txtChapter);
+
+ try {
+ List list = loadPageList(index);
+ size += list.size();
+ chapterPageCountsList.add(new ChapterPageCount(MD5Utils.strToMd5By16(txtChapter.title), list.size(), mCollBook.get_id()));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+// LocalRepository.getInstance().saveChapterCount(chapterPageCountsList);
+// LocalRepository.getInstance().saveBookCount(new BookCount(mCollBook.get_id(), size));
+ return size;
+ }
+
+ public String getPercent(){
+ float currPercent = (mCurPage.position + 1.0f) / mCurPageList.size();
+ float step = 1.0f / mChapterList.size();
+ float currChapPercent = 1.0f * mCurChapterPos * step;
+// String percent = (mCurPage.position + 1) + "/" + mCurPageList.size();
+ String percent = NumberUtils.format((currChapPercent + (currPercent * step))*100f, 2);
+
+ return percent;
+ }
+
private void drawBackground(Bitmap bitmap, boolean isUpdate) {
Canvas canvas = new Canvas(bitmap);
int tipMarginHeight = ScreenUtils.dpToPx(3);
@@ -750,8 +796,7 @@ public abstract class PageLoader {
float y = mDisplayHeight - mTipPaint.getFontMetrics().bottom - tipMarginHeight;
// 只有finish的时候采用页码
if (mStatus == STATUS_FINISH) {
- String percent = (mCurPage.position + 1) + "/" + mCurPageList.size();
- canvas.drawText(percent, mMarginWidth, y, mTipPaint);
+ canvas.drawText(getPercent() + "%", mMarginWidth, y, mTipPaint);
}
}
} else {
diff --git a/app/src/main/res/layout/activity_pdf_view.xml b/app/src/main/res/layout/activity_pdf_view.xml
new file mode 100644
index 0000000..2bfe1b3
--- /dev/null
+++ b/app/src/main/res/layout/activity_pdf_view.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_read.xml b/app/src/main/res/layout/activity_read.xml
index e8c3675..281c9ed 100644
--- a/app/src/main/res/layout/activity_read.xml
+++ b/app/src/main/res/layout/activity_read.xml
@@ -35,7 +35,7 @@
android:paddingRight="12dp"
android:paddingTop="8dp"
android:text="1/12"
- android:textColor="@color/white"
+ android:textColor="@color/black"
android:visibility="gone" />
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 2cf9c7f..72f7b78 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -129,4 +129,13 @@
+
+