diff --git a/app/build.gradle b/app/build.gradle index fbb58b7..53f5398 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -74,6 +74,8 @@ android { shrinkResources false buildConfigField "String", "BASE_URL", '"http://192.168.69.99:9009"' buildConfigField "String", "M_URL", '"http://192.168.69.112:8098"' +// buildConfigField "String", "BASE_URL", '"https://oa.live.educlouddata.com"' +// buildConfigField "String", "M_URL", '"https://m.live.educlouddata.com/"' buildConfigField "String", "APP_NAME", '"家校互通(开发)"' } diff --git a/app/src/main/java/com/yzx/webebook/App.kt b/app/src/main/java/com/yzx/webebook/App.kt index 9359ffa..9d6aad8 100644 --- a/app/src/main/java/com/yzx/webebook/App.kt +++ b/app/src/main/java/com/yzx/webebook/App.kt @@ -5,9 +5,11 @@ import android.content.Context import android.util.Log import com.blankj.utilcode.util.Utils import com.lzy.okgo.OkGo +import com.lzy.okgo.model.HttpHeaders import com.umeng.analytics.MobclickAgent import com.umeng.commonsdk.UMConfigure import com.yzx.webebook.adapter.ImageAdapter +import com.yzx.webebook.model.User import com.yzx.webebook.modules.ActivityWXModule import org.apache.weex.InitConfig import org.apache.weex.WXEnvironment @@ -44,7 +46,14 @@ class App : Application() { Log.i("welog", "WXSDKEngine.isInitializedApplication: " + WXSDKEngine.isInitialized()) Log.i("welog", "WXSDKEngine.registerModule: $registerSuccess") - OkGo.getInstance().init(this) + + val headers = HttpHeaders() + val user = User.getUser() + headers.put("phone",user.phone) + headers.put("token",user.token) + OkGo.getInstance() + .addCommonHeaders(headers) + .init(this) Utils.init(this) diff --git a/app/src/main/java/com/yzx/webebook/MainActivity.kt b/app/src/main/java/com/yzx/webebook/MainActivity.kt index ea03601..e06af32 100644 --- a/app/src/main/java/com/yzx/webebook/MainActivity.kt +++ b/app/src/main/java/com/yzx/webebook/MainActivity.kt @@ -13,8 +13,8 @@ import com.yzx.webebook.config.Config import com.yzx.webebook.model.User import com.yzx.webebook.model.bean.CollBookBean import com.yzx.webebook.model.local.BookRepository -import com.yzx.webebook.presenter.base.BasePresenter -import com.yzx.webebook.utils.MD5Utils +import com.yzx.webebook.presenter.ReadPresenter +import com.yzx.webebook.presenter.ReadView import kotlinx.android.synthetic.main.activity_main.* import org.jetbrains.anko.startActivity import org.jetbrains.anko.toast @@ -24,7 +24,7 @@ import org.jetbrains.anko.toast * Yun.Lei * 2020年5月6日14:49:10 */ -class MainActivity : BaseActivity>() { +class MainActivity : BaseActivity(),ReadView { override val inflateId: Int @@ -67,7 +67,7 @@ class MainActivity : BaseActivity>() { Config.APP_NAME = "家校互通(本地)" Config.BASE_URL = mBaseUrl Config.M_URL = mUrl - User.clearUserInfo() +// User.clearUserInfo() startActivity() } btn4.setOnClickListener { @@ -88,7 +88,9 @@ class MainActivity : BaseActivity>() { } btn7.setOnClickListener { - startActivity() + + + mPresenter?.loadCategory("17") } /*OkGo.post("https://fileupload.oa.qbjjyyun.net/edufile/fileUpload") @@ -144,9 +146,9 @@ class MainActivity : BaseActivity>() { } fun saveDb(){ - val path = "/storage/emulated/0/sgyy.txt"; + val path = "/storage/emulated/0/xxjs.pdf"; val collBook = CollBookBean() - collBook._id = MD5Utils.strToMd5By16(path) + collBook._id = "xxjs" collBook.title = "三国演义sgyy" collBook.author = "yzx" collBook.shortIntro = "" @@ -160,7 +162,7 @@ class MainActivity : BaseActivity>() { .saveCollBooks(mutableListOf(collBook)) } - override fun initPresenter(): BasePresenter<*>? = null + override fun initPresenter(): ReadPresenter = ReadPresenter(this) @SuppressLint("SetTextI18n") override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { @@ -184,4 +186,18 @@ class MainActivity : BaseActivity>() { backInfo.text = json } } + + override fun finishChapter() { + + } + + override fun errorChapter() { + + } + + override fun showCategory(localId: String?) { +// startActivity("book_id" to "xxjs") + + + } } 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 a2e32ac..9accc49 100644 --- a/app/src/main/java/com/yzx/webebook/activity/ReadActivity.java +++ b/app/src/main/java/com/yzx/webebook/activity/ReadActivity.java @@ -83,9 +83,9 @@ public class ReadActivity extends BaseActivity implements ReadVie DrawerLayout mDlSlide; /*************top_menu_view*******************/ - AppBarLayout mAblTopMenu; - TextView mTvCommunity; - TextView mTvBrief; +// AppBarLayout mAblTopMenu; +// TextView mTvCommunity; +// TextView mTvBrief; /***************content_view******************/ PageView mPvPage; /***************bottom_menu_view***************************/ @@ -143,11 +143,15 @@ public class ReadActivity extends BaseActivity implements ReadVie public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) { int level = intent.getIntExtra("level", 0); - mPageLoader.updateBattery(level); + if (mPageLoader != null) { + mPageLoader.updateBattery(level); + } } // 监听分钟的变化 else if (intent.getAction().equals(Intent.ACTION_TIME_TICK)) { - mPageLoader.updateTime(); + if (mPageLoader != null) { + mPageLoader.updateTime(); + } } } }; @@ -195,9 +199,8 @@ public class ReadActivity extends BaseActivity implements ReadVie @Override public void initView() { mDlSlide = findViewById(R.id.read_dl_slide); - mAblTopMenu = findViewById(R.id.read_abl_top_menu); - mTvCommunity = findViewById(R.id.read_tv_community); - mTvBrief = findViewById(R.id.read_tv_brief); +// mTvCommunity = findViewById(R.id.read_tv_community); +// mTvBrief = findViewById(R.id.read_tv_brief); mPvPage = findViewById(R.id.read_pv_page); mTvPageTip = findViewById(R.id.read_tv_page_tip); mLlBottomMenu = findViewById(R.id.read_ll_bottom_menu); @@ -208,28 +211,25 @@ public class ReadActivity extends BaseActivity implements ReadVie mTvNightMode = findViewById(R.id.read_tv_night_mode); mTvSetting = findViewById(R.id.read_tv_setting); mLvCategory = findViewById(R.id.read_iv_category); - - - } @Override public void initData() { -// mCollBook = getIntent().getParcelableExtra(EXTRA_COLL_BOOK); - - mCollBook = BookRepository.getInstance().getCollBook("75979111277b0955"); + String id = getIntent().getStringExtra("book_id"); + loadBookData(id); + } + private void loadBookData(String id) { + mCollBook = BookRepository.getInstance().getCollBook(id); - isCollected = getIntent().getBooleanExtra(EXTRA_IS_COLLECTED, false); isNightMode = ReadSettingManager.getInstance().isNightMode(); isFullScreen = ReadSettingManager.getInstance().isFullScreen(); - mBookId = mCollBook.get_id(); - Log.d(TAG, "initData: " + mCollBook.toString()); //获取页面加载器 mPageLoader = mPvPage.getPageLoader(mCollBook); + //禁止滑动展示DrawerLayout mDlSlide.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); //侧边打开后,返回键能够起作用 @@ -258,13 +258,6 @@ public class ReadActivity extends BaseActivity implements ReadVie PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "ireader:keep bright"); - //隐藏StatusBar - mPvPage.post( - () -> hideSystemBar() - ); - - //初始化TopMenu - initTopMenu(); //初始化BottomMenu initBottomMenu(); @@ -279,20 +272,25 @@ public class ReadActivity extends BaseActivity implements ReadVie mPageLoader.getCollBook().setBookChapters(bookChapterBeen); // 刷新章节列表 mPageLoader.refreshChapterList(); - // 如果是网络小说并被标记更新的,则从网络下载目录 -// if (mCollBook.isUpdate() && !mCollBook.isLocal()) { -// getMPresenter().loadCategory(mBookId); -// } LogUtils.e(throwable); } ); addDisposable(disposable); - initClick(); } + private void saveBookInfo() { + if(mCollBook!=null){ + mCollBook.setLastRead(StringUtils. + dateConvert(System.currentTimeMillis(), Constant.FORMAT_BOOK_DATE)); + + BookRepository.getInstance() + .saveCollBookWithAsync(mCollBook); + } + } - private void initClick(){ + + private void initClick() { mPageLoader.setOnPageChangeListener( new PageLoader.OnPageChangeListener() { @@ -444,20 +442,6 @@ public class ReadActivity extends BaseActivity implements ReadVie } ); -// mTvBrief.setOnClickListener( -// (v) -> BookDetailActivity.startActivity(this, mBookId) -// ); - -// mTvCommunity.setOnClickListener( -// (v) -> { -// Intent intent = new Intent(this, CommunityActivity.class); -// startActivity(intent); -// } -// ); - - mSettingDialog.setOnDismissListener( - dialog -> hideSystemBar() - ); } @Nullable @@ -467,8 +451,8 @@ public class ReadActivity extends BaseActivity implements ReadVie } @Override - public void showCategory(List bookChapterList) { - + public void showCategory(String localId) { + loadBookData(localId); } @Override @@ -481,12 +465,6 @@ public class ReadActivity extends BaseActivity implements ReadVie } - private void initTopMenu() { -// if (Build.VERSION.SDK_INT >= 19) { -// mAblTopMenu.setPadding(0, ScreenUtils.getStatusBarHeight(), 0, 0); -// } - } - private void initBottomMenu() { //判断是否全屏 if (ReadSettingManager.getInstance().isFullScreen()) { @@ -505,7 +483,6 @@ public class ReadActivity extends BaseActivity implements ReadVie @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); - Log.d(TAG, "onWindowFocusChanged: " + mAblTopMenu.getMeasuredHeight()); } private void toggleNightMode() { @@ -564,8 +541,7 @@ public class ReadActivity extends BaseActivity implements ReadVie * @return 是否隐藏成功 */ private boolean hideReadMenu() { - hideSystemBar(); - if (mAblTopMenu.getVisibility() == VISIBLE) { + if (mLlBottomMenu.getVisibility() == VISIBLE) { toggleMenu(true); return true; } else if (mSettingDialog.isShowing()) { @@ -575,21 +551,6 @@ public class ReadActivity extends BaseActivity implements ReadVie return false; } - private void showSystemBar() { - //显示 -// SystemBarUtils.showUnStableStatusBar(this); -// if (isFullScreen) { -// SystemBarUtils.showUnStableNavBar(this); -// } - } - - private void hideSystemBar() { - //隐藏 -// SystemBarUtils.hideStableStatusBar(this); -// if (isFullScreen) { -// SystemBarUtils.hideStableNavBar(this); -// } - } /** * 切换菜单栏的可视状态 @@ -598,24 +559,12 @@ public class ReadActivity extends BaseActivity implements ReadVie private void toggleMenu(boolean hideStatusBar) { initMenuAnim(); - if (mAblTopMenu.getVisibility() == View.VISIBLE) { + if (mLlBottomMenu.getVisibility() == View.VISIBLE) { //关闭 - mAblTopMenu.startAnimation(mTopOutAnim); - mLlBottomMenu.startAnimation(mBottomOutAnim); - mAblTopMenu.setVisibility(GONE); mLlBottomMenu.setVisibility(GONE); mTvPageTip.setVisibility(GONE); - - if (hideStatusBar) { - hideSystemBar(); - } } else { - mAblTopMenu.setVisibility(View.VISIBLE); mLlBottomMenu.setVisibility(View.VISIBLE); - mAblTopMenu.startAnimation(mTopInAnim); - mLlBottomMenu.startAnimation(mBottomInAnim); - - showSystemBar(); } } @@ -634,7 +583,7 @@ public class ReadActivity extends BaseActivity implements ReadVie @Override public void onBackPressed() { - if (mAblTopMenu.getVisibility() == View.VISIBLE) { + if (mLlBottomMenu.getVisibility() == View.VISIBLE) { // 非全屏下才收缩,全屏下直接退出 if (!ReadSettingManager.getInstance().isFullScreen()) { toggleMenu(true); @@ -649,7 +598,7 @@ public class ReadActivity extends BaseActivity implements ReadVie } if (!mCollBook.isLocal() && !isCollected - && !mCollBook.getBookChapters().isEmpty()) { + && !mCollBook.getBookChapters().isEmpty() && false) { AlertDialog alertDialog = new AlertDialog.Builder(this) .setTitle("加入书架") .setMessage("喜欢本书就加入书架吧") @@ -676,10 +625,6 @@ public class ReadActivity extends BaseActivity implements ReadVie // 退出 private void exit() { - // 返回给BookDetail。 -// Intent result = new Intent(); -// result.putExtra(BookDetailActivity.RESULT_IS_COLLECTED, isCollected); -// setResult(Activity.RESULT_OK, result); // 退出 super.onBackPressed(); } @@ -693,14 +638,19 @@ public class ReadActivity extends BaseActivity implements ReadVie @Override protected void onResume() { super.onResume(); - mWakeLock.acquire(); + if (mWakeLock != null) { + mWakeLock.acquire(); + } } @Override protected void onPause() { super.onPause(); - mWakeLock.release(); - if (isCollected) { + if (mWakeLock != null) { + mWakeLock.release(); + } + if (mPageLoader != null) { + saveBookInfo(); mPageLoader.saveRecord(); } } @@ -745,7 +695,6 @@ public class ReadActivity extends BaseActivity implements ReadVie @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); -// SystemBarUtils.hideStableStatusBar(this); if (requestCode == REQUEST_MORE_SETTING) { boolean fullScreen = ReadSettingManager.getInstance().isFullScreen(); if (isFullScreen != fullScreen) { @@ -754,12 +703,6 @@ public class ReadActivity extends BaseActivity implements ReadVie initBottomMenu(); } - // 设置显示状态 -// if (isFullScreen) { -// SystemBarUtils.hideStableNavBar(this); -// } else { -// SystemBarUtils.showStableNavBar(this); -// } } } } \ No newline at end of file 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 9cc5689..ea70c97 100644 --- a/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt +++ b/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt @@ -14,28 +14,29 @@ import android.view.View import android.view.ViewGroup import android.webkit.* import android.widget.LinearLayout -import android.widget.ProgressBar import android.widget.TextView import androidx.annotation.RequiresApi import androidx.core.widget.ContentLoadingProgressBar -import com.allenliu.versionchecklib.callback.APKDownloadListener 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.SPUtils +import com.blankj.utilcode.util.ToastUtils import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.lzy.okgo.OkGo import com.lzy.okgo.callback.StringCallback import com.lzy.okgo.model.Response -import com.yzx.webebook.MainActivity import com.yzx.webebook.R import com.yzx.webebook.activity.base.BaseActivity import com.yzx.webebook.config.Config import com.yzx.webebook.model.BaseBean import com.yzx.webebook.model.User import com.yzx.webebook.model.Version +import com.yzx.webebook.model.local.BookRepository +import com.yzx.webebook.presenter.ReadPresenter +import com.yzx.webebook.presenter.ReadView import com.yzx.webebook.presenter.base.BasePresenter import com.yzx.webebook.widget.BaseDialog import kotlinx.android.synthetic.main.activity_web.* @@ -44,7 +45,6 @@ import org.jetbrains.anko.find import org.jetbrains.anko.startActivity import org.jetbrains.anko.toast import org.json.JSONObject -import java.io.File import java.util.* /** @@ -476,6 +476,30 @@ class YzxJavascriptInterface(var ctx: Activity) { sp.remove("unit_count") ctx.startActivity() } + + @JavascriptInterface + fun readPage(bookTaskId: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) + }else{ + ToastUtils.showLong("暂不支持该格式预览!") + } + } + + }) + presenter.loadCategory(bookTaskId) + } } diff --git a/app/src/main/java/com/yzx/webebook/model/Book.kt b/app/src/main/java/com/yzx/webebook/model/Book.kt new file mode 100644 index 0000000..3b2959c --- /dev/null +++ b/app/src/main/java/com/yzx/webebook/model/Book.kt @@ -0,0 +1,23 @@ +package com.yzx.webebook.model + +class Book { + var book_name:String = "" + var file_type:String = "" + var book_file_identity:String = "" + var book_file_id:String = "" + var author:String = "" + var read_requires:String = "" + var volumes:MutableList = mutableListOf() +} + +class Volumes{ + var id:String = "" + var title:String = "" + var sections:MutableList = mutableListOf() +} + +class Sections{ + var id:String = "" + var title:String = "" + var content:String = "" +} \ No newline at end of file diff --git a/app/src/main/java/com/yzx/webebook/model/local/ReadSettingManager.java b/app/src/main/java/com/yzx/webebook/model/local/ReadSettingManager.java index 200db5e..3e26a34 100644 --- a/app/src/main/java/com/yzx/webebook/model/local/ReadSettingManager.java +++ b/app/src/main/java/com/yzx/webebook/model/local/ReadSettingManager.java @@ -95,7 +95,7 @@ public class ReadSettingManager { } public PageMode getPageMode() { - int mode = sharedPreUtils.getInt(SHARED_READ_PAGE_MODE, PageMode.SIMULATION.ordinal()); + int mode = sharedPreUtils.getInt(SHARED_READ_PAGE_MODE, PageMode.NONE.ordinal()); return PageMode.values()[mode]; } 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 e6e239d..e36d798 100644 --- a/app/src/main/java/com/yzx/webebook/presenter/ReadPresenter.java +++ b/app/src/main/java/com/yzx/webebook/presenter/ReadPresenter.java @@ -1,24 +1,145 @@ package com.yzx.webebook.presenter; +import android.util.Log; + +import com.blankj.utilcode.util.TimeUtils; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.callback.FileCallback; +import com.lzy.okgo.callback.StringCallback; +import com.lzy.okgo.model.HttpHeaders; +import com.lzy.okgo.model.Response; +import com.yzx.webebook.config.Config; +import com.yzx.webebook.model.BaseBean; +import com.yzx.webebook.model.Book; +import com.yzx.webebook.model.Sections; +import com.yzx.webebook.model.User; +import com.yzx.webebook.model.Volumes; +import com.yzx.webebook.model.bean.CollBookBean; +import com.yzx.webebook.model.local.BookRepository; import com.yzx.webebook.presenter.base.BasePresenter; +import com.yzx.webebook.utils.FileUtils; +import com.yzx.webebook.utils.MD5Utils; import com.yzx.webebook.widget.page.TxtChapter; import org.jetbrains.annotations.NotNull; +import java.io.File; +import java.util.ArrayList; import java.util.List; public class ReadPresenter extends BasePresenter { + static String NOTE_FOLDER_DIR = "/mnt/sdcard/ebook/book/"; public ReadPresenter(@NotNull ReadView view) { super(view); } - public void loadCategory(String bookId){ + public void loadCategory(String bookTaskId) { + User user = User.Companion.getUser(); + String localId = user.getUser_id() + "_" + bookTaskId; + CollBookBean collBook = BookRepository.getInstance().getCollBook(localId); + if (collBook != null) { + getMView().showCategory(localId); + } else { + String url = Config.INSTANCE.getBASE_URL() + "/parent/readTask/getBookWarehouseContent"; + HttpHeaders headers = new HttpHeaders(); + headers.put("phone", user.getPhone()); + headers.put("token", user.getToken()); + OkGo.post(url) + .tag(this) + .params("id", bookTaskId) + .headers(headers) + .execute(new StringCallback() { + + @Override + public void onSuccess(Response response) { + Log.d("ReadActivity", "onSuccess: " + response.body()); + Gson gson = new Gson(); + BaseBean bean = gson.fromJson(response.body(), new TypeToken>() { + }.getType()); + if ("txt".equals(bean.getData().getFile_type())) { + downloadBook(bean.getData(), bookTaskId); + } else { + Book book = bean.getData(); + StringBuilder builder = new StringBuilder(); + if (book.getVolumes().size() > 0) { + for (Volumes volume : book.getVolumes()) { + builder.append(volume.getTitle()); + for (Sections section : volume.getSections()) { + builder.append(section.getTitle()); + builder.append(section.getContent()); + } + } + } + String filePath = FileUtils.writeTxtToFile(builder.toString(), NOTE_FOLDER_DIR, user.getUser_id() + "_" + bookTaskId + ".txt"); + CollBookBean bookBean = new CollBookBean(); + String localId = user.getUser_id() + "_" + bookTaskId; + bookBean.set_id(localId); + bookBean.setAuthor(book.getAuthor()); + bookBean.setTitle(book.getBook_name()); + bookBean.setShortIntro(book.getRead_requires()); + bookBean.setLastChapter("开始阅读"); + bookBean.setUpdate(true); + bookBean.setIsLocal(true); + bookBean.setLastRead(TimeUtils.getNowString()); + bookBean.setUpdated(TimeUtils.getNowString()); + bookBean.setCover(filePath); + + List list = new ArrayList(); + list.add(bookBean); + BookRepository.getInstance() + .saveCollBooks(list); + + getMView().showCategory(localId); + } + } + + @Override + public void onError(Response response) { + super.onError(response); + } + }); + } + + + } + + private void downloadBook(Book data, String bookTaskId) { + User user = User.Companion.getUser(); + OkGo.get("https://" + data.getBook_file_identity() + ".oa.qbjjyyun.net/edufile/download?uniqueKey=" + data.getBook_file_id()) + .tag(this) + .execute(new FileCallback(NOTE_FOLDER_DIR, user.getUser_id() + "_" + data.getBook_name() + "." + data.getFile_type()) { + + @Override + public void onSuccess(Response response) { + File file = response.body(); + CollBookBean bookBean = new CollBookBean(); + String localId = user.getUser_id() + "_" + bookTaskId; + bookBean.set_id(localId); + bookBean.setAuthor(data.getAuthor()); + bookBean.setTitle(data.getBook_name()); + bookBean.setShortIntro(data.getRead_requires()); + bookBean.setLastChapter("开始阅读"); + bookBean.setUpdate(true); + bookBean.setIsLocal(true); + bookBean.setLastRead(TimeUtils.getNowString()); + bookBean.setUpdated(TimeUtils.getNowString()); + bookBean.setCover(file.getAbsolutePath()); + + List list = new ArrayList(); + list.add(bookBean); + BookRepository.getInstance() + .saveCollBooks(list); + getMView().showCategory(localId); + } + }); } - public void loadChapter(String bookId, List bookChapterList){ + public void loadChapter(String bookId, List bookChapterList) { } } diff --git a/app/src/main/java/com/yzx/webebook/presenter/ReadView.java b/app/src/main/java/com/yzx/webebook/presenter/ReadView.java index e3fcb91..745938d 100644 --- a/app/src/main/java/com/yzx/webebook/presenter/ReadView.java +++ b/app/src/main/java/com/yzx/webebook/presenter/ReadView.java @@ -8,7 +8,7 @@ import java.util.List; public interface ReadView extends IView { - void showCategory(List bookChapterList); + void showCategory(String localId); void finishChapter(); void errorChapter(); } diff --git a/app/src/main/java/com/yzx/webebook/utils/FileUtils.java b/app/src/main/java/com/yzx/webebook/utils/FileUtils.java index 94b6e03..a0ce216 100644 --- a/app/src/main/java/com/yzx/webebook/utils/FileUtils.java +++ b/app/src/main/java/com/yzx/webebook/utils/FileUtils.java @@ -1,6 +1,7 @@ package com.yzx.webebook.utils; import android.os.Environment; +import android.util.Log; import com.yzx.webebook.App; @@ -11,6 +12,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; +import java.io.RandomAccessFile; import java.io.Reader; import java.text.DecimalFormat; import java.util.ArrayList; @@ -267,4 +269,60 @@ public class FileUtils { } return charset; } + + // 将字符串写入到文本文件中 + public static String writeTxtToFile(String strcontent, String filePath, String fileName) { + //生成文件夹之后,再生成文件,不然会出错 + makeFilePath(filePath, fileName); + + String strFilePath = filePath + fileName; + // 每次写入时,都换行写 + String strContent = strcontent + "\r\n"; + try { + File file = new File(strFilePath); + if (!file.exists()) { + Log.d("TestFile", "Create the file:" + strFilePath); + file.getParentFile().mkdirs(); + file.createNewFile(); + } + RandomAccessFile raf = new RandomAccessFile(file, "rwd"); + raf.seek(file.length()); + raf.write(strContent.getBytes()); + raf.close(); + return strFilePath; + } catch (Exception e) { + Log.e("TestFile", "Error on write File:" + e); + return ""; + } + } + + //生成文件 + + public static File makeFilePath(String filePath, String fileName) { + File file = null; + makeRootDirectory(filePath); + try { + file = new File(filePath + fileName); + if (!file.exists()) { + file.createNewFile(); + } + } catch (Exception e) { + e.printStackTrace(); + } + return file; + } + +//生成文件夹 + + public static void makeRootDirectory(String filePath) { + File file = null; + try { + file = new File(filePath); + if (!file.exists()) { + file.mkdir(); + } + } catch (Exception e) { + Log.i("error:", e + ""); + } + } } diff --git a/app/src/main/java/com/yzx/webebook/widget/ReadSettingDialog.java b/app/src/main/java/com/yzx/webebook/widget/ReadSettingDialog.java index d0ea93a..59115a2 100644 --- a/app/src/main/java/com/yzx/webebook/widget/ReadSettingDialog.java +++ b/app/src/main/java/com/yzx/webebook/widget/ReadSettingDialog.java @@ -6,6 +6,7 @@ import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.Gravity; +import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.CheckBox; @@ -30,16 +31,18 @@ import com.yzx.webebook.widget.page.PageLoader; import com.yzx.webebook.widget.page.PageMode; import com.yzx.webebook.widget.page.PageStyle; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; /** * Created by newbiechen on 17-5-18. */ -public class ReadSettingDialog extends Dialog { +public class ReadSettingDialog extends Dialog implements View.OnClickListener { private static final String TAG = "ReadSettingDialog"; - private static final int DEFAULT_TEXT_SIZE = 16; + private static final int DEFAULT_TEXT_SIZE = 28; ImageView mIvBrightnessMinus; SeekBar mSbBrightness; @@ -74,6 +77,8 @@ public class ReadSettingDialog extends Dialog { private boolean isTextDefault; + private List sizeBtnList = new ArrayList<>(); + public ReadSettingDialog(@NonNull Activity activity, PageLoader mPageLoader) { super(activity, R.style.ReadSettingDialog); mActivity = activity; @@ -108,6 +113,20 @@ public class ReadSettingDialog extends Dialog { mRbNone = findViewById(R.id.read_setting_rb_none); mRvBg = findViewById(R.id.read_setting_rv_bg); mTvMore = findViewById(R.id.read_setting_tv_more); + + sizeBtnList.clear(); + sizeBtnList.add(findViewById(R.id.size_btn_1)); + sizeBtnList.add(findViewById(R.id.size_btn_2)); + sizeBtnList.add(findViewById(R.id.size_btn_3)); + sizeBtnList.add(findViewById(R.id.size_btn_4)); + sizeBtnList.add(findViewById(R.id.size_btn_5)); + sizeBtnList.add(findViewById(R.id.size_btn_6)); + sizeBtnList.add(findViewById(R.id.size_btn_7)); + for (View view : sizeBtnList) { + int index = sizeBtnList.indexOf(view); + view.setTag(28 + index * 6); + view.setOnClickListener(this); + } } //设置Dialog显示的位置 @@ -115,8 +134,8 @@ public class ReadSettingDialog extends Dialog { Window window = getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.width = WindowManager.LayoutParams.MATCH_PARENT; - lp.height = WindowManager.LayoutParams.WRAP_CONTENT; - lp.gravity = Gravity.BOTTOM; + lp.height = WindowManager.LayoutParams.MATCH_PARENT; + lp.gravity = Gravity.CENTER; window.setAttributes(lp); } @@ -129,6 +148,18 @@ public class ReadSettingDialog extends Dialog { isTextDefault = mSettingManager.isDefaultTextSize(); mPageMode = mSettingManager.getPageMode(); mPageStyle = mSettingManager.getPageStyle(); + + for (View view : sizeBtnList) { + int size = (int) view.getTag(); + int fontSize = ScreenUtils.dpToPx(size); + + TextView tv = (TextView) view; + if (mTextSize == fontSize) { + tv.setText("O"); + } else { + tv.setText("|"); + } + } } private void initWidget() { @@ -139,6 +170,8 @@ public class ReadSettingDialog extends Dialog { initPageMode(); //RecyclerView setUpAdapter(); + + } private void setUpAdapter() { @@ -330,4 +363,18 @@ public class ReadSettingDialog extends Dialog { } return mCbBrightnessAuto.isChecked(); } + + @Override + public void onClick(View v) { + int size = (int) v.getTag(); + + for (View view : sizeBtnList) { + TextView tv = (TextView) view; + tv.setText("|"); + } + ((TextView) v).setText("O"); + int fontSize = ScreenUtils.dpToPx(size); + mPageLoader.setTextSize(fontSize); + dismiss(); + } } 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 80e84c7..b8fb93c 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 = 512 * 1024; + private final static int BUFFER_SIZE = 10 * 1024; //没有标题的时候,每个章节的最大长度 private final static int MAX_LENGTH_WITH_NO_CHAPTER = 10 * 1024; diff --git a/app/src/main/java/com/yzx/webebook/widget/page/PageView.java b/app/src/main/java/com/yzx/webebook/widget/page/PageView.java index 248e585..405356f 100644 --- a/app/src/main/java/com/yzx/webebook/widget/page/PageView.java +++ b/app/src/main/java/com/yzx/webebook/widget/page/PageView.java @@ -36,8 +36,8 @@ public class PageView extends View { private int mStartY = 0; private boolean isMove = false; // 初始化参数 - private int mBgColor = 0xFFCEC29C; - private PageMode mPageMode = PageMode.SIMULATION; + private int mBgColor = 0xFFFFFFFF; + private PageMode mPageMode = PageMode.NONE; // 是否允许点击 private boolean canTouch = true; // 唤醒菜单的区域 @@ -99,26 +99,26 @@ public class PageView extends View { //视图未初始化的时候,禁止调用 if (mViewWidth == 0 || mViewHeight == 0) return; - switch (mPageMode) { - case SIMULATION: - mPageAnim = new SimulationPageAnim(mViewWidth, mViewHeight, this, mPageAnimListener); - break; - case COVER: - mPageAnim = new CoverPageAnim(mViewWidth, mViewHeight, this, mPageAnimListener); - break; - case SLIDE: - mPageAnim = new SlidePageAnim(mViewWidth, mViewHeight, this, mPageAnimListener); - break; - case NONE: - mPageAnim = new NonePageAnim(mViewWidth, mViewHeight, this, mPageAnimListener); - break; - case SCROLL: - mPageAnim = new ScrollPageAnim(mViewWidth, mViewHeight, 0, - mPageLoader.getMarginHeight(), this, mPageAnimListener); - break; - default: - mPageAnim = new SimulationPageAnim(mViewWidth, mViewHeight, this, mPageAnimListener); - } +// switch (mPageMode) { +// case SIMULATION: +// mPageAnim = new SimulationPageAnim(mViewWidth, mViewHeight, this, mPageAnimListener); +// break; +// case COVER: +// mPageAnim = new CoverPageAnim(mViewWidth, mViewHeight, this, mPageAnimListener); +// break; +// case SLIDE: +// mPageAnim = new SlidePageAnim(mViewWidth, mViewHeight, this, mPageAnimListener); +// break; +// case NONE: +// mPageAnim = new NonePageAnim(mViewWidth, mViewHeight, this, mPageAnimListener); +// break; +// case SCROLL: +// mPageAnim = new ScrollPageAnim(mViewWidth, mViewHeight, 0, +// mPageLoader.getMarginHeight(), this, mPageAnimListener); +// break; +// default: +// } + mPageAnim = new NonePageAnim(mViewWidth, mViewHeight, this, mPageAnimListener); } public Bitmap getNextBitmap() { diff --git a/app/src/main/res/color/selector_btn_read_setting.xml b/app/src/main/res/color/selector_btn_read_setting.xml index 385291d..ba77f4b 100644 --- a/app/src/main/res/color/selector_btn_read_setting.xml +++ b/app/src/main/res/color/selector_btn_read_setting.xml @@ -1,8 +1,8 @@ - - - + + + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/seekbar_bg.xml b/app/src/main/res/drawable/seekbar_bg.xml index fbbe04f..538e724 100644 --- a/app/src/main/res/drawable/seekbar_bg.xml +++ b/app/src/main/res/drawable/seekbar_bg.xml @@ -4,20 +4,18 @@ - + android:endColor="@color/orange" + android:startColor="@color/orange" /> - + android:endColor="#000000" + android:startColor="#000000" /> diff --git a/app/src/main/res/drawable/shape_btn_read_setting_checked.xml b/app/src/main/res/drawable/shape_btn_read_setting_checked.xml index f67604f..a7650e0 100644 --- a/app/src/main/res/drawable/shape_btn_read_setting_checked.xml +++ b/app/src/main/res/drawable/shape_btn_read_setting_checked.xml @@ -4,5 +4,5 @@ + android:color="@color/black"/> \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_dialog.xml b/app/src/main/res/drawable/shape_dialog.xml new file mode 100644 index 0000000..3cf2978 --- /dev/null +++ b/app/src/main/res/drawable/shape_dialog.xml @@ -0,0 +1,9 @@ + + + + + + + \ 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 faf6c1e..e8c3675 100644 --- a/app/src/main/res/layout/activity_read.xml +++ b/app/src/main/res/layout/activity_read.xml @@ -10,8 +10,7 @@ + android:layout_height="match_parent"> - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + android:scrollbars="vertical"/> diff --git a/app/src/main/res/layout/dialog_read_setting.xml b/app/src/main/res/layout/dialog_read_setting.xml index 31b2cb8..8e82382 100644 --- a/app/src/main/res/layout/dialog_read_setting.xml +++ b/app/src/main/res/layout/dialog_read_setting.xml @@ -13,25 +13,135 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - + android:paddingLeft="30dp" + android:paddingRight="30dp"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:visibility="gone"> - + + android:textColor="@color/selector_btn_read_setting" /> - + - + android:visibility="gone"> + - + android:textSize="14dp" /> + - + android:textColor="@color/black" + android:textSize="14dp" /> + - + android:textSize="18dp" /> + + android:button="@null" + android:gravity="center" + android:text="默认" /> - + - + android:visibility="gone"> + - + android:button="@null" + android:gravity="center" + android:text="仿真" + android:textSize="14dp" /> + - + android:button="@null" + android:gravity="center" + android:text="覆盖" + android:textSize="14dp" /> + - + android:visibility="gone" /> + - + android:button="@null" + android:gravity="center" + android:text="滚动" + android:textSize="14dp" /> + + android:button="@null" + android:gravity="center" + android:text="无" + android:textSize="14dp" /> - + - + android:layout_marginRight="5dp" + android:scrollbars="none" + android:visibility="gone" /> + - + android:visibility="gone" /> + diff --git a/app/src/main/res/mipmap-xhdpi/ic_read_menu_category.png b/app/src/main/res/mipmap-xhdpi/ic_read_menu_category.png index 149b65d..ba33ae7 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_read_menu_category.png and b/app/src/main/res/mipmap-xhdpi/ic_read_menu_category.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_read_menu_download.png b/app/src/main/res/mipmap-xhdpi/ic_read_menu_download.png index 8da9972..3829a41 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_read_menu_download.png and b/app/src/main/res/mipmap-xhdpi/ic_read_menu_download.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_read_menu_font.png b/app/src/main/res/mipmap-xhdpi/ic_read_menu_font.png index ad0f11b..6c36f4e 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_read_menu_font.png and b/app/src/main/res/mipmap-xhdpi/ic_read_menu_font.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_read_menu_morning.png b/app/src/main/res/mipmap-xhdpi/ic_read_menu_morning.png index b76869d..5b48317 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_read_menu_morning.png and b/app/src/main/res/mipmap-xhdpi/ic_read_menu_morning.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_read_menu_night.png b/app/src/main/res/mipmap-xhdpi/ic_read_menu_night.png index 3c1133a..df49a7f 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_read_menu_night.png and b/app/src/main/res/mipmap-xhdpi/ic_read_menu_night.png differ diff --git a/app/src/main/res/mipmap-xhdpi/seekbar_thumb_normal.png b/app/src/main/res/mipmap-xhdpi/seekbar_thumb_normal.png index d043cb9..c0ac35b 100644 Binary files a/app/src/main/res/mipmap-xhdpi/seekbar_thumb_normal.png and b/app/src/main/res/mipmap-xhdpi/seekbar_thumb_normal.png differ diff --git a/app/src/main/res/mipmap-xhdpi/seekbar_thumb_selected.png b/app/src/main/res/mipmap-xhdpi/seekbar_thumb_selected.png index 16106bb..c0ac35b 100644 Binary files a/app/src/main/res/mipmap-xhdpi/seekbar_thumb_selected.png and b/app/src/main/res/mipmap-xhdpi/seekbar_thumb_selected.png differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 8c675b3..65cbd8d 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -80,10 +80,10 @@ #8bd715 - #CEC29C - #CCEBCC - #AAAAAA - #D1CEC5 + #FFFFFF + #FFFFFF + #FFFFFF + #FFFFFF #001C27 #DDCEC29C @@ -95,9 +95,9 @@ #627176 #000000 - #99ffffff + #ffffffff - #191919 + #ffffff #CBCBCB #88000000 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index fc1fcab..2cf9c7f 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -32,11 +32,11 @@ false Re - @style/anim_slide_left_in_right_out + diff --git a/app/src/main/res/values/styles_text.xml b/app/src/main/res/values/styles_text.xml index b1de9e8..db06ec7 100644 --- a/app/src/main/res/values/styles_text.xml +++ b/app/src/main/res/values/styles_text.xml @@ -38,7 +38,7 @@ @color/nb.read.menu.text