修正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,30 +249,48 @@ 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,13 +1971,13 @@ 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); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | @ -1949,7 +1985,10 @@ private void loadChaptContent(final int chapterIndex) throws JSONException, Inte | ||||||
|             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,6 +1510,7 @@ 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) { | ||||||
|  | @ -1517,11 +1518,11 @@ private void hideSysUI(){ | ||||||
|                 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 )); | ||||||
| 
 | 
 | ||||||
|  | @ -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" | ||||||
|  |  | ||||||
|  | @ -98,12 +98,12 @@ | ||||||
|                     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="   《《《" | ||||||
|  | @ -111,19 +111,19 @@ | ||||||
|                 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 | ||||||
|  | @ -135,21 +135,19 @@ | ||||||
|                 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> | ||||||
|  | @ -167,25 +165,26 @@ | ||||||
|                     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,7 +209,6 @@ | ||||||
|         </LinearLayout> |         </LinearLayout> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|         <!-- |         <!-- | ||||||
|          <LinearLayout |          <LinearLayout | ||||||
|              android:layout_width="match_parent" |              android:layout_width="match_parent" | ||||||
|  | @ -268,32 +267,37 @@ | ||||||
|             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: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="2dp" |                 android:paddingBottom="2dp" /> | ||||||
|             /> | 
 | ||||||
|  |         </LinearLayout> | ||||||
|  | 
 | ||||||
|         <FrameLayout |         <FrameLayout | ||||||
|                 android:layout_marginTop="1dp" |             android:id="@+id/banner_container" | ||||||
|                 android:layout_marginBottom="1dp" |  | ||||||
|             style="@style/frmBannerContainer" |             style="@style/frmBannerContainer" | ||||||
|             android:layout_height="@dimen/nativeBannerHeight" |             android:layout_height="@dimen/nativeBannerHeight" | ||||||
|                 android:id="@+id/banner_container"/> |             android:layout_marginTop="1dp" | ||||||
|         </LinearLayout> |             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