修正url过滤问题
This commit is contained in:
parent
fcb43d9a33
commit
c92fd2e52d
|
@ -17,8 +17,8 @@ android {
|
||||||
// applicationId "com.zhushou.yueshu"
|
// applicationId "com.zhushou.yueshu"
|
||||||
minSdkVersion 19 //target 19 Android 4.4 以下版本仅占比4.1%
|
minSdkVersion 19 //target 19 Android 4.4 以下版本仅占比4.1%
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 1
|
versionCode 6
|
||||||
versionName "v1.0"
|
versionName "v6.0"
|
||||||
|
|
||||||
// testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
// testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ android {
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||||
// versionCode 1
|
// versionCode 1
|
||||||
// versionName "v1.0"
|
// versionName "v1.0"
|
||||||
applicationVariants.all { variant ->
|
/* applicationVariants.all { variant ->
|
||||||
variant.outputs.all { output ->
|
variant.outputs.all { output ->
|
||||||
def outFile = output.outputFile
|
def outFile = output.outputFile
|
||||||
if (outFile != null && outFile.name.endsWith(".apk")) {
|
if (outFile != null && outFile.name.endsWith(".apk")) {
|
||||||
|
@ -71,21 +71,24 @@ android {
|
||||||
outputFileName = fileName;
|
outputFileName = fileName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
signingConfig signingConfigs.releaseConfig
|
signingConfig signingConfigs.releaseConfig
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//渠道
|
//渠道
|
||||||
productFlavors {
|
productFlavors {
|
||||||
// googleplay {}
|
// googleplay {}
|
||||||
g {
|
/* g {
|
||||||
applicationId "com.zhushou.yueshu"
|
applicationId "com.zhushou.yueshu"
|
||||||
versionName "v1.0"
|
versionName "v1.0"
|
||||||
buildConfigField "String", "MAIN_HOST", '"http://g.xiaoshuofenxiang.com/api/"'
|
buildConfigField "String", "MAIN_HOST", '"http://g.xiaoshuofenxiang.com/api/"'
|
||||||
buildConfigField "String", "API_HOST", '""'
|
buildConfigField "String", "API_HOST", '""'
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//批量配置
|
||||||
|
productFlavors.all { flavor ->
|
||||||
|
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
|
||||||
|
}*/
|
||||||
/* google {
|
/* google {
|
||||||
applicationId "com.zhushou.yueshu"
|
applicationId "com.zhushou.yueshu"
|
||||||
versionName "v1.0"
|
versionName "v1.0"
|
||||||
|
@ -93,10 +96,7 @@ android {
|
||||||
buildConfigField "String", "API_HOST", '""'
|
buildConfigField "String", "API_HOST", '""'
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
//批量配置
|
|
||||||
productFlavors.all { flavor ->
|
|
||||||
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
android {
|
android {
|
||||||
|
|
|
@ -197,8 +197,8 @@
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="UMENG_APPKEY"
|
android:name="UMENG_APPKEY"
|
||||||
android:value="5cd6238a570df375c3000cc9" /> <!-- <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/> -->
|
android:value="5cd6238a570df375c3000cc9" /> <!-- <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/> -->
|
||||||
<!--<meta-data android:name="UMENG_CHANNEL" android:value="debug" />-->
|
<meta-data android:name="UMENG_CHANNEL" android:value="debug" />
|
||||||
<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />
|
<!--<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />-->
|
||||||
<!-- google ad-->
|
<!-- google ad-->
|
||||||
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
|
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
|
||||||
<meta-data
|
<meta-data
|
||||||
|
|
|
@ -9,6 +9,7 @@ import android.support.v7.widget.RecyclerView;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.TextureView;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
@ -95,7 +96,17 @@ public class Activity_ChgSource extends Activity_base {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mSites = new ArrayList<Site>(Arrays.asList(pageFactory.getNovelSites().getSites()));
|
ArrayList<Site> tmp = new ArrayList<Site>(Arrays.asList(pageFactory.getNovelSites().getSites()));
|
||||||
|
|
||||||
|
for(Site site : tmp){
|
||||||
|
if(!TextUtils.isEmpty(site.getMuluUrl())){
|
||||||
|
mSites.add(site);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
handler.sendEmptyMessage(1);
|
handler.sendEmptyMessage(1);
|
||||||
}}.start();;
|
}}.start();;
|
||||||
|
|
||||||
|
|
|
@ -334,11 +334,11 @@ public class CatalogFragment extends BasicFragment implements MarkActivity.Sortc
|
||||||
|
|
||||||
public void hideProgressSelf() {
|
public void hideProgressSelf() {
|
||||||
Log.d(TAG, "prepare book hideProgress2 called" );
|
Log.d(TAG, "prepare book hideProgress2 called" );
|
||||||
try{
|
/* try{
|
||||||
throw new Exception("who dismissed");
|
throw new Exception("who dismissed");
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
Log.e(TAG, "prepare book hideProgress2: ", e);
|
Log.e(TAG, "prepare book hideProgress2: ", e);
|
||||||
}
|
}*/
|
||||||
if (mProgressDialog2 == null)
|
if (mProgressDialog2 == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -205,7 +205,7 @@ public class Fragment_Shelf extends BasicFragment {
|
||||||
@Override
|
@Override
|
||||||
public void onFault(String errorMsg) {
|
public void onFault(String errorMsg) {
|
||||||
//失败
|
//失败
|
||||||
Log.d(TAG, "error on get firstpage: " + errorMsg);
|
Log.d(TAG, "error on get novel update list: " + errorMsg);
|
||||||
handler.sendEmptyMessage(1);
|
handler.sendEmptyMessage(1);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -793,6 +793,7 @@ public class Fragment_Shelf extends BasicFragment {
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
getUpdatedData();
|
getUpdatedData();
|
||||||
|
|
||||||
if (bottomSheetDialog != null) {
|
if (bottomSheetDialog != null) {
|
||||||
bottomSheetDialog.hide();
|
bottomSheetDialog.hide();
|
||||||
}
|
}
|
||||||
|
|
|
@ -341,15 +341,15 @@ public void testUpdate(){
|
||||||
lastUpdateTime - nv.lastUpdateTime
|
lastUpdateTime - nv.lastUpdateTime
|
||||||
|
|
||||||
) );
|
) );
|
||||||
// isUpdated = isUpdated && !(!TextUtils.isEmpty(chapterName) && !TextUtils.isEmpty(nv.chapterName) && (chapterName.equals(nv.lastReadChaptName) ));
|
/* boolean isLastReadchaptUpdated = TextUtils.isEmpty(nv.lastReadChaptName) || !(chapterName.equals(nv.lastReadChaptName)); //没看过最新章节
|
||||||
// boolean isLastReadchaptUpdated = !TextUtils.isEmpty(chapterName) && !TextUtils.isEmpty(nv.lastReadChaptName) && !(chapterName.equals(nv.lastReadChaptName));
|
|
||||||
boolean isLastReadchaptUpdated = TextUtils.isEmpty(nv.lastReadChaptName) || !(chapterName.equals(nv.lastReadChaptName)); //没看过最新章节
|
|
||||||
boolean isLastChaptUpdated = !TextUtils.isEmpty(chapterName) && !TextUtils.isEmpty(nv.chapterName) && !(chapterName.equals(nv.chapterName));
|
boolean isLastChaptUpdated = !TextUtils.isEmpty(chapterName) && !TextUtils.isEmpty(nv.chapterName) && !(chapterName.equals(nv.chapterName));
|
||||||
Log.d("Novel", String.format( " server lastUpdateTime ,server chaptername %s,chaptername %s,lastreadchapt %s" , chapterName,nv.chapterName,nv.lastReadChaptName ) );
|
Log.d("Novel", String.format( " server lastUpdateTime ,server chaptername %s,chaptername %s,lastreadchapt %s" , chapterName,nv.chapterName,nv.lastReadChaptName ) );
|
||||||
|
|
||||||
isUpdated = isUpdated && isLastReadchaptUpdated || isLastChaptUpdated ;
|
isUpdated = isUpdated && isLastReadchaptUpdated || isLastChaptUpdated ;
|
||||||
|
|
||||||
Log.d("Novel", String.format( " isupdated %s, server lastUpdateTime isLastReadchaptUpdated %s,isLastChaptUpdated %s" ,isUpdated,isLastReadchaptUpdated,isLastChaptUpdated ) );
|
Log.d("Novel", String.format( " isupdated %s, server lastUpdateTime isLastReadchaptUpdated %s,isLastChaptUpdated %s" ,isUpdated,isLastReadchaptUpdated,isLastChaptUpdated ) );
|
||||||
|
*/
|
||||||
|
|
||||||
if(!isUpdated){
|
if(!isUpdated){
|
||||||
setToDefault("isUpdated");
|
setToDefault("isUpdated");
|
||||||
}
|
}
|
||||||
|
|
|
@ -249,29 +249,47 @@ public class BookUtil {
|
||||||
|
|
||||||
Log.d(TAG, String.format("prepare book %s get novel sites count %s .",mNovel.getName(), nvs.getSites().length) );
|
Log.d(TAG, String.format("prepare book %s get novel sites count %s .",mNovel.getName(), nvs.getSites().length) );
|
||||||
if(nvs.getSites().length ==0){
|
if(nvs.getSites().length ==0){
|
||||||
throw new RuntimeException("书本错误 code 001"); //无目标网站
|
throw new RuntimeException("书本错误 no site, code 001"); //无目标网站
|
||||||
// return;
|
// return;
|
||||||
}
|
}
|
||||||
|
mSite =null;
|
||||||
if(nvs.getSites().length > 0){
|
if(nvs.getSites().length > 0){
|
||||||
for (Site site:nvs.getSites() ) {
|
for (Site site:nvs.getSites() ) {
|
||||||
|
if(TextUtils.isEmpty(site.getMuluUrl())){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if(!TextUtils.isEmpty(mNovel.getDomain()) && site.getDomain().equals(mNovel.getDomain())){
|
if(!TextUtils.isEmpty(mNovel.getDomain()) && site.getDomain().equals(mNovel.getDomain())){
|
||||||
mSite = site;
|
mSite = site;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mSite ==null)
|
if(mSite ==null) {
|
||||||
for (Site site:nvs.getSites() ) {
|
for (Site site : nvs.getSites()) {
|
||||||
if(site.getSelectedByDefault()){
|
if(TextUtils.isEmpty(site.getMuluUrl())){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (site.getSelectedByDefault()) {
|
||||||
mSite = site;
|
mSite = site;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(mSite ==null)
|
}
|
||||||
mSite =nvs.getSites()[0];
|
|
||||||
|
if(mSite ==null) {
|
||||||
|
for (Site site : nvs.getSites()) {
|
||||||
|
if(TextUtils.isEmpty(site.getMuluUrl())){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
mSite = site;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(mSite!=null) {
|
||||||
|
getSiteRule();
|
||||||
}
|
}
|
||||||
getSiteRule();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setSiteInfo() {
|
private void setSiteInfo() {
|
||||||
|
@ -865,6 +883,10 @@ int muluRetryCount =0;
|
||||||
}
|
}
|
||||||
String url = mSite.getMuluUrl();
|
String url = mSite.getMuluUrl();
|
||||||
int maxAge= isForceRefresh ?0 : mNovel.getMaxAge();
|
int maxAge= isForceRefresh ?0 : mNovel.getMaxAge();
|
||||||
|
if(!isHttpOrHttps(url)){
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
Request request = getTagRequest(url,REUtil.getDomain(url),maxAge);
|
Request request = getTagRequest(url,REUtil.getDomain(url),maxAge);
|
||||||
|
|
||||||
mMuluStatus = MuluStatus.isDownloading;
|
mMuluStatus = MuluStatus.isDownloading;
|
||||||
|
@ -1761,6 +1783,14 @@ int muluRetryCount =0;
|
||||||
return block;
|
return block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean isHttpOrHttps(String url){
|
||||||
|
if(TextUtils.isEmpty(url) || !url.toLowerCase().startsWith("http") && !url.toLowerCase().startsWith("https")){
|
||||||
|
Log.d(TAG, String.format("prepare book isHttpOrHttps: url % is bad for request ",url));
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
Map<Integer,Integer> fileRetryCnt = new HashMap<Integer,Integer>();
|
Map<Integer,Integer> fileRetryCnt = new HashMap<Integer,Integer>();
|
||||||
private void loadChaptContent(final int chapterIndex) throws JSONException, InterruptedException {
|
private void loadChaptContent(final int chapterIndex) throws JSONException, InterruptedException {
|
||||||
/* 章节内容没有缓存在本地
|
/* 章节内容没有缓存在本地
|
||||||
|
@ -1797,6 +1827,11 @@ private void loadChaptContent(final int chapterIndex) throws JSONException, Inte
|
||||||
JSONObject siteJson = new JSONObject();
|
JSONObject siteJson = new JSONObject();
|
||||||
siteJson.put("chapterContentRegex", mSiteRule.getChapterContentRegex());
|
siteJson.put("chapterContentRegex", mSiteRule.getChapterContentRegex());
|
||||||
siteJson.put("chapterContentDumpRegex", mSiteRule.getChapterContentDumpRegex());
|
siteJson.put("chapterContentDumpRegex", mSiteRule.getChapterContentDumpRegex());
|
||||||
|
|
||||||
|
if(!isHttpOrHttps(url)){
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
Request request = getTagRequest(url, refUrl,-1);
|
Request request = getTagRequest(url, refUrl,-1);
|
||||||
|
|
||||||
|
|
||||||
|
@ -1921,13 +1956,14 @@ private void loadChaptContent(final int chapterIndex) throws JSONException, Inte
|
||||||
*/
|
*/
|
||||||
private Request getTagRequest(String url, String refUrl ,int maxAge) {
|
private Request getTagRequest(String url, String refUrl ,int maxAge) {
|
||||||
|
|
||||||
|
try {
|
||||||
Request.Builder builder = new Request.Builder()
|
Request.Builder builder = new Request.Builder()
|
||||||
.tag(mNovel.getNovelId()) //标记 请求的tag,切换小说或离开小说界面(BookActivity) 时 取消未执行完毕的 此tag的所有请求
|
.tag(mNovel.getNovelId()) //标记 请求的tag,切换小说或离开小说界面(BookActivity) 时 取消未执行完毕的 此tag的所有请求
|
||||||
.url(url)
|
.url(url)
|
||||||
.removeHeader("Pragma");
|
.removeHeader("Pragma");
|
||||||
|
|
||||||
if(!TextUtils.isEmpty(refUrl)){
|
if (!TextUtils.isEmpty(refUrl)) {
|
||||||
builder.header("Referer",refUrl);
|
builder.header("Referer", refUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < mSiteRule.getHeaders().length; i += 2) {
|
for (int i = 0; i < mSiteRule.getHeaders().length; i += 2) {
|
||||||
|
@ -1935,21 +1971,24 @@ private void loadChaptContent(final int chapterIndex) throws JSONException, Inte
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mSiteRule.getUserAgents()!=null && mSiteRule.getUserAgents().length>0){
|
if (mSiteRule.getUserAgents() != null && mSiteRule.getUserAgents().length > 0) {
|
||||||
String siteAgent =mSiteRule.getUserAgents()[new Random().nextInt( mSiteRule.getUserAgents().length-1)];
|
String siteAgent = mSiteRule.getUserAgents()[new Random().nextInt(mSiteRule.getUserAgents().length - 1)];
|
||||||
|
|
||||||
Log.d(TAG, "prepare book on getTagRequest:add site user agent " + siteAgent);
|
Log.d(TAG, "prepare book on getTagRequest:add site user agent " + siteAgent);
|
||||||
builder.removeHeader("User-Agent").addHeader("User-Agent",siteAgent ); //加 随机agent
|
builder.removeHeader("User-Agent").addHeader("User-Agent", siteAgent); //加 随机agent
|
||||||
|
|
||||||
}else{
|
} else {
|
||||||
builder.removeHeader("User-Agent").addHeader("User-Agent", HttpMethods.USERAGENT);
|
builder.removeHeader("User-Agent").addHeader("User-Agent", HttpMethods.USERAGENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (maxAge > 0) {
|
if (maxAge > 0) {
|
||||||
builder.header("Cache-Control", "public, max-age=" + maxAge);
|
builder.header("Cache-Control", "public, max-age=" + maxAge);
|
||||||
}
|
}
|
||||||
return builder.build();
|
return builder.build();
|
||||||
|
}catch (Exception er){
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getRequestHeader(Request request) {
|
private String getRequestHeader(Request request) {
|
||||||
|
|
|
@ -22,7 +22,9 @@ import java.util.List;
|
||||||
public class GsonUtil {
|
public class GsonUtil {
|
||||||
|
|
||||||
private static Gson gson = new Gson();
|
private static Gson gson = new Gson();
|
||||||
public static Novel getNovel(String json){
|
|
||||||
|
public static List<String>
|
||||||
|
/*public static Novel getNovel(String json){
|
||||||
Novel nv = new Novel();
|
Novel nv = new Novel();
|
||||||
try {
|
try {
|
||||||
JSONObject jsonObject = new JSONObject(json);
|
JSONObject jsonObject = new JSONObject(json);
|
||||||
|
@ -41,8 +43,7 @@ public class GsonUtil {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
return nv;
|
return nv;
|
||||||
}
|
}*/parserStringBlocks(String result,String blockName ) throws JSONException {
|
||||||
public static List<String> parserStringBlocks(String result,String blockName ) throws JSONException {
|
|
||||||
JSONObject jsonObject = new JSONObject(result);
|
JSONObject jsonObject = new JSONObject(result);
|
||||||
JSONArray array = jsonObject.getJSONArray(blockName);
|
JSONArray array = jsonObject.getJSONArray(blockName);
|
||||||
List<String> lst = new ArrayList<String>();
|
List<String> lst = new ArrayList<String>();
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.novelbook.android.utils;
|
package com.novelbook.android.utils;
|
||||||
|
|
||||||
|
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.novelbook.android.db.Chapter;
|
import com.novelbook.android.db.Chapter;
|
||||||
|
@ -279,6 +280,9 @@ public class NovelParseUtil {
|
||||||
|
|
||||||
|
|
||||||
private static String access(String url,int maxAge, SiteRule siteRule) {
|
private static String access(String url,int maxAge, SiteRule siteRule) {
|
||||||
|
if(TextUtils.isEmpty(url) || !url.toLowerCase().startsWith("http") || !url.toLowerCase().startsWith("https")){
|
||||||
|
return "";
|
||||||
|
}
|
||||||
Request.Builder builder = new Request.Builder()
|
Request.Builder builder = new Request.Builder()
|
||||||
// .tag(mNovel.getNovelId()) //标记 请求的tag,切换小说或离开小说界面(BookActivity) 时 取消未执行完毕的 此tag的所有请求
|
// .tag(mNovel.getNovelId()) //标记 请求的tag,切换小说或离开小说界面(BookActivity) 时 取消未执行完毕的 此tag的所有请求
|
||||||
.url(url)
|
.url(url)
|
||||||
|
|
|
@ -1155,7 +1155,7 @@ private void hideSysUI(){
|
||||||
// Log.d(TAG, strLine);
|
// Log.d(TAG, strLine);
|
||||||
// Log.d(TAG,"最后字符 。。。" +strLine.charAt(strLine.length()-1) + "");
|
// Log.d(TAG,"最后字符 。。。" +strLine.charAt(strLine.length()-1) + "");
|
||||||
lastLine =strLine;
|
lastLine =strLine;
|
||||||
strLine = strLine.replace("<EFBFBD>","");
|
// strLine = strLine.replace("<EFBFBD>","");
|
||||||
|
|
||||||
if(lineNo==trPage.getNativeBannerStartLine()){
|
if(lineNo==trPage.getNativeBannerStartLine()){
|
||||||
if(showAd && mAd!=null){
|
if(showAd && mAd!=null){
|
||||||
|
@ -1165,7 +1165,7 @@ private void hideSysUI(){
|
||||||
// mAd.showNativeBannerInLines(trPage.getNativeBannerHeight(),(int)y);
|
// mAd.showNativeBannerInLines(trPage.getNativeBannerHeight(),(int)y);
|
||||||
}
|
}
|
||||||
y+=trPage.getNativeBannerHeight() +m_fontSize +lineSpace ;
|
y+=trPage.getNativeBannerHeight() +m_fontSize +lineSpace ;
|
||||||
Log.d(TAG, String.format("onDraw showNativeBannerInLines : lineno %s,strline %s ",lineNo,strLine));
|
// Log.d(TAG, String.format("onDraw showNativeBannerInLines : lineno %s,strline %s ",lineNo,strLine));
|
||||||
space = m_fontSize + lineSpace;
|
space = m_fontSize + lineSpace;
|
||||||
// y-=lineSpace;
|
// y-=lineSpace;
|
||||||
if (strLine.length() > 0 && (strLine.charAt(strLine.length() - 1) + "").equals("\n")) {
|
if (strLine.length() > 0 && (strLine.charAt(strLine.length() - 1) + "").equals("\n")) {
|
||||||
|
@ -1197,7 +1197,7 @@ private void hideSysUI(){
|
||||||
// Log.d(TAG,String.format("getNavigationBarSize mHeight is %s ,last line height %s, power %s, %s", //
|
// Log.d(TAG,String.format("getNavigationBarSize mHeight is %s ,last line height %s, power %s, %s", //
|
||||||
// mHeight,y,mHeight - CommonUtil.convertDpToPixel(mContext,10) + mBorderWidth - statusMarginBottom, lastLine));
|
// mHeight,y,mHeight - CommonUtil.convertDpToPixel(mContext,10) + mBorderWidth - statusMarginBottom, lastLine));
|
||||||
// lastLine =lastLine.trim().replace(Constants.BAD_CHAR,"");
|
// lastLine =lastLine.trim().replace(Constants.BAD_CHAR,"");
|
||||||
Log.d(TAG, String.format("onDraw: last line lenth %s,%s, ",lastLine.length() ,lastLine));
|
// Log.d(TAG, String.format("onDraw: last line lenth %s,%s, ",lastLine.length() ,lastLine));
|
||||||
float adHeight = mHeight -y - space -marginHeight-statusMarginBottom;
|
float adHeight = mHeight -y - space -marginHeight-statusMarginBottom;
|
||||||
float adY =y ;//+space;
|
float adY =y ;//+space;
|
||||||
adY= lastLine.length()==0 ?adY-m_fontSize - lineSpace :adY;
|
adY= lastLine.length()==0 ?adY-m_fontSize - lineSpace :adY;
|
||||||
|
@ -1218,7 +1218,7 @@ private void hideSysUI(){
|
||||||
|
|
||||||
|
|
||||||
// showAd((int) adHeight, (int) adY);
|
// showAd((int) adHeight, (int) adY);
|
||||||
Log.d(TAG, String.format("loadBannerAd: AD is requested, adtype %s, adHeight %s, ady %s",mAdType,adHeight,adY));
|
// Log.d(TAG, String.format("loadBannerAd: AD is requested, adtype %s, adHeight %s, ady %s",mAdType,adHeight,adY));
|
||||||
}
|
}
|
||||||
// Log.d(TAG,String.format("ad + statusMarginBottom %s ",200+ statusMarginBottom));
|
// Log.d(TAG,String.format("ad + statusMarginBottom %s ",200+ statusMarginBottom));
|
||||||
// Log.d(TAG,String.format("adHeight %s, adY %s",adHeight,adY));
|
// Log.d(TAG,String.format("adHeight %s, adY %s",adHeight,adY));
|
||||||
|
@ -1245,11 +1245,11 @@ private void hideSysUI(){
|
||||||
c.drawText(strPercent, mWidth - nPercentWidth, botoomY, mBatterryPaint);//x y为坐标值
|
c.drawText(strPercent, mWidth - nPercentWidth, botoomY, mBatterryPaint);//x y为坐标值
|
||||||
c.drawText(date, marginWidth ,botoomY, mBatterryPaint);
|
c.drawText(date, marginWidth ,botoomY, mBatterryPaint);
|
||||||
// 画电池
|
// 画电池
|
||||||
Log.d(TAG, String.format("updateBattery to draw: level1 %s ",level));
|
// Log.d(TAG, String.format("updateBattery to draw: level1 %s ",level));
|
||||||
// level = batteryInfoIntent.getIntExtra( "level" , 0 );
|
// level = batteryInfoIntent.getIntExtra( "level" , 0 );
|
||||||
int scale = batteryInfoIntent.getIntExtra("scale", 100);
|
int scale = batteryInfoIntent.getIntExtra("scale", 100);
|
||||||
mBatteryPercentage = (float) level / scale;
|
mBatteryPercentage = (float) level / scale;
|
||||||
Log.d(TAG, String.format("updateBattery to draw: level2 %s ",level));
|
// Log.d(TAG, String.format("updateBattery to draw: level2 %s ",level));
|
||||||
|
|
||||||
float rect1Left = marginWidth + dateWith + statusMarginBottom;//电池外框left位置
|
float rect1Left = marginWidth + dateWith + statusMarginBottom;//电池外框left位置
|
||||||
//画电池外框
|
//画电池外框
|
||||||
|
@ -1324,11 +1324,11 @@ private void hideSysUI(){
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showAd(){
|
public void showAd(){
|
||||||
Log.d(TAG, String.format("loadBannerAd showAd: mAdType %s ",mAdType ));
|
// Log.d(TAG, String.format("loadBannerAd showAd: mAdType %s ",mAdType ));
|
||||||
if(mStatus == Status.LASTPAGE || mAd==null ||currentPage==null || !Constants.AD_SETTING.isShowAdsense()){
|
if(mStatus == Status.LASTPAGE || mAd==null ||currentPage==null || !Constants.AD_SETTING.isShowAdsense()){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Log.d(TAG, String.format("loadBannerAd showAd: mAdType %s, pageNo %s",mAdType, currentPage.getPageNo()));
|
// Log.d(TAG, String.format("loadBannerAd showAd: mAdType %s, pageNo %s",mAdType, currentPage.getPageNo()));
|
||||||
if(mAdType ==AdTpye.BANNER){
|
if(mAdType ==AdTpye.BANNER){
|
||||||
mAd.showTopBanner(mAdHeight,mAdY);
|
mAd.showTopBanner(mAdHeight,mAdY);
|
||||||
}else if(mAdType == AdTpye.NATIVEINLINES){
|
}else if(mAdType == AdTpye.NATIVEINLINES){
|
||||||
|
@ -1374,7 +1374,7 @@ private void hideSysUI(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.d(TAG, "prepare book prePage: to open prepage: ");
|
// Log.d(TAG, "prepare book prePage: to open prepage: ");
|
||||||
cancelPage = currentPage;
|
cancelPage = currentPage;
|
||||||
if(mBookPageWidget==null){
|
if(mBookPageWidget==null){
|
||||||
return;
|
return;
|
||||||
|
@ -1384,13 +1384,13 @@ private void hideSysUI(){
|
||||||
if(mBookPageWidget==null){
|
if(mBookPageWidget==null){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Log.d(TAG, " prePage() onDraw: mBookPageWidget.getNextPage() ");
|
// Log.d(TAG, " prePage() onDraw: mBookPageWidget.getNextPage() ");
|
||||||
onDraw(mBookPageWidget.getNextPage(),currentPage ,true,true);
|
onDraw(mBookPageWidget.getNextPage(),currentPage ,true,true);
|
||||||
}else{
|
}else{
|
||||||
if(mBookPageWidget==null){
|
if(mBookPageWidget==null){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Log.d(TAG, " prePage() onDraw: mBookPageWidget.getNextPage() ");
|
// Log.d(TAG, " prePage() onDraw: mBookPageWidget.getNextPage() ");
|
||||||
currentPage = getPrePage();
|
currentPage = getPrePage();
|
||||||
|
|
||||||
onDraw(mBookPageWidget.getNextPage(),currentPage ,true,true);
|
onDraw(mBookPageWidget.getNextPage(),currentPage ,true,true);
|
||||||
|
@ -1411,7 +1411,7 @@ private void hideSysUI(){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.d(TAG, "prepare book nextPage:chaptid " +mBookUtil.getChapterNo());
|
// Log.d(TAG, "prepare book nextPage:chaptid " +mBookUtil.getChapterNo());
|
||||||
if (currentPage.getEnd() >= mBookUtil.getChapterLen()) {
|
if (currentPage.getEnd() >= mBookUtil.getChapterLen()) {
|
||||||
Log.d(TAG,"已经是本章最后一页了");
|
Log.d(TAG,"已经是本章最后一页了");
|
||||||
File file =new File( mBookUtil.fileChapterName(currentChapter+1));
|
File file =new File( mBookUtil.fileChapterName(currentChapter+1));
|
||||||
|
@ -1470,9 +1470,9 @@ private void hideSysUI(){
|
||||||
if(mBookPageWidget==null){
|
if(mBookPageWidget==null){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Log.d(TAG, "nextPage() onDraw: mBookPageWidget.getCurPage() ");
|
// Log.d(TAG, "nextPage() onDraw: mBookPageWidget.getCurPage() ");
|
||||||
// onDraw(mBookPageWidget.getCurPage(),currentPage ,true,false);
|
// onDraw(mBookPageWidget.getCurPage(),currentPage ,true,false);
|
||||||
Log.d(TAG, "nextpage:set current bitmap ..ondraw");
|
// Log.d(TAG, "nextpage:set current bitmap ..ondraw");
|
||||||
prePage = currentPage;
|
prePage = currentPage;
|
||||||
currentPage = getNextPage();
|
currentPage = getNextPage();
|
||||||
mLoadingChaptNo=0;
|
mLoadingChaptNo=0;
|
||||||
|
@ -1480,9 +1480,9 @@ private void hideSysUI(){
|
||||||
if(mBookPageWidget==null){
|
if(mBookPageWidget==null){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Log.d(TAG, "nextPage() onDraw: mBookPageWidget.getNextPage() ");
|
// Log.d(TAG, "nextPage() onDraw: mBookPageWidget.getNextPage() ");
|
||||||
onDraw(mBookPageWidget.getNextPage(),currentPage ,true,true);
|
onDraw(mBookPageWidget.getNextPage(),currentPage ,true,true);
|
||||||
Log.d("nextPage","nextPagenext");
|
// Log.d("nextPage","nextPagenext");
|
||||||
|
|
||||||
HashMap<String,String> map = new HashMap<String,String>();
|
HashMap<String,String> map = new HashMap<String,String>();
|
||||||
map.put("novel",bookName);
|
map.put("novel",bookName);
|
||||||
|
@ -1510,18 +1510,19 @@ private void hideSysUI(){
|
||||||
|
|
||||||
public void prepareBook(Novel book){
|
public void prepareBook(Novel book){
|
||||||
|
|
||||||
Log.d(TAG, "prepare book: start prepare book " + book.getName());
|
|
||||||
|
Log.d(TAG, "prepare book: start prepare book " + book.getName());
|
||||||
|
|
||||||
if(getNovel()!=null) {
|
if(getNovel()!=null) {
|
||||||
if (getNovel().getNovelId() != book.getNovelId()) { //取消未上本书完成的web请求,待验证效果
|
if (getNovel().getNovelId() != book.getNovelId()) { //取消未上本书完成的web请求,待验证效果
|
||||||
try {
|
try {
|
||||||
NetUtil.cancelRequest(getNovel().getNovelId());
|
NetUtil.cancelRequest(getNovel().getNovelId());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e(TAG, "prepare book: error on canceling request " + e.getMessage());
|
// Log.e(TAG, "prepare book: error on canceling request " + e.getMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
Log.d(TAG, "prepare book: has been prepared, return.... " + book.getName());
|
// Log.d(TAG, "prepare book: has been prepared, return.... " + book.getName());
|
||||||
if(mBookUtil!=null) {
|
if(mBookUtil!=null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1663,8 +1664,8 @@ private void hideSysUI(){
|
||||||
public TRPage getNextPage(){
|
public TRPage getNextPage(){
|
||||||
|
|
||||||
int nextPageNo =currentPage.getPageNo();
|
int nextPageNo =currentPage.getPageNo();
|
||||||
Log.e(TAG,String.format("prepare book getNextPage() currentChapter %s, chapters().size() %s,currentChaptPages .size() is %s,currentpage pageno is %s"
|
// Log.e(TAG,String.format("prepare book getNextPage() currentChapter %s, chapters().size() %s,currentChaptPages .size() is %s,currentpage pageno is %s"
|
||||||
,currentChapter, getChapters().size(), currentChaptPages.size() , nextPageNo));
|
// ,currentChapter, getChapters().size(), currentChaptPages.size() , nextPageNo));
|
||||||
if(nextPageNo==0){
|
if(nextPageNo==0){
|
||||||
drawStatus();
|
drawStatus();
|
||||||
}
|
}
|
||||||
|
@ -1690,7 +1691,7 @@ private void hideSysUI(){
|
||||||
|
|
||||||
|
|
||||||
int prePageNo =currentPage.getPageNo()-1;
|
int prePageNo =currentPage.getPageNo()-1;
|
||||||
Log.d(TAG,String.format("currentPageno %s,total pagno %s",currentPage.getPageNo(),currentChaptPages.size()));
|
// Log.d(TAG,String.format("currentPageno %s,total pagno %s",currentPage.getPageNo(),currentChaptPages.size()));
|
||||||
|
|
||||||
|
|
||||||
if(prePageNo <=0){
|
if(prePageNo <=0){
|
||||||
|
@ -1726,7 +1727,7 @@ private void hideSysUI(){
|
||||||
if(currentChaptPages.size()==0){
|
if(currentChaptPages.size()==0){
|
||||||
return new TRPage();
|
return new TRPage();
|
||||||
}
|
}
|
||||||
Log.d(TAG, String.format("prepare book getPageForBegin: currentChaptPages count %s, chaptid %s, begin %s ",currentChaptPages.size(),currentChapter,begin));
|
// Log.d(TAG, String.format("prepare book getPageForBegin: currentChaptPages count %s, chaptid %s, begin %s ",currentChaptPages.size(),currentChapter,begin));
|
||||||
for(TRPage page : currentChaptPages)
|
for(TRPage page : currentChaptPages)
|
||||||
{
|
{
|
||||||
if(page.getEnd() >=begin){
|
if(page.getEnd() >=begin){
|
||||||
|
@ -1751,7 +1752,8 @@ private void hideSysUI(){
|
||||||
}
|
}
|
||||||
int adHeight = trpage.getNativeBannerHeight()+trpage.getBannerHeight();
|
int adHeight = trpage.getNativeBannerHeight()+trpage.getBannerHeight();
|
||||||
calculateLineCount(adHeight );
|
calculateLineCount(adHeight );
|
||||||
Log.d(TAG, String.format("getNextChapterPage getNextLines: pageNo %s, adHeight %s, totalLines %s",trpage.getPageNo(),adHeight,mLineCount));
|
// Log.d(TAG, String.format("getNextChapterPage getNextLines: pageNo %s, adHeight %s, totalLines %s",trpage.getPageNo(),adHeight,mLineCount));
|
||||||
|
boolean newParagraph =false;
|
||||||
while (mBookUtil.next(true,chaptId) != -1){
|
while (mBookUtil.next(true,chaptId) != -1){
|
||||||
char word = (char) mBookUtil.next(false,chaptId);
|
char word = (char) mBookUtil.next(false,chaptId);
|
||||||
// Log.d(TAG, String.format(" loadchapt getNextLines(), chaptId %s, word '%s'", chaptId,word ));
|
// Log.d(TAG, String.format(" loadchapt getNextLines(), chaptId %s, word '%s'", chaptId,word ));
|
||||||
|
@ -1761,9 +1763,10 @@ private void hideSysUI(){
|
||||||
//判断是否换行
|
//判断是否换行
|
||||||
if ((word + "" ).equals("\n") ){// if ((word + "" ).equals("\r") && (((char) mBookUtil.next(true)) + "").equals("\n")){
|
if ((word + "" ).equals("\n") ){// if ((word + "" ).equals("\r") && (((char) mBookUtil.next(true)) + "").equals("\n")){
|
||||||
// mBookUtil.next(false);
|
// mBookUtil.next(false);
|
||||||
|
newParagraph =true;
|
||||||
if ( !line.isEmpty()){
|
if ( !line.isEmpty()){
|
||||||
if (showChapTitleOnTopWhenNextPage && lines.size() >0 && mBookUtil.isChapterTitle(line)) {
|
if (showChapTitleOnTopWhenNextPage && lines.size() >0 && mBookUtil.isChapterTitle(line)) {
|
||||||
Log.d(TAG,String.format("title is %s\n,size is %s ,position is %s" ,line,line.length(),mBookUtil.getPosition(chaptId) ));
|
// Log.d(TAG,String.format("title is %s\n,size is %s ,position is %s" ,line,line.length(),mBookUtil.getPosition(chaptId) ));
|
||||||
//isFirstPage =true;
|
//isFirstPage =true;
|
||||||
firstPageLine=1;
|
firstPageLine=1;
|
||||||
break;
|
break;
|
||||||
|
@ -1788,6 +1791,14 @@ private void hideSysUI(){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(newParagraph && line.length()==0) {
|
||||||
|
newParagraph = false;
|
||||||
|
if(!(word+"").equals(Constants.BAD_CHAR)){
|
||||||
|
line += Constants.BAD_CHAR + Constants.BAD_CHAR;
|
||||||
|
widthChar += 2* mPaint.measureText( Constants.BAD_CHAR + "");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
width += widthChar;
|
width += widthChar;
|
||||||
// Log.d(TAG, String.format(" loadchapt getNextLines(),widthChar %s ,width %s,mVisibleWidth %s",widthChar, width ,mVisibleWidth ));
|
// Log.d(TAG, String.format(" loadchapt getNextLines(),widthChar %s ,width %s,mVisibleWidth %s",widthChar, width ,mVisibleWidth ));
|
||||||
|
|
||||||
|
@ -1978,7 +1989,7 @@ private void hideSysUI(){
|
||||||
*/
|
*/
|
||||||
|
|
||||||
currentChapter = mBookUtil.getChapterNo();
|
currentChapter = mBookUtil.getChapterNo();
|
||||||
Log.d(TAG, String.format(" prepare book onDraw chapter after mBookUtil.getChapterNo(),currentChapter %s ",currentChapter ) );
|
Log.d(TAG, String.format(" prepare book onDraw chapter after mBookUtil.getChapterNo(),currentChapter %s ",currentChapter ) );
|
||||||
return currentChapter ;
|
return currentChapter ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1988,9 +1999,9 @@ private void hideSysUI(){
|
||||||
if(mBookPageWidget==null){
|
if(mBookPageWidget==null){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Log.d(TAG, "currentPage onDraw: mBookPageWidget.getCurPage() ");
|
// Log.d(TAG, "currentPage onDraw: mBookPageWidget.getCurPage() ");
|
||||||
onDraw(mBookPageWidget.getCurPage(),currentPage ,updateChapter,false);
|
onDraw(mBookPageWidget.getCurPage(),currentPage ,updateChapter,false);
|
||||||
Log.d(TAG, "currentPage onDraw: mBookPageWidget.getNextPage() ");
|
// Log.d(TAG, "currentPage onDraw: mBookPageWidget.getNextPage() ");
|
||||||
onDraw(mBookPageWidget.getNextPage(),currentPage ,updateChapter,true);
|
onDraw(mBookPageWidget.getNextPage(),currentPage ,updateChapter,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1999,7 +2010,7 @@ private void hideSysUI(){
|
||||||
hideSysUI();
|
hideSysUI();
|
||||||
if (currentPage != null && mBookPageWidget != null && !mBookPageWidget.isRunning()) {
|
if (currentPage != null && mBookPageWidget != null && !mBookPageWidget.isRunning()) {
|
||||||
|
|
||||||
Log.d(TAG, String.format("updateBattery: level old %s, new %s",level,mLevel));
|
// Log.d(TAG, String.format("updateBattery: level old %s, new %s",level,mLevel));
|
||||||
if (level != mLevel) {
|
if (level != mLevel) {
|
||||||
level = mLevel;
|
level = mLevel;
|
||||||
currentPage(false);
|
currentPage(false);
|
||||||
|
|
|
@ -176,7 +176,7 @@ int mPageMode =0;
|
||||||
protected void onDraw(Canvas canvas) {
|
protected void onDraw(Canvas canvas) {
|
||||||
// canvas.drawColor(0xFFAAAAAA);
|
// canvas.drawColor(0xFFAAAAAA);
|
||||||
canvas.drawColor(mBgColor);
|
canvas.drawColor(mBgColor);
|
||||||
Log.e("pagewidget onDraw","isMoveing isNext:" + isNext + " isRuning:" + isRuning);
|
// Log.e("pagewidget onDraw","isMoveing isNext:" + isNext + " isRuning:" + isRuning);
|
||||||
if (isRuning) {
|
if (isRuning) {
|
||||||
mAnimationProvider.drawMove(canvas);
|
mAnimationProvider.drawMove(canvas);
|
||||||
} else {
|
} else {
|
||||||
|
@ -196,7 +196,7 @@ int mPageMode =0;
|
||||||
|
|
||||||
int x = (int)event.getX();
|
int x = (int)event.getX();
|
||||||
int y = (int)event.getY();
|
int y = (int)event.getY();
|
||||||
Log.d(TAG, String.format("onTouchEvent: x %s,y %s ",x,y));
|
// Log.d(TAG, String.format("onTouchEvent: x %s,y %s ",x,y));
|
||||||
mAnimationProvider.setTouchPoint(x,y);
|
mAnimationProvider.setTouchPoint(x,y);
|
||||||
if (event.getAction() == MotionEvent.ACTION_DOWN){ //mAnimationProvider.setCancel(false); https://github.com/PeachBlossom/treader/issues/4
|
if (event.getAction() == MotionEvent.ACTION_DOWN){ //mAnimationProvider.setCancel(false); https://github.com/PeachBlossom/treader/issues/4
|
||||||
downX = (int) event.getX();
|
downX = (int) event.getX();
|
||||||
|
@ -219,7 +219,7 @@ int mPageMode =0;
|
||||||
if (!isMove) {
|
if (!isMove) {
|
||||||
isMove = Math.abs(downX - x) > slop || Math.abs(downY - y) > slop;
|
isMove = Math.abs(downX - x) > slop || Math.abs(downY - y) > slop;
|
||||||
}
|
}
|
||||||
Log.d(TAG, String.format("onTouchEvent:ACTION_MOVE isMove %s, isbusy %s",isMove,PageFactory.busy()));
|
// Log.d(TAG, String.format("onTouchEvent:ACTION_MOVE isMove %s, isbusy %s",isMove,PageFactory.busy()));
|
||||||
if(!PageFactory.busy())
|
if(!PageFactory.busy())
|
||||||
if (isMove){
|
if (isMove){
|
||||||
isMove = true;
|
isMove = true;
|
||||||
|
@ -291,7 +291,7 @@ int mPageMode =0;
|
||||||
}
|
}
|
||||||
}else if (event.getAction() == MotionEvent.ACTION_UP){
|
}else if (event.getAction() == MotionEvent.ACTION_UP){
|
||||||
//Log.e(TAG,"ACTION_UP");
|
//Log.e(TAG,"ACTION_UP");
|
||||||
Log.d(TAG, String.format("onTouchEvent:ACTION_UP isMove %s, isbusy %s",isMove,PageFactory.busy()));
|
// Log.d(TAG, String.format("onTouchEvent:ACTION_UP isMove %s, isbusy %s",isMove,PageFactory.busy()));
|
||||||
if (!isMove || PageFactory.busy()){
|
if (!isMove || PageFactory.busy()){
|
||||||
cancelPage = false;
|
cancelPage = false;
|
||||||
//是否点击了中间
|
//是否点击了中间
|
||||||
|
@ -337,7 +337,7 @@ int mPageMode =0;
|
||||||
if (!noNext) {
|
if (!noNext) {
|
||||||
isRuning = true;
|
isRuning = true;
|
||||||
|
|
||||||
Log.d(TAG, "onTouchEvent: startanimation");
|
// Log.d(TAG, "onTouchEvent: startanimation");
|
||||||
mAnimationProvider.startAnimation(mScroller);
|
mAnimationProvider.startAnimation(mScroller);
|
||||||
mTouchListener.showAdAfterIni();
|
mTouchListener.showAdAfterIni();
|
||||||
this.postInvalidate();
|
this.postInvalidate();
|
||||||
|
|
|
@ -87,7 +87,7 @@ public class SimulationAnimation extends AnimationProvider {
|
||||||
@Override
|
@Override
|
||||||
public void drawMove(Canvas canvas) {
|
public void drawMove(Canvas canvas) {
|
||||||
|
|
||||||
Log.d(TAG, "isMoveing drawMove: ");
|
// Log.d(TAG, "isMoveing drawMove: ");
|
||||||
if (getDirection().equals(Direction.next)) {
|
if (getDirection().equals(Direction.next)) {
|
||||||
calcPoints();
|
calcPoints();
|
||||||
drawCurrentPageArea(canvas, mCurPageBitmap, mPath0);
|
drawCurrentPageArea(canvas, mCurPageBitmap, mPath0);
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:layout_alignParentTop="true"
|
android:layout_alignParentTop="true"
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
android:layout_marginTop="20dp"
|
android:layout_marginTop="30dp"
|
||||||
android:background="@drawable/background_circle"
|
android:background="@drawable/background_circle"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="@string/click_to_skip"
|
android:text="@string/click_to_skip"
|
||||||
|
|
|
@ -14,57 +14,57 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<!-- <LinearLayout
|
<!-- <LinearLayout
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="50dp"
|
|
||||||
android:layout_gravity="bottom"
|
|
||||||
android:layout_weight="0"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:visibility="gone">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="50dp"
|
||||||
android:layout_weight="1" />
|
android:layout_gravity="bottom"
|
||||||
|
|
||||||
<Button
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_weight="0"
|
android:layout_weight="0"
|
||||||
android:background="@drawable/item_selector"
|
android:orientation="horizontal"
|
||||||
android:drawableLeft="@drawable/ic_mood_black_24dp"
|
android:visibility="gone">
|
||||||
android:paddingLeft="5dp"
|
|
||||||
android:text="推荐"
|
|
||||||
|
|
||||||
/>
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginLeft="20dp"
|
android:layout_weight="0"
|
||||||
android:layout_marginRight="20dp"
|
android:background="@drawable/item_selector"
|
||||||
android:layout_weight="0"
|
android:drawableLeft="@drawable/ic_mood_black_24dp"
|
||||||
android:background="@drawable/item_selector"
|
android:paddingLeft="5dp"
|
||||||
android:drawableLeft="@drawable/ic_toys_black_24dp"
|
android:text="推荐"
|
||||||
android:paddingLeft="5dp"
|
|
||||||
android:text="分享" />
|
|
||||||
|
|
||||||
<Button
|
/>
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_weight="0"
|
|
||||||
android:background="@drawable/item_selector"
|
|
||||||
android:drawableLeft="@drawable/ic_sentiment_very_satisfied_black_24dp"
|
|
||||||
android:paddingLeft="5dp"
|
|
||||||
android:text="报错" />
|
|
||||||
|
|
||||||
<TextView
|
<Button
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1" />
|
android:layout_marginLeft="20dp"
|
||||||
|
android:layout_marginRight="20dp"
|
||||||
|
android:layout_weight="0"
|
||||||
|
android:background="@drawable/item_selector"
|
||||||
|
android:drawableLeft="@drawable/ic_toys_black_24dp"
|
||||||
|
android:paddingLeft="5dp"
|
||||||
|
android:text="分享" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_weight="0"
|
||||||
|
android:background="@drawable/item_selector"
|
||||||
|
android:drawableLeft="@drawable/ic_sentiment_very_satisfied_black_24dp"
|
||||||
|
android:paddingLeft="5dp"
|
||||||
|
android:text="报错" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1" />
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>-->
|
</LinearLayout>-->
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout style="@style/llGraySplit" />
|
<LinearLayout style="@style/llGraySplit" />
|
||||||
|
@ -98,32 +98,32 @@
|
||||||
android:text="简介" />
|
android:text="简介" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<com.timqi.collapsibletextview.CollapsibleTextView
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
<com.timqi.collapsibletextview.CollapsibleTextView xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/txtDesc2"
|
android:id="@+id/txtDesc2"
|
||||||
style="@style/TextViewDesc"
|
style="@style/TextViewDesc"
|
||||||
android:padding="5dp"
|
|
||||||
android:layout_marginLeft="20dp"
|
android:layout_marginLeft="20dp"
|
||||||
|
android:padding="5dp"
|
||||||
app:collapsedLines="3"
|
app:collapsedLines="3"
|
||||||
app:collapsedText=" 》》》"
|
app:collapsedText=" 》》》"
|
||||||
app:expandedText=" 《《《"
|
app:expandedText=" 《《《"
|
||||||
app:suffixColor="@color/colorPrimary"
|
app:suffixColor="@color/colorPrimary"
|
||||||
app:suffixTrigger="true"
|
app:suffixTrigger="true"
|
||||||
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:visibility="gone"
|
|
||||||
android:id="@+id/txtDesc22"
|
android:id="@+id/txtDesc22"
|
||||||
style="@style/TextViewDesc"
|
style="@style/TextViewDesc"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="20dp"
|
android:layout_marginLeft="20dp"
|
||||||
android:text="一句话概括了书单的内容" />
|
android:text="一句话概括了书单的内容"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout style="@style/llGraySplit" />
|
<LinearLayout style="@style/llGraySplit" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@ -131,25 +131,23 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:visibility="visible"
|
android:visibility="visible">
|
||||||
>
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="5dp"
|
android:layout_width="5dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/colorAccent"
|
android:background="@color/colorAccent"
|
||||||
android:visibility="gone"
|
android:visibility="gone" />
|
||||||
/>
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/TextViewTitle"
|
style="@style/TextViewTitle"
|
||||||
android:layout_marginTop="5dp"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
android:text="目录" />
|
android:text="目录" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -164,28 +162,29 @@
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="25dp"
|
android:layout_width="25dp"
|
||||||
android:layout_height="25dp"
|
android:layout_height="25dp"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:layout_weight="0"
|
android:layout_marginRight="5dp"
|
||||||
android:layout_marginRight="5dp"
|
android:layout_weight="0"
|
||||||
android:src="@mipmap/directory" />
|
android:src="@mipmap/directory" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/TextViewDesc"
|
style="@style/TextViewDesc"
|
||||||
android:layout_width="20dp"
|
android:layout_width="20dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:text="目录"
|
||||||
android:textSize="11sp"
|
android:textSize="11sp"
|
||||||
android:visibility="gone"
|
android:visibility="gone" />
|
||||||
android:text="目录" />
|
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_marginLeft="5dp"
|
android:layout_marginLeft="5dp"
|
||||||
>
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/txtLatestUpdate"
|
android:id="@+id/txtLatestUpdate"
|
||||||
style="@style/TextViewDesc.small"
|
style="@style/TextViewDesc.small"
|
||||||
|
@ -194,12 +193,13 @@
|
||||||
android:text=""
|
android:text=""
|
||||||
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_marginTop="2dp"
|
|
||||||
android:id="@+id/txtLatestCate"
|
android:id="@+id/txtLatestCate"
|
||||||
style="@style/TextViewDesc"
|
style="@style/TextViewDesc"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="2dp"
|
||||||
android:text=""
|
android:text=""
|
||||||
|
|
||||||
/>
|
/>
|
||||||
|
@ -209,91 +209,95 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
<!--
|
<LinearLayout
|
||||||
<LinearLayout
|
android:layout_width="match_parent"
|
||||||
android:layout_width="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:orientation="horizontal">
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<LinearLayout
|
<TextView
|
||||||
android:layout_width="match_parent"
|
style="@style/TextViewTitle"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:orientation="horizontal">
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="书友评论" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/TextViewTitle"
|
style="@style/TextViewDesc"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_gravity="right"
|
||||||
android:text="书友评论" />
|
android:layout_weight="0"
|
||||||
|
android:gravity="right"
|
||||||
|
android:text="写评论" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/TextViewDesc"
|
style="@style/TextViewDesc"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="right"
|
android:layout_weight="1"
|
||||||
android:layout_weight="0"
|
android:text=" 评论1 " />
|
||||||
android:gravity="right"
|
|
||||||
android:text="写评论" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/TextViewDesc"
|
style="@style/TextViewDesc"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:text=" 评论1 " />
|
android:text=" 评论2 " />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/TextViewDesc"
|
style="@style/TextViewDesc"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:text=" 评论2 " />
|
android:text=" 评论3 " />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView
|
<LinearLayout style="@style/llGraySplit" />
|
||||||
style="@style/TextViewDesc"
|
-->
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:text=" 评论3 " />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout style="@style/llGraySplit" />
|
|
||||||
-->
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/ll_others"
|
android:id="@+id/ll_others"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout style="@style/llGraySplit" />
|
<LinearLayout style="@style/llGraySplit" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tvAuthorMore"
|
android:id="@+id/tvAuthorMore"
|
||||||
style="@style/NovelBlockTitle"
|
style="@style/NovelBlockTitle"
|
||||||
android:layout_marginBottom="5dp"
|
android:layout_marginTop="5dp"
|
||||||
android:layout_marginTop="5dp"
|
android:layout_marginBottom="5dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:text=" 其他作品" />
|
android:text=" 其他作品" />
|
||||||
|
|
||||||
<android.support.v7.widget.RecyclerView
|
<android.support.v7.widget.RecyclerView
|
||||||
android:id="@+id/rvBooklist"
|
android:id="@+id/rvBooklist"
|
||||||
android:divider="#ffff0000"
|
android:layout_width="match_parent"
|
||||||
android:dividerHeight="10dp"
|
android:layout_height="match_parent"
|
||||||
android:layout_width="match_parent"
|
android:divider="#ffff0000"
|
||||||
android:layout_height="match_parent"
|
android:dividerHeight="10dp"
|
||||||
android:nestedScrollingEnabled="false"
|
android:nestedScrollingEnabled="false"
|
||||||
android:paddingBottom="2dp"
|
android:paddingBottom="2dp" />
|
||||||
/>
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_marginTop="1dp"
|
|
||||||
android:layout_marginBottom="1dp"
|
|
||||||
style="@style/frmBannerContainer"
|
|
||||||
android:layout_height="@dimen/nativeBannerHeight"
|
|
||||||
android:id="@+id/banner_container"/>
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/banner_container"
|
||||||
|
style="@style/frmBannerContainer"
|
||||||
|
android:layout_height="@dimen/nativeBannerHeight"
|
||||||
|
android:layout_marginTop="1dp"
|
||||||
|
android:layout_marginBottom="1dp" />
|
||||||
|
|
||||||
<LinearLayout style="@style/llGraySplit" />
|
<LinearLayout style="@style/llGraySplit" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -303,22 +307,22 @@
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tvTonglei"
|
android:id="@+id/tvTonglei"
|
||||||
style="@style/NovelBlockTitle"
|
style="@style/NovelBlockTitle"
|
||||||
android:layout_marginBottom="5dp"
|
|
||||||
android:layout_marginTop="5dp"
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:text="同类推荐" />
|
android:text="同类推荐" />
|
||||||
|
|
||||||
<android.support.v7.widget.RecyclerView
|
<android.support.v7.widget.RecyclerView
|
||||||
android:id="@+id/rvBooklistRelated"
|
android:id="@+id/rvBooklistRelated"
|
||||||
android:divider="#ffff0000"
|
|
||||||
android:dividerHeight="10dp"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
android:divider="#ffff0000"
|
||||||
|
android:dividerHeight="10dp"
|
||||||
android:nestedScrollingEnabled="false"
|
android:nestedScrollingEnabled="false"
|
||||||
android:paddingBottom="50dp"
|
android:paddingBottom="50dp" />
|
||||||
/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout style="@style/llGraySplit" />
|
<LinearLayout style="@style/llGraySplit" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
|
@ -8,81 +8,39 @@
|
||||||
</facet>
|
</facet>
|
||||||
<facet type="android" name="Android">
|
<facet type="android" name="Android">
|
||||||
<configuration>
|
<configuration>
|
||||||
<option name="SELECTED_BUILD_VARIANT" value="gDebug" />
|
<option name="SELECTED_BUILD_VARIANT" value="debug" />
|
||||||
<option name="ASSEMBLE_TASK_NAME" value="assembleGDebug" />
|
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
|
||||||
<option name="COMPILE_JAVA_TASK_NAME" value="compileGDebugSources" />
|
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
|
||||||
<afterSyncTasks>
|
<afterSyncTasks>
|
||||||
<task>generateGDebugSources</task>
|
<task>generateDebugSources</task>
|
||||||
</afterSyncTasks>
|
</afterSyncTasks>
|
||||||
<option name="ALLOW_USER_CONFIGURATION" value="false" />
|
<option name="ALLOW_USER_CONFIGURATION" value="false" />
|
||||||
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
|
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
|
||||||
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
|
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
|
||||||
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/src/debug/res;file://$MODULE_DIR$/build/generated/res/resValues/g/debug" />
|
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/src/debug/res;file://$MODULE_DIR$/build/generated/res/resValues/debug" />
|
||||||
<option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="" />
|
<option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="" />
|
||||||
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
|
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
|
||||||
</configuration>
|
</configuration>
|
||||||
</facet>
|
</facet>
|
||||||
</component>
|
</component>
|
||||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||||
<output url="file://$MODULE_DIR$/build/intermediates/javac/gDebug/compileGDebugJavaWithJavac/classes" />
|
<output url="file://$MODULE_DIR$/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" />
|
||||||
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/gDebugUnitTest/compileGDebugUnitTestJavaWithJavac/classes" />
|
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" />
|
||||||
<exclude-output />
|
<exclude-output />
|
||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/g/debug" isTestSource="false" generated="true" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/gDebug/compileGDebugAidl/out" isTestSource="false" generated="true" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/g/debug" isTestSource="false" generated="true" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/gDebug/compileGDebugRenderscript/out" isTestSource="false" generated="true" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/g/debug" type="java-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/g/debug" type="java-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/gDebug/res" type="java-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/gDebug/resources" type="java-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/gDebug/assets" type="java-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/gDebug/aidl" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/gDebug/java" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/gDebug/rs" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/gDebug/shaders" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/g/debug" isTestSource="true" generated="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/gDebugAndroidTest/compileGDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/g/debug" isTestSource="true" generated="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/gDebugAndroidTest/compileGDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/g/debug" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/g/debug" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/res" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/resources" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/assets" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/aidl" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/java" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/rs" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/shaders" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/g/debug" isTestSource="true" generated="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/res" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/resources" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/assets" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/aidl" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/java" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/rs" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/shaders" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/g/res" type="java-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/g/resources" type="java-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/g/assets" type="java-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/g/aidl" isTestSource="false" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/g/java" isTestSource="false" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/g/rs" isTestSource="false" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/g/shaders" isTestSource="false" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/res" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/resources" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/assets" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/aidl" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/java" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/rs" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/shaders" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testG/res" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testG/resources" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testG/assets" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testG/aidl" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testG/java" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testG/rs" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/testG/shaders" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
|
||||||
|
@ -130,17 +88,25 @@
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/build-info" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundle_manifest" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundle_manifest" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check_manifest_result" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check_manifest_result" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/compatible_screen_manifest" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/compatible_screen_manifest" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/duplicate_classes_check" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/duplicate_classes_check" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-apk" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_app_manifest" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_app_manifest" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_app_info_output_file" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_main_apk_resources" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_split_apk_resources" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_aapt_derived_proguard_rules" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_aapt_derived_proguard_rules" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_main_dex_list" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_main_dex_list" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged-not-compiled-resources" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_jni_libs" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_jni_libs" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" />
|
||||||
|
@ -148,17 +114,16 @@
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/metadata_feature_manifest" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/metadata_feature_manifest" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/processed_res" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/processed_res" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-files" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-rules" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res_stripped" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/resources" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shader_assets" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shader_assets" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/signing_config" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/signing_config" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/validate_signing_config" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/validate_signing_config" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
|
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/reports" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
|
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
|
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
|
||||||
|
|
Loading…
Reference in New Issue