add toutiao ad
|
@ -31,7 +31,7 @@ android {
|
||||||
|
|
||||||
multiDexEnabled true //突破65535
|
multiDexEnabled true //突破65535
|
||||||
manifestPlaceholders = [UMENG_CHANNEL_CALUE: "umeng"] //默认为uMeng
|
manifestPlaceholders = [UMENG_CHANNEL_CALUE: "umeng"] //默认为uMeng
|
||||||
// flavorDimensions "default" //debug时注销
|
// flavorDimensions "default" //debug时注销
|
||||||
}
|
}
|
||||||
buildTypes {
|
buildTypes {
|
||||||
debug {
|
debug {
|
||||||
|
@ -39,6 +39,9 @@ android {
|
||||||
buildConfigField "boolean", "LOG_DEBUG", "true"
|
buildConfigField "boolean", "LOG_DEBUG", "true"
|
||||||
buildConfigField "String", "MAIN_HOST", '"http://xiaoshuofenxiang.com/api/"'
|
buildConfigField "String", "MAIN_HOST", '"http://xiaoshuofenxiang.com/api/"'
|
||||||
buildConfigField "String", "API_HOST", '"{\\"master\\":[\\"http:\\\\/\\\\/g.xiaoshuofenxiang.com\\"],\\"page\\":[\\"http:\\\\/\\\\/p.xiaoshuofenxiang.com\\"],\\"report\\":[\\"http:\\\\/\\\\/r.xiaoshuofenxiang.com\\"],\\"search\\":[\\"http:\\\\/\\\\/s.xiaoshuofenxiang.com\\"],\\"novel\\":[\\"http:\\\\/\\\\/n.xiaoshuofenxiang.com\\"],\\"novelsbydot\\":[\\"http:\\\\/\\\\/nbd.xiaoshuofenxiang.com\\"],\\"user\\":[\\"http:\\\\/\\\\/u.xiaoshuofenxiang.com\\"]}"'
|
buildConfigField "String", "API_HOST", '"{\\"master\\":[\\"http:\\\\/\\\\/g.xiaoshuofenxiang.com\\"],\\"page\\":[\\"http:\\\\/\\\\/p.xiaoshuofenxiang.com\\"],\\"report\\":[\\"http:\\\\/\\\\/r.xiaoshuofenxiang.com\\"],\\"search\\":[\\"http:\\\\/\\\\/s.xiaoshuofenxiang.com\\"],\\"novel\\":[\\"http:\\\\/\\\\/n.xiaoshuofenxiang.com\\"],\\"novelsbydot\\":[\\"http:\\\\/\\\\/nbd.xiaoshuofenxiang.com\\"],\\"user\\":[\\"http:\\\\/\\\\/u.xiaoshuofenxiang.com\\"]}"'
|
||||||
|
buildConfigField "String","AD_SLOT_TOUTIAO_SPLASH_ID",'"819267134"'
|
||||||
|
buildConfigField "String","AD_SLOT_TOUTIAO_BANNER_ID",'"919267016"'
|
||||||
|
buildConfigField "String","AD_SLOT_TOUTIAO_BANNER_NATIVE_ID",'"919267816"'
|
||||||
// buildConfigField "String", "API_HOST", '""'
|
// buildConfigField "String", "API_HOST", '""'
|
||||||
versionNameSuffix "-debug"
|
versionNameSuffix "-debug"
|
||||||
minifyEnabled false
|
minifyEnabled false
|
||||||
|
@ -56,7 +59,8 @@ android {
|
||||||
// 移除无用的resource文件
|
// 移除无用的resource文件
|
||||||
shrinkResources true
|
shrinkResources true
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||||
/* 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")) {
|
||||||
|
@ -73,6 +77,30 @@ android {
|
||||||
//渠道
|
//渠道
|
||||||
/* productFlavors {
|
/* productFlavors {
|
||||||
// googleplay {}
|
// googleplay {}
|
||||||
|
kuan {
|
||||||
|
applicationId "com.novelbook.android"
|
||||||
|
versionName "v-kuan-1.0"
|
||||||
|
buildConfigField "String", "MAIN_HOST", '"http://xiaoshuofenxiang.com/api/"'
|
||||||
|
buildConfigField "String", "API_HOST", '"{\\"master\\":[\\"http:\\\\/\\\\/g.xiaoshuofenxiang.com\\"],\\"page\\":[\\"http:\\\\/\\\\/p.xiaoshuofenxiang.com\\"],\\"report\\":[\\"http:\\\\/\\\\/r.xiaoshuofenxiang.com\\"],\\"search\\":[\\"http:\\\\/\\\\/s.xiaoshuofenxiang.com\\"],\\"novel\\":[\\"http:\\\\/\\\\/n.xiaoshuofenxiang.com\\"],\\"novelsbydot\\":[\\"http:\\\\/\\\\/nbd.xiaoshuofenxiang.com\\"],\\"user\\":[\\"http:\\\\/\\\\/u.xiaoshuofenxiang.com\\"]}"'
|
||||||
|
//buildConfigField "String", "API_HOST", '""'
|
||||||
|
buildConfigField "String", "CHANNEL",'"kuan"'
|
||||||
|
}
|
||||||
|
xiaomi {
|
||||||
|
applicationId "com.novelbook.android"
|
||||||
|
versionName "v-xiaomi-1.0"
|
||||||
|
buildConfigField "String", "MAIN_HOST", '"http://xiaoshuofenxiang.com/api/"'
|
||||||
|
buildConfigField "String", "API_HOST", '"{\\"master\\":[\\"http:\\\\/\\\\/g.xiaoshuofenxiang.com\\"],\\"page\\":[\\"http:\\\\/\\\\/p.xiaoshuofenxiang.com\\"],\\"report\\":[\\"http:\\\\/\\\\/r.xiaoshuofenxiang.com\\"],\\"search\\":[\\"http:\\\\/\\\\/s.xiaoshuofenxiang.com\\"],\\"novel\\":[\\"http:\\\\/\\\\/n.xiaoshuofenxiang.com\\"],\\"novelsbydot\\":[\\"http:\\\\/\\\\/nbd.xiaoshuofenxiang.com\\"],\\"user\\":[\\"http:\\\\/\\\\/u.xiaoshuofenxiang.com\\"]}"'
|
||||||
|
//buildConfigField "String", "API_HOST", '""'
|
||||||
|
buildConfigField "String", "CHANNEL",'"xiaomi"'
|
||||||
|
}
|
||||||
|
qq {
|
||||||
|
applicationId "com.novelbook.android.qq"
|
||||||
|
versionName "v-qq-1.0"
|
||||||
|
buildConfigField "String", "MAIN_HOST", '"http://xiaoshuofenxiang.com/api/"'
|
||||||
|
buildConfigField "String", "API_HOST", '"{\\"master\\":[\\"http:\\\\/\\\\/g.xiaoshuofenxiang.com\\"],\\"page\\":[\\"http:\\\\/\\\\/p.xiaoshuofenxiang.com\\"],\\"report\\":[\\"http:\\\\/\\\\/r.xiaoshuofenxiang.com\\"],\\"search\\":[\\"http:\\\\/\\\\/s.xiaoshuofenxiang.com\\"],\\"novel\\":[\\"http:\\\\/\\\\/n.xiaoshuofenxiang.com\\"],\\"novelsbydot\\":[\\"http:\\\\/\\\\/nbd.xiaoshuofenxiang.com\\"],\\"user\\":[\\"http:\\\\/\\\\/u.xiaoshuofenxiang.com\\"]}"'
|
||||||
|
//buildConfigField "String", "API_HOST", '""'
|
||||||
|
|
||||||
|
}
|
||||||
qxs {
|
qxs {
|
||||||
applicationId "com.novelbook.android.qxs"
|
applicationId "com.novelbook.android.qxs"
|
||||||
versionName "v-qxs-5.0"
|
versionName "v-qxs-5.0"
|
||||||
|
@ -176,4 +204,7 @@ dependencies {
|
||||||
|
|
||||||
implementation 'q.rorbin:VerticalTabLayout:1.2.5'
|
implementation 'q.rorbin:VerticalTabLayout:1.2.5'
|
||||||
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.16'
|
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.16'
|
||||||
|
|
||||||
|
implementation(name: 'open_ad_sdk', ext:'aar')
|
||||||
|
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.6'
|
||||||
}
|
}
|
||||||
|
|
|
@ -261,17 +261,22 @@
|
||||||
void *(**On*Listener);
|
void *(**On*Listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
# -assumenosideeffects class android.util.Log {
|
-assumenosideeffects class android.util.Log {
|
||||||
# public static boolean isLoggable(java.lang.String,int);
|
public static boolean isLoggable(java.lang.String,int);
|
||||||
# public static int v(...);
|
public static int v(...);
|
||||||
# public static int i(...);
|
public static int i(...);
|
||||||
# public static int w(...);
|
public static int w(...);
|
||||||
# public static int d(...);
|
public static int d(...);
|
||||||
# public static int e(...);
|
public static int e(...);
|
||||||
# }
|
}
|
||||||
|
|
||||||
|
|
||||||
# 嵌入广点通sdk时必须添加
|
# 嵌入广点通sdk时必须添加
|
||||||
-keep class com.qq.e.** {
|
-keep class com.qq.e.** {
|
||||||
public protected *;
|
public protected *;
|
||||||
}
|
}
|
||||||
|
#穿山甲广告
|
||||||
|
-keep class com.bytedance.sdk.openadsdk.** { *; }
|
||||||
|
-keep class com.androidquery.callback.** {*;}
|
||||||
|
-keep public interface com.bytedance.sdk.openadsdk.downloadnew.** {*;}
|
||||||
|
-keep class com.ss.sys.ces.* {*;}
|
|
@ -9,6 +9,9 @@
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||||
|
<!-- chanshanjia-->
|
||||||
|
<uses-permission android:name="android.permission.GET_TASKS"/>
|
||||||
|
<!--<uses-permission android:name="android.permission.WAKE_LOCK" />-->
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".MyApp"
|
android:name=".MyApp"
|
||||||
|
@ -26,71 +29,81 @@
|
||||||
android:label="@string/title_activity_cate_books"
|
android:label="@string/title_activity_cate_books"
|
||||||
android:launchMode="singleTask"
|
android:launchMode="singleTask"
|
||||||
android:parentActivityName=".activity_cates"
|
android:parentActivityName=".activity_cates"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/ToolBarTheme.NoActionBar" />
|
android:theme="@style/ToolBarTheme.NoActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".Activity_Search"
|
android:name=".Activity_Search"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
android:label="@string/title_activity_cates"
|
android:label="@string/title_activity_cates"
|
||||||
android:launchMode="singleTask"
|
android:launchMode="singleTask"
|
||||||
android:parentActivityName=".Main2Activity"
|
android:parentActivityName=".Main2Activity"
|
||||||
android:theme="@style/ToolBarTheme.NoActionBar" />
|
android:theme="@style/ToolBarTheme.NoActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".Activity_paihangbang"
|
android:name=".Activity_paihangbang"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
android:label="@string/title_activity_paihangbang"
|
android:label="@string/title_activity_paihangbang"
|
||||||
android:parentActivityName=".Main2Activity"
|
android:parentActivityName=".Main2Activity"
|
||||||
android:theme="@style/ToolBarTheme.NoActionBar" />
|
android:theme="@style/ToolBarTheme.NoActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".Activity_ChgSource"
|
android:name=".Activity_ChgSource"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
android:label="@string/title_Activity_ChgSource" />
|
android:label="@string/title_Activity_ChgSource" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".BookActivity"
|
android:name=".BookActivity"
|
||||||
android:label="@string/title_activity_book"
|
android:label="@string/title_activity_book"
|
||||||
android:launchMode="singleTask"
|
android:screenOrientation="portrait"
|
||||||
|
android:launchMode="standard"
|
||||||
android:theme="@style/ToolBarTheme.NoActionBar" />
|
android:theme="@style/ToolBarTheme.NoActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".ReadActivity"
|
android:name=".ReadActivity"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
android:launchMode="singleTask"
|
android:launchMode="singleTask"
|
||||||
android:theme="@style/ToolBarTheme.NoActionBar" />
|
android:theme="@style/ToolBarTheme.NoActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".Main2Activity"
|
android:name=".Main2Activity"
|
||||||
|
|
||||||
android:launchMode="singleTop"
|
android:launchMode="singleTop"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/ToolBarTheme.NoActionBar">
|
android:theme="@style/ToolBarTheme.NoActionBar">
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.intent.action.MAIN" />
|
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".FileActivity"
|
android:name=".FileActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:theme="@style/ToolBarTheme.NoActionBar" />
|
android:theme="@style/ToolBarTheme.NoActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".MarkActivity"
|
android:name=".MarkActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:theme="@style/ToolBarTheme.NoActionBar" />
|
android:theme="@style/ToolBarTheme.NoActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".filechooser.FileChooserActivity"
|
android:name=".filechooser.FileChooserActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:theme="@style/ToolBarTheme.NoActionBar" />
|
android:theme="@style/ToolBarTheme.NoActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".Activity_cache"
|
android:name=".Activity_cache"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
android:label="@string/title_download"
|
android:label="@string/title_download"
|
||||||
android:theme="@style/ToolBarTheme.NoActionBar" />
|
android:theme="@style/ToolBarTheme.NoActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".AD.AdvertisementViewActivity"
|
android:name=".AD.AdvertisementViewActivity"
|
||||||
android:label="@string/title_download"
|
android:screenOrientation="portrait"
|
||||||
|
android:label="@string/title_ad"
|
||||||
android:theme="@style/ToolBarTheme.NoActionBar" />
|
android:theme="@style/ToolBarTheme.NoActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".ActivitySetup"
|
android:name=".ActivitySetup"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
android:label="@string/title_setup"
|
android:label="@string/title_setup"
|
||||||
android:theme="@style/ToolBarTheme.NoActionBar" />
|
android:theme="@style/ToolBarTheme.NoActionBar" />
|
||||||
|
|
||||||
<service
|
<service
|
||||||
android:name=".service.ServiceDownload"
|
android:name=".service.ServiceDownload"
|
||||||
android:exported="false" /> <!-- qq ad -->
|
android:exported="false" />
|
||||||
<service
|
<!-- qq ad -->
|
||||||
|
<!-- <service
|
||||||
android:name="com.qq.e.comm.DownloadService"
|
android:name="com.qq.e.comm.DownloadService"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
|
|
||||||
|
@ -108,7 +121,7 @@
|
||||||
|
|
||||||
<uses-library
|
<uses-library
|
||||||
android:name="org.apache.http.legacy"
|
android:name="org.apache.http.legacy"
|
||||||
android:required="false" />
|
android:required="false" />-->
|
||||||
|
|
||||||
<provider
|
<provider
|
||||||
android:name="android.support.v4.content.FileProvider"
|
android:name="android.support.v4.content.FileProvider"
|
||||||
|
@ -119,6 +132,38 @@
|
||||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||||
android:resource="@xml/gdt_file_path" />
|
android:resource="@xml/gdt_file_path" />
|
||||||
</provider> <!-- qq ad end -->
|
</provider> <!-- qq ad end -->
|
||||||
|
|
||||||
|
<!-- chuanshanjia ad -->
|
||||||
|
<activity
|
||||||
|
android:name=".AD.toutiao.SplashActivity"
|
||||||
|
android:configChanges="keyboard|orientation|screenSize"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:theme="@style/Theme.Splash">
|
||||||
|
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
|
||||||
|
<uses-library
|
||||||
|
android:name="org.apache.http.legacy"
|
||||||
|
android:required="false" />
|
||||||
|
|
||||||
|
<provider
|
||||||
|
android:name="com.bytedance.sdk.openadsdk.TTFileProvider"
|
||||||
|
android:authorities="${applicationId}.TTFileProvider"
|
||||||
|
android:exported="false"
|
||||||
|
android:grantUriPermissions="true">
|
||||||
|
<meta-data
|
||||||
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||||
|
android:resource="@xml/file_paths" />
|
||||||
|
</provider>
|
||||||
|
<provider
|
||||||
|
android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider"
|
||||||
|
android:authorities="${applicationId}.TTMultiProvider"
|
||||||
|
android:exported="false" />
|
||||||
|
<!-- chuanshanjia ad end-->
|
||||||
<!--
|
<!--
|
||||||
<provider
|
<provider
|
||||||
android:name="android.support.v4.content.FileProvider"
|
android:name="android.support.v4.content.FileProvider"
|
||||||
|
@ -134,8 +179,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}" />-->
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
|
@ -47,7 +47,7 @@ public class Activity_ChgSource extends Activity_base {
|
||||||
PageFactory pageFactory;
|
PageFactory pageFactory;
|
||||||
boolean isFromCate;
|
boolean isFromCate;
|
||||||
List<Site> mSites;
|
List<Site> mSites;
|
||||||
|
SiteAdapter mAdapter;
|
||||||
@Override
|
@Override
|
||||||
public int getLayoutRes() {
|
public int getLayoutRes() {
|
||||||
return R.layout.activity_chgsource;
|
return R.layout.activity_chgsource;
|
||||||
|
@ -80,9 +80,30 @@ public class Activity_ChgSource extends Activity_base {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void initData() {
|
protected void initData() {
|
||||||
|
|
||||||
|
showProgressDialog(false,"正在加载源网站列表");
|
||||||
|
mSites = new ArrayList<Site>();
|
||||||
pageFactory =PageFactory.getInstance(getApplicationContext());
|
pageFactory =PageFactory.getInstance(getApplicationContext());
|
||||||
mSites = new ArrayList<Site>(Arrays.asList(pageFactory.getNovelSites().getSites()));
|
new Thread() {
|
||||||
SiteAdapter mAdapter = new SiteAdapter(this, mSites, R.layout.recycle_list_one_item, new OnItemClickListener() {
|
@Override
|
||||||
|
public void run() {
|
||||||
|
super.run();
|
||||||
|
while(pageFactory.getNovelSites()==null){
|
||||||
|
try {
|
||||||
|
Thread.sleep(100);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mSites = new ArrayList<Site>(Arrays.asList(pageFactory.getNovelSites().getSites()));
|
||||||
|
handler.sendEmptyMessage(1);
|
||||||
|
}}.start();;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mAdapter = new SiteAdapter(this, mSites, R.layout.recycle_list_one_item, new OnItemClickListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemClick(View view, int position) {
|
public void onItemClick(View view, int position) {
|
||||||
|
@ -111,7 +132,7 @@ public class Activity_ChgSource extends Activity_base {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fillData() {
|
public void fillData() {
|
||||||
|
mAdapter.setData(mSites);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface OnItemClickListener
|
interface OnItemClickListener
|
||||||
|
@ -229,6 +250,11 @@ public class Activity_ChgSource extends Activity_base {
|
||||||
notifyItemRemoved(position);
|
notifyItemRemoved(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setData(List<Site> mSites) {
|
||||||
|
mDatas = mSites;
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
public class SiteViewHolder extends RecyclerView.ViewHolder {
|
public class SiteViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
@BindView(R.id.tvText)
|
@BindView(R.id.tvText)
|
||||||
|
|
|
@ -14,14 +14,30 @@ import android.support.v4.content.ContextCompat;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.androidquery.callback.AQuery2;
|
||||||
|
import com.androidquery.callback.ImageOptions;
|
||||||
|
import com.bytedance.sdk.openadsdk.AdSlot;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAdConstant;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAdDislike;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAdNative;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAppDownloadListener;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTBannerAd;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTImage;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTNativeAd;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
import com.novelbook.android.AD.toutiao.TTAdManagerHolder;
|
||||||
|
import com.novelbook.android.AD.toutiao.TToast;
|
||||||
import com.novelbook.android.db.Novel;
|
import com.novelbook.android.db.Novel;
|
||||||
import com.novelbook.android.netsubscribe.MovieSubscribe;
|
import com.novelbook.android.netsubscribe.MovieSubscribe;
|
||||||
import com.novelbook.android.netutils.NetUtil;
|
import com.novelbook.android.netutils.NetUtil;
|
||||||
|
@ -29,6 +45,7 @@ import com.novelbook.android.netutils.OnSuccessAndFaultListener;
|
||||||
import com.novelbook.android.netutils.OnSuccessAndFaultSub;
|
import com.novelbook.android.netutils.OnSuccessAndFaultSub;
|
||||||
import com.novelbook.android.upgrade.UpdateManager;
|
import com.novelbook.android.upgrade.UpdateManager;
|
||||||
import com.novelbook.android.utils.CommonUtil;
|
import com.novelbook.android.utils.CommonUtil;
|
||||||
|
import com.novelbook.android.utils.Constants;
|
||||||
import com.novelbook.android.utils.ImageUtil;
|
import com.novelbook.android.utils.ImageUtil;
|
||||||
import com.novelbook.android.utils.MyImageLoader;
|
import com.novelbook.android.utils.MyImageLoader;
|
||||||
import com.novelbook.android.utils.OnItemClickListener;
|
import com.novelbook.android.utils.OnItemClickListener;
|
||||||
|
@ -42,6 +59,7 @@ import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
|
||||||
public abstract class Activity_base extends AppCompatActivity {
|
public abstract class Activity_base extends AppCompatActivity {
|
||||||
|
private static String TAG ="Activity_base";
|
||||||
private ProgressDialog mProgressDialog;
|
private ProgressDialog mProgressDialog;
|
||||||
private MyApp application;
|
private MyApp application;
|
||||||
private Activity_base oContext;
|
private Activity_base oContext;
|
||||||
|
@ -50,6 +68,9 @@ public abstract class Activity_base extends AppCompatActivity {
|
||||||
@BindView(R.id.toolbar)
|
@BindView(R.id.toolbar)
|
||||||
Toolbar toolbar;
|
Toolbar toolbar;
|
||||||
@Nullable
|
@Nullable
|
||||||
|
@BindView(R.id.banner_container)
|
||||||
|
FrameLayout mBannerContainer;
|
||||||
|
@Nullable
|
||||||
@BindView(R.id.recycleViewBookList)
|
@BindView(R.id.recycleViewBookList)
|
||||||
RecyclerView rvshudan;
|
RecyclerView rvshudan;
|
||||||
void showBook(String bookName) { //show paihangbang activity
|
void showBook(String bookName) { //show paihangbang activity
|
||||||
|
@ -80,6 +101,8 @@ public abstract class Activity_base extends AppCompatActivity {
|
||||||
ButterKnife.bind(this);
|
ButterKnife.bind(this);
|
||||||
setupToolbar();
|
setupToolbar();
|
||||||
// 初始化View注入
|
// 初始化View注入
|
||||||
|
|
||||||
|
initAD_TouTiao();
|
||||||
setTitle();
|
setTitle();
|
||||||
initData();
|
initData();
|
||||||
initViews();
|
initViews();
|
||||||
|
@ -108,7 +131,7 @@ public abstract class Activity_base extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
protected void closeCurrentActitivty(){
|
protected void closeCurrentActitivty(){
|
||||||
if( this instanceof BookActivity ) {
|
if( this instanceof BookActivity ) {
|
||||||
return;
|
// return;
|
||||||
}
|
}
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
@ -142,6 +165,14 @@ public abstract class Activity_base extends AppCompatActivity {
|
||||||
return mAdapter;
|
return mAdapter;
|
||||||
}
|
}
|
||||||
void showBookDetail(Novel book) {
|
void showBookDetail(Novel book) {
|
||||||
|
List<Activity> acts = application.getActivityList();
|
||||||
|
for(Activity activity :acts){
|
||||||
|
if(activity instanceof BookActivity){
|
||||||
|
activity.finish();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Intent intent = new Intent(this, BookActivity.class);
|
Intent intent = new Intent(this, BookActivity.class);
|
||||||
intent.putExtra(BookActivity.EXTRA_BOOK,book);
|
intent.putExtra(BookActivity.EXTRA_BOOK,book);
|
||||||
|
@ -291,6 +322,343 @@ public abstract class Activity_base extends AppCompatActivity {
|
||||||
super.finish();
|
super.finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------ 头条 ad -----
|
||||||
|
AQuery2 mAQuery;
|
||||||
|
Button mCreativeButton;
|
||||||
|
TTAdNative mTTAdNative;
|
||||||
|
void initAD_TouTiao(){
|
||||||
|
mTTAdNative = TTAdManagerHolder.get().createAdNative(this);
|
||||||
|
//step3:(可选,强烈建议在合适的时机调用):申请部分权限,如read_phone_state,防止获取不了imei时候,下载类广告没有填充的问题。
|
||||||
|
TTAdManagerHolder.get().requestPermissionIfNecessary(this);
|
||||||
|
this.mAQuery = new AQuery2(this);
|
||||||
|
}
|
||||||
|
//----toutiao ad ----
|
||||||
|
|
||||||
|
public void loadBannerAd(FrameLayout bannerContainer, String codeId, int width, int height) {
|
||||||
|
//step4:创建广告请求参数AdSlot,具体参数含义参考文档
|
||||||
|
|
||||||
|
|
||||||
|
/* if(height >390){
|
||||||
|
width =(int)(height*1.78);
|
||||||
|
if(width > Constants.SCREEN_WIDTH_PIX-50 ){
|
||||||
|
width= Constants.SCREEN_WIDTH_PIX-50;
|
||||||
|
height =(int)(width/1.78);
|
||||||
|
}
|
||||||
|
}else if(height >150){
|
||||||
|
width =(int)(height*1.78);
|
||||||
|
}*/
|
||||||
|
// width =990;
|
||||||
|
//height=150;
|
||||||
|
height=height > 500 ? 500: height;
|
||||||
|
Log.d(TAG, String.format("loadBannerAd:finial width %s, height %s ",width,height));
|
||||||
|
AdSlot adSlot = new AdSlot.Builder()
|
||||||
|
.setCodeId(codeId) //广告位id
|
||||||
|
.setSupportDeepLink(true)
|
||||||
|
.setImageAcceptedSize(width, height)
|
||||||
|
.build();
|
||||||
|
//step5:请求广告,对请求回调的广告作渲染处理
|
||||||
|
mTTAdNative.loadBannerAd(adSlot, new TTAdNative.BannerAdListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(int code, String message) {
|
||||||
|
// TToast.show(oContext, "load error : " + code + ", " + message);
|
||||||
|
Log.e(TAG, String.format("loadBannerAd:code %s, message %s ", code,message));
|
||||||
|
bannerContainer.removeAllViews();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBannerAdLoad(final TTBannerAd ad) {
|
||||||
|
if (ad == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
View bannerView = ad.getBannerView();
|
||||||
|
if (bannerView == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//设置轮播的时间间隔 间隔在30s到120秒之间的值,不设置默认不轮播
|
||||||
|
ad.setSlideIntervalTime(30 * 1000);
|
||||||
|
bannerContainer.removeAllViews();
|
||||||
|
bannerContainer.addView(bannerView);
|
||||||
|
//设置广告互动监听回调
|
||||||
|
ad.setBannerInteractionListener(new TTBannerAd.AdInteractionListener() {
|
||||||
|
@Override
|
||||||
|
public void onAdClicked(View view, int type) {
|
||||||
|
// TToast.show(oContext, "广告被点击");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAdShow(View view, int type) {
|
||||||
|
// TToast.show(oContext, "广告展示");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//(可选)设置下载类广告的下载监听
|
||||||
|
bindDownloadListener(ad);
|
||||||
|
//在banner中显示网盟提供的dislike icon,有助于广告投放精准度提升
|
||||||
|
ad.setShowDislikeIcon(new TTAdDislike.DislikeInteractionCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSelected(int position, String value) {
|
||||||
|
// TToast.show(oContext, "点击 " + value);
|
||||||
|
//用户选择不喜欢原因后,移除广告展示
|
||||||
|
bannerContainer.removeAllViews();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCancel() {
|
||||||
|
// TToast.show(oContext, "点击取消 ");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//获取网盟dislike dialog,您可以在您应用中本身自定义的dislike icon 按钮中设置 mTTAdDislike.showDislikeDialog();
|
||||||
|
/*mTTAdDislike = ad.getDislikeDialog(new TTAdDislike.DislikeInteractionCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSelected(int position, String value) {
|
||||||
|
TToast.show(mContext, "点击 " + value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCancel() {
|
||||||
|
TToast.show(mContext, "点击取消 ");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (mTTAdDislike != null) {
|
||||||
|
XXX.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
mTTAdDislike.showDislikeDialog();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} */
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
private boolean mHasShowDownloadActive = false;
|
||||||
|
private void bindDownloadListener(TTBannerAd ad) {
|
||||||
|
ad.setDownloadListener(new TTAppDownloadListener() {
|
||||||
|
@Override
|
||||||
|
public void onIdle() {
|
||||||
|
// TToast.show(oContext, "点击图片开始下载", Toast.LENGTH_LONG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadActive(long totalBytes, long currBytes, String fileName, String appName) {
|
||||||
|
if (!mHasShowDownloadActive) {
|
||||||
|
mHasShowDownloadActive = true;
|
||||||
|
// TToast.show(oContext, "下载中,点击图片暂停", Toast.LENGTH_LONG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadPaused(long totalBytes, long currBytes, String fileName, String appName) {
|
||||||
|
// TToast.show(oContext, "下载暂停,点击图片继续", Toast.LENGTH_LONG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadFailed(long totalBytes, long currBytes, String fileName, String appName) {
|
||||||
|
// TToast.show(oContext, "下载失败,点击图片重新下载", Toast.LENGTH_LONG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onInstalled(String fileName, String appName) {
|
||||||
|
// TToast.show(oContext, "安装完成,点击图片打开", Toast.LENGTH_LONG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadFinished(long totalBytes, String fileName, String appName) {
|
||||||
|
// TToast.show(oContext, "点击图片安装", Toast.LENGTH_LONG);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//-------------native toutiao ad
|
||||||
|
void loadNativeBannerAd(FrameLayout bannerContainer,String codeId) {
|
||||||
|
//step4:创建广告请求参数AdSlot,注意其中的setNativeAdtype方法,具体参数含义参考文档
|
||||||
|
if(bannerContainer==null) return;
|
||||||
|
final AdSlot adSlot = new AdSlot.Builder()
|
||||||
|
.setCodeId(codeId)
|
||||||
|
.setSupportDeepLink(true)
|
||||||
|
.setImageAcceptedSize(690, 388)
|
||||||
|
.setNativeAdType(AdSlot.TYPE_BANNER) //请求原生广告时候,请务必调用该方法,设置参数为TYPE_BANNER或TYPE_INTERACTION_AD
|
||||||
|
.setAdCount(1)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
//step5:请求广告,对请求回调的广告作渲染处理
|
||||||
|
mTTAdNative.loadNativeAd(adSlot, new TTAdNative.NativeAdListener() {
|
||||||
|
@Override
|
||||||
|
public void onError(int code, String message) {
|
||||||
|
// TToast.show(oContext, "load error : " + code + ", " + message);
|
||||||
|
Log.e(TAG, "loadBannerAd: " + code + ", " + message);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNativeAdLoad(List<TTNativeAd> ads) {
|
||||||
|
if (ads.get(0) == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
View bannerView = LayoutInflater.from(oContext).inflate(R.layout.ad_toutiao_native_ad , bannerContainer, false);
|
||||||
|
if (bannerView == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
//防止内存泄漏
|
||||||
|
mCreativeButton = null;
|
||||||
|
}
|
||||||
|
bannerContainer.removeAllViews();
|
||||||
|
bannerContainer.addView(bannerView);
|
||||||
|
//绑定原生广告的数据
|
||||||
|
setAdData(bannerContainer,bannerView, ads.get(0));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("RedundantCast")
|
||||||
|
private void setAdData(FrameLayout bannerContainer,View nativeView, TTNativeAd nativeAd) {
|
||||||
|
((TextView) nativeView.findViewById(R.id.tv_native_ad_title)).setText(nativeAd.getTitle());
|
||||||
|
((TextView) nativeView.findViewById(R.id.tv_native_ad_desc)).setText(nativeAd.getDescription());
|
||||||
|
ImageView imgDislike = nativeView.findViewById(R.id.img_native_dislike);
|
||||||
|
bindDislikeAction( bannerContainer,nativeAd, imgDislike);
|
||||||
|
if (nativeAd.getImageList() != null && !nativeAd.getImageList().isEmpty()) {
|
||||||
|
TTImage image = nativeAd.getImageList().get(0);
|
||||||
|
if (image != null && image.isValid()) {
|
||||||
|
mAQuery.id(nativeView.findViewById(R.id.iv_native_image)).image(image.getImageUrl());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TTImage icon = nativeAd.getIcon();
|
||||||
|
if (icon != null && icon.isValid()) {
|
||||||
|
ImageOptions options = new ImageOptions();
|
||||||
|
mAQuery.id((nativeView.findViewById(R.id.iv_native_icon))).image(icon.getImageUrl(), options);
|
||||||
|
}
|
||||||
|
mCreativeButton = (Button) nativeView.findViewById(R.id.btn_native_creative);
|
||||||
|
//可根据广告类型,为交互区域设置不同提示信息
|
||||||
|
switch (nativeAd.getInteractionType()) {
|
||||||
|
case TTAdConstant.INTERACTION_TYPE_DOWNLOAD:
|
||||||
|
//如果初始化ttAdManager.createAdNative(getApplicationContext())没有传入activity 则需要在此传activity,否则影响使用Dislike逻辑
|
||||||
|
nativeAd.setActivityForDownloadApp(this);
|
||||||
|
mCreativeButton.setVisibility(View.VISIBLE);
|
||||||
|
nativeAd.setDownloadListener(mDownloadListener); // 注册下载监听器
|
||||||
|
break;
|
||||||
|
case TTAdConstant.INTERACTION_TYPE_DIAL:
|
||||||
|
mCreativeButton.setVisibility(View.VISIBLE);
|
||||||
|
mCreativeButton.setText("立即拨打");
|
||||||
|
break;
|
||||||
|
case TTAdConstant.INTERACTION_TYPE_LANDING_PAGE:
|
||||||
|
case TTAdConstant.INTERACTION_TYPE_BROWSER:
|
||||||
|
mCreativeButton.setVisibility(View.VISIBLE);
|
||||||
|
mCreativeButton.setText("查看详情");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mCreativeButton.setVisibility(View.GONE);
|
||||||
|
// TToast.show(oContext, "交互类型异常");
|
||||||
|
}
|
||||||
|
|
||||||
|
//可以被点击的view, 也可以把nativeView放进来意味整个广告区域可被点击
|
||||||
|
List<View> clickViewList = new ArrayList<>();
|
||||||
|
clickViewList.add(nativeView);
|
||||||
|
|
||||||
|
//触发创意广告的view(点击下载或拨打电话)
|
||||||
|
List<View> creativeViewList = new ArrayList<>();
|
||||||
|
//如果需要点击图文区域也能进行下载或者拨打电话动作,请将图文区域的view传入
|
||||||
|
//creativeViewList.add(nativeView);
|
||||||
|
creativeViewList.add(mCreativeButton);
|
||||||
|
|
||||||
|
//重要! 这个涉及到广告计费,必须正确调用。convertView必须使用ViewGroup。
|
||||||
|
nativeAd.registerViewForInteraction((ViewGroup) nativeView, clickViewList, creativeViewList, imgDislike, new TTNativeAd.AdInteractionListener() {
|
||||||
|
@Override
|
||||||
|
public void onAdClicked(View view, TTNativeAd ad) {
|
||||||
|
if (ad != null) {
|
||||||
|
// TToast.show(oContext, "广告" + ad.getTitle() + "被点击");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAdCreativeClick(View view, TTNativeAd ad) {
|
||||||
|
if (ad != null) {
|
||||||
|
// TToast.show(oContext, "广告" + ad.getTitle() + "被创意按钮被点击");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAdShow(TTNativeAd ad) {
|
||||||
|
if (ad != null) {
|
||||||
|
// TToast.show(oContext, "广告" + ad.getTitle() + "展示");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//接入网盟的dislike 逻辑,有助于提示广告精准投放度
|
||||||
|
private void bindDislikeAction(FrameLayout bannerContainer,TTNativeAd ad, View dislikeView) {
|
||||||
|
final TTAdDislike ttAdDislike = ad.getDislikeDialog(this);
|
||||||
|
if (ttAdDislike != null) {
|
||||||
|
ttAdDislike.setDislikeInteractionCallback(new TTAdDislike.DislikeInteractionCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSelected(int position, String value) {
|
||||||
|
bannerContainer.removeAllViews();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCancel() {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
dislikeView.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
if (ttAdDislike != null)
|
||||||
|
ttAdDislike.showDislikeDialog();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private final TTAppDownloadListener mDownloadListener = new TTAppDownloadListener() {
|
||||||
|
@Override
|
||||||
|
public void onIdle() {
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
mCreativeButton.setText("开始下载");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadActive(long totalBytes, long currBytes, String fileName, String appName) {
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
if (totalBytes <= 0L) {
|
||||||
|
mCreativeButton.setText("下载中 percent: 0");
|
||||||
|
} else {
|
||||||
|
mCreativeButton.setText("下载中 percent: " + (currBytes * 100 / totalBytes));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadPaused(long totalBytes, long currBytes, String fileName, String appName) {
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
mCreativeButton.setText("下载暂停 percent: " + (currBytes * 100 / totalBytes));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadFailed(long totalBytes, long currBytes, String fileName, String appName) {
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
mCreativeButton.setText("重新下载");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onInstalled(String fileName, String appName) {
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
mCreativeButton.setText("点击打开");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadFinished(long totalBytes, String fileName, String appName) {
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
mCreativeButton.setText("点击安装");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ import android.widget.TextView;
|
||||||
|
|
||||||
import com.novelbook.android.Activity_base;
|
import com.novelbook.android.Activity_base;
|
||||||
import com.novelbook.android.R;
|
import com.novelbook.android.R;
|
||||||
|
import com.novelbook.android.adapter.BookListAdapter;
|
||||||
import com.novelbook.android.bean.Cataloge;
|
import com.novelbook.android.bean.Cataloge;
|
||||||
import com.novelbook.android.db.Chapter;
|
import com.novelbook.android.db.Chapter;
|
||||||
import com.novelbook.android.db.DownloadTask;
|
import com.novelbook.android.db.DownloadTask;
|
||||||
|
@ -48,6 +49,7 @@ public class Activity_cache extends Activity_base {
|
||||||
TextView tvMsg;
|
TextView tvMsg;
|
||||||
private List<DownloadTask> mData;
|
private List<DownloadTask> mData;
|
||||||
private CacheAdapter mAdapter;
|
private CacheAdapter mAdapter;
|
||||||
|
// private String cacheSize;
|
||||||
@Override
|
@Override
|
||||||
public int getLayoutRes() {
|
public int getLayoutRes() {
|
||||||
return R.layout.activitycache;
|
return R.layout.activitycache;
|
||||||
|
@ -76,6 +78,7 @@ public class Activity_cache extends Activity_base {
|
||||||
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
mData = LitePal.where("id >0").order("id desc").find(DownloadTask.class);//findAll(DownloadTask.class);
|
mData = LitePal.where("id >0").order("id desc").find(DownloadTask.class);//findAll(DownloadTask.class);
|
||||||
|
|
||||||
|
//cacheSize = FileUtils.getCachedSize();
|
||||||
/* mData.sort(new Comparator<DownloadTask>(){
|
/* mData.sort(new Comparator<DownloadTask>(){
|
||||||
public int compare(DownloadTask arg0, DownloadTask arg1) {
|
public int compare(DownloadTask arg0, DownloadTask arg1) {
|
||||||
int i = arg0.getFinishedChpats()/arg0.getTotalChapts() > arg1.getFinishedChpats()/arg1.getTotalChapts() ?1:-1;
|
int i = arg0.getFinishedChpats()/arg0.getTotalChapts() > arg1.getFinishedChpats()/arg1.getTotalChapts() ?1:-1;
|
||||||
|
@ -147,6 +150,11 @@ public class Activity_cache extends Activity_base {
|
||||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
|
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
|
||||||
mRecyclerView.setAdapter(mAdapter );
|
mRecyclerView.setAdapter(mAdapter );
|
||||||
|
|
||||||
|
if( mData.size()>0){
|
||||||
|
tvMsg.setText(String.format("共有%s条下载记录",mData.size()));
|
||||||
|
}else{
|
||||||
|
tvMsg.setText("您还没有没有缓存过小说");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private IntentFilter filter;
|
private IntentFilter filter;
|
||||||
|
@ -164,7 +172,7 @@ public class Activity_cache extends Activity_base {
|
||||||
int progress=0;
|
int progress=0;
|
||||||
int status=0;
|
int status=0;
|
||||||
|
|
||||||
tvMsg.setVisibility(View.GONE);
|
// tvMsg.setVisibility(View.GONE);
|
||||||
if( intent.hasExtra("network")){
|
if( intent.hasExtra("network")){
|
||||||
String txt = intent.getStringExtra("network");
|
String txt = intent.getStringExtra("network");
|
||||||
tvMsg.setText(txt);
|
tvMsg.setText(txt);
|
||||||
|
@ -230,7 +238,7 @@ public class Activity_cache extends Activity_base {
|
||||||
unregisterReceiver(receiver);
|
unregisterReceiver(receiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
class CacheAdapter extends RecyclerView.Adapter<CacheAdapter.MyViewHolder> {
|
class CacheAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||||
private final int EMPTY_VIEW = 1;
|
private final int EMPTY_VIEW = 1;
|
||||||
private final int PROGRESS_VIEW = 2;
|
private final int PROGRESS_VIEW = 2;
|
||||||
private final int IMAGE_VIEW = 3;
|
private final int IMAGE_VIEW = 3;
|
||||||
|
@ -239,6 +247,7 @@ public class Activity_cache extends Activity_base {
|
||||||
private List<DownloadTask> mDatas = new ArrayList<DownloadTask>();
|
private List<DownloadTask> mDatas = new ArrayList<DownloadTask>();
|
||||||
private OnItemClickLitener mOnItemClickLitener;
|
private OnItemClickLitener mOnItemClickLitener;
|
||||||
private int listItemID;
|
private int listItemID;
|
||||||
|
private String norecord ="还没有下载记录";
|
||||||
|
|
||||||
public CacheAdapter(Context context, List<DownloadTask> mDatas, int listItemID, OnItemClickLitener clickLitener) {
|
public CacheAdapter(Context context, List<DownloadTask> mDatas, int listItemID, OnItemClickLitener clickLitener) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
|
@ -265,7 +274,12 @@ public class Activity_cache extends Activity_base {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CacheAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||||
|
if(viewType == EMPTY_VIEW){
|
||||||
|
EmptyViewHolder holder = new EmptyViewHolder (LayoutInflater.from(context).inflate(R.layout.recycle_list_empty_item, parent, false));
|
||||||
|
return holder;
|
||||||
|
}
|
||||||
|
|
||||||
CacheAdapter.MyViewHolder holder = new CacheAdapter.MyViewHolder(LayoutInflater.from(
|
CacheAdapter.MyViewHolder holder = new CacheAdapter.MyViewHolder(LayoutInflater.from(
|
||||||
context).inflate(listItemID, parent,
|
context).inflate(listItemID, parent,
|
||||||
false));
|
false));
|
||||||
|
@ -283,34 +297,42 @@ public class Activity_cache extends Activity_base {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(CacheAdapter.MyViewHolder holder, int position) {
|
public void onBindViewHolder( RecyclerView.ViewHolder hd, int position) {
|
||||||
|
|
||||||
|
if (hd instanceof EmptyViewHolder) {
|
||||||
|
EmptyViewHolder holder = ( EmptyViewHolder)hd;
|
||||||
|
holder.tvEmpty.setVisibility(View.VISIBLE);
|
||||||
|
holder.tvEmpty.setText(norecord);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
MyViewHolder holder = ( MyViewHolder)hd;
|
||||||
holder.tvTitle.setText(mDatas.get(position).getNovelTitle());
|
holder.tvTitle.setText(mDatas.get(position).getNovelTitle());
|
||||||
holder.tvSource.setText(mDatas.get(position).getDomainName());
|
holder.tvSource.setText(mDatas.get(position).getDomainName());
|
||||||
boolean finished = mData.get(position).getFinishedChpats() == mData.get(position).getTotalChapts();
|
boolean finished = mData.get(position).getFinishedChpats() == mData.get(position).getTotalChapts();
|
||||||
holder.tvSize.setText( FileUtils.getCacheSizeK(mData.get(position).getNovelId()));
|
holder.tvSize.setText( FileUtils.getCacheSizeK(mData.get(position).getNovelId()));
|
||||||
if( mData.get(position).getTotalChapts() >0) {
|
if( mData.get(position).getTotalChapts() >0) {
|
||||||
float progress = mData.get(position).getFinishedChpats() *100/ mData.get(position).getTotalChapts() ;
|
float progress = mData.get(position).getFinishedChpats() * 100 / mData.get(position).getTotalChapts();
|
||||||
holder.tvProgress.setText(String.format("%s/%s",mData.get(position).getFinishedChpats() >mData.get(position).getTotalChapts()?mData.get(position).getTotalChapts():mData.get(position).getFinishedChpats() , mData.get(position).getTotalChapts()));
|
holder.tvProgress.setText(String.format("%s/%s", mData.get(position).getFinishedChpats() > mData.get(position).getTotalChapts() ? mData.get(position).getTotalChapts() : mData.get(position).getFinishedChpats(), mData.get(position).getTotalChapts()));
|
||||||
holder.barProgress.setProgress((int) progress);
|
holder.barProgress.setProgress((int) progress);
|
||||||
|
|
||||||
holder.tvStatus.setText( mData.get(position).getDownSatus() == DownloadTask.DownStatus.正在下载 ?"正在下载"
|
holder.tvStatus.setText(mData.get(position).getDownSatus() == DownloadTask.DownStatus.正在下载 ? "正在下载"
|
||||||
: mData.get(position).getDownSatus() == DownloadTask.DownStatus.暂停下载? "暂停下载" :"休眠中");
|
: mData.get(position).getDownSatus() == DownloadTask.DownStatus.暂停下载 ? "暂停下载" : "休眠中");
|
||||||
|
|
||||||
holder.tvStatus.setText( mData.get(position).getStatus()==1 || mData.get(position).getFinishedChpats() >=mData.get(position).getTotalChapts()
|
holder.tvStatus.setText(mData.get(position).getStatus() == 1 || mData.get(position).getFinishedChpats() >= mData.get(position).getTotalChapts()
|
||||||
? "下载完成" : holder.tvStatus.getText() );
|
? "下载完成" : holder.tvStatus.getText());
|
||||||
|
|
||||||
|
|
||||||
holder.tvStatus.setText( mData.get(position).getDownSatus() == DownloadTask.DownStatus.排队中?"排队中": holder.tvStatus.getText() );
|
holder.tvStatus.setText(mData.get(position).getDownSatus() == DownloadTask.DownStatus.排队中 ? "排队中" : holder.tvStatus.getText());
|
||||||
|
|
||||||
int img = R.mipmap.play;
|
int img = R.mipmap.play;
|
||||||
img = mData.get(position).getDownSatus() == DownloadTask.DownStatus.正在下载 ? R.mipmap.pause : R.mipmap.play;
|
img = mData.get(position).getDownSatus() == DownloadTask.DownStatus.正在下载 ? R.mipmap.pause : R.mipmap.play;
|
||||||
|
|
||||||
holder.imgStart.setImageResource( img);
|
holder.imgStart.setImageResource(img);
|
||||||
holder.imgStart.setEnabled(true);
|
holder.imgStart.setEnabled(true);
|
||||||
if( mData.get(position).getStatus()==1|| mData.get(position).getFinishedChpats() >=mData.get(position).getTotalChapts()) {
|
if (mData.get(position).getStatus() == 1 || mData.get(position).getFinishedChpats() >= mData.get(position).getTotalChapts()) {
|
||||||
holder.tvStatus.setText( "下载完成");
|
holder.tvStatus.setText("下载完成");
|
||||||
holder.imgStart.setEnabled(false);
|
holder.imgStart.setEnabled(false);
|
||||||
holder.imgStart.setImageResource( R.mipmap.pause);
|
holder.imgStart.setImageResource(R.mipmap.pause);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -380,7 +402,15 @@ public class Activity_cache extends Activity_base {
|
||||||
mData = data;
|
mData = data;
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
class EmptyViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
@BindView(R.id.tvLoadText)
|
||||||
|
TextView tvEmpty;
|
||||||
|
|
||||||
|
public EmptyViewHolder(View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
ButterKnife.bind(this, itemView);
|
||||||
|
}
|
||||||
|
}
|
||||||
class MyViewHolder extends RecyclerView.ViewHolder {
|
class MyViewHolder extends RecyclerView.ViewHolder {
|
||||||
@BindView(R.id.tvTitle)
|
@BindView(R.id.tvTitle)
|
||||||
TextView tvTitle;
|
TextView tvTitle;
|
||||||
|
|
|
@ -21,6 +21,7 @@ import android.util.Log;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.Window;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
@ -159,6 +160,7 @@ public class BookActivity extends Activity_base {
|
||||||
tvTonglei.setVisibility(View.GONE);
|
tvTonglei.setVisibility(View.GONE);
|
||||||
tvAuthorMore.setText( "");
|
tvAuthorMore.setText( "");
|
||||||
initiDownloadReceiver();
|
initiDownloadReceiver();
|
||||||
|
loadNativeBannerAd(mBannerContainer,BuildConfig.AD_SLOT_TOUTIAO_BANNER_NATIVE_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -183,7 +185,7 @@ public class BookActivity extends Activity_base {
|
||||||
public final static String EXTRA_BOOK ="book";
|
public final static String EXTRA_BOOK ="book";
|
||||||
@Override
|
@Override
|
||||||
protected void setTitle() {
|
protected void setTitle() {
|
||||||
|
// getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.book_activity_custom_title);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -212,6 +214,10 @@ public class BookActivity extends Activity_base {
|
||||||
novelId = mNovel.getNovelId();
|
novelId = mNovel.getNovelId();
|
||||||
this.setTitle(mNovel.getName());
|
this.setTitle(mNovel.getName());
|
||||||
btnCach.setText(R.string.cache_novel);
|
btnCach.setText(R.string.cache_novel);
|
||||||
|
// ((TextView) findViewById(R.id.left_text)).setText(mNovel.getName());
|
||||||
|
if(toolbar!=null) {
|
||||||
|
toolbar.setTitle(mNovel.getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected void onNewIntent(Intent intent) {
|
protected void onNewIntent(Intent intent) {
|
||||||
|
@ -582,7 +588,7 @@ public class BookActivity extends Activity_base {
|
||||||
@Override
|
@Override
|
||||||
public void onFault(String errorMsg) {
|
public void onFault(String errorMsg) {
|
||||||
//失败
|
//失败
|
||||||
Toast.makeText(BookActivity.this, "Novel 请求失败:" + errorMsg, Toast.LENGTH_SHORT).show();
|
Toast.makeText(BookActivity.this, mNovel.getName() +" 加载失败", Toast.LENGTH_SHORT).show();
|
||||||
mNovel = Novel.getNovelBySvrId(novelId);
|
mNovel = Novel.getNovelBySvrId(novelId);
|
||||||
if (null != mNovel) {
|
if (null != mNovel) {
|
||||||
handler.sendEmptyMessage(1);
|
handler.sendEmptyMessage(1);
|
||||||
|
|
|
@ -25,21 +25,30 @@ import android.util.TypedValue;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.Glide;
|
||||||
|
import com.bytedance.sdk.openadsdk.AdSlot;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAdDislike;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAdNative;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAppDownloadListener;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTBannerAd;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
|
import com.novelbook.android.AD.toutiao.TToast;
|
||||||
import com.novelbook.android.Activity_base;
|
import com.novelbook.android.Activity_base;
|
||||||
import com.novelbook.android.Activity_paihangbang;
|
import com.novelbook.android.Activity_paihangbang;
|
||||||
import com.novelbook.android.Activity_shudan;
|
import com.novelbook.android.Activity_shudan;
|
||||||
import com.novelbook.android.BookActivity;
|
import com.novelbook.android.BookActivity;
|
||||||
|
import com.novelbook.android.BuildConfig;
|
||||||
|
import com.novelbook.android.Main2Activity;
|
||||||
import com.novelbook.android.R;
|
import com.novelbook.android.R;
|
||||||
import com.novelbook.android.ReadActivity;
|
import com.novelbook.android.ReadActivity;
|
||||||
import com.novelbook.android.adapter.BookListAdapter;
|
import com.novelbook.android.adapter.BookListAdapter;
|
||||||
|
@ -75,7 +84,7 @@ import butterknife.ButterKnife;
|
||||||
*/
|
*/
|
||||||
public abstract class BasicFragment extends Fragment {
|
public abstract class BasicFragment extends Fragment {
|
||||||
|
|
||||||
public static String TAG = BasicFragment.class.getSimpleName();
|
private static String TAG = BasicFragment.class.getSimpleName();
|
||||||
protected View rootView;
|
protected View rootView;
|
||||||
protected int pageNo=1;
|
protected int pageNo=1;
|
||||||
protected int pageCount;
|
protected int pageCount;
|
||||||
|
@ -91,9 +100,14 @@ public abstract class BasicFragment extends Fragment {
|
||||||
@Nullable
|
@Nullable
|
||||||
@BindView(R.id.swipeLayout)
|
@BindView(R.id.swipeLayout)
|
||||||
SwipeRefreshLayout mSwipeRefresh;
|
SwipeRefreshLayout mSwipeRefresh;
|
||||||
|
@Nullable
|
||||||
|
@BindView(R.id.banner_container)
|
||||||
|
FrameLayout mBannerContainer;
|
||||||
int MSG_INIT_TAB =99;
|
int MSG_INIT_TAB =99;
|
||||||
|
|
||||||
|
int error_try=0;
|
||||||
|
int error_try_max=5;
|
||||||
|
|
||||||
public BasicFragment() {
|
public BasicFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
|
@ -126,6 +140,7 @@ public abstract class BasicFragment extends Fragment {
|
||||||
initData();
|
initData();
|
||||||
initViews();
|
initViews();
|
||||||
initSwipeRefreshLayout();
|
initSwipeRefreshLayout();
|
||||||
|
showBanner(mBannerContainer,185);
|
||||||
return view;
|
return view;
|
||||||
// Inflate the layout for this fragment
|
// Inflate the layout for this fragment
|
||||||
|
|
||||||
|
@ -295,6 +310,7 @@ void initTabs(){
|
||||||
// 开始刷新,设置当前为刷新状态
|
// 开始刷新,设置当前为刷新状态
|
||||||
//swipeRefreshLayout.setRefreshing(true);
|
//swipeRefreshLayout.setRefreshing(true);
|
||||||
pageNo=1;
|
pageNo=1;
|
||||||
|
error_try=0;
|
||||||
initData();
|
initData();
|
||||||
// TODO 获取数据
|
// TODO 获取数据
|
||||||
|
|
||||||
|
@ -409,12 +425,41 @@ void initTabs(){
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
MobclickAgent.onPageStart(TAG);
|
error_try=0;
|
||||||
|
// MobclickAgent.onPageStart(TAG);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onPause(){
|
public void onPause(){
|
||||||
super.onPause();
|
super.onPause();
|
||||||
hideProgress();
|
hideProgress();
|
||||||
MobclickAgent.onPageEnd(TAG);
|
// MobclickAgent.onPageEnd(TAG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void retryErorr(int msg){
|
||||||
|
if(error_try<error_try_max){
|
||||||
|
error_try++;
|
||||||
|
initData();
|
||||||
|
}else {
|
||||||
|
handler.sendEmptyMessage(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void initRetryCnt(){
|
||||||
|
error_try=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------toutiao ad------
|
||||||
|
public void showBanner(FrameLayout bannerContainer , int adHeight ) {
|
||||||
|
if(bannerContainer==null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
bannerContainer.setVisibility(View.GONE);
|
||||||
|
if (!Constants.SHOWAD) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
((Main2Activity) activity).loadBannerAd(bannerContainer, BuildConfig.AD_SLOT_TOUTIAO_BANNER_ID, Constants.SCREEN_WIDTH_PIX, adHeight);
|
||||||
|
mBannerContainer.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ import com.novelbook.android.adapter.MarkAdapter;
|
||||||
import com.novelbook.android.db.BookMarks;
|
import com.novelbook.android.db.BookMarks;
|
||||||
import com.novelbook.android.db.Novel;
|
import com.novelbook.android.db.Novel;
|
||||||
import com.novelbook.android.utils.PageFactory;
|
import com.novelbook.android.utils.PageFactory;
|
||||||
|
import com.umeng.analytics.MobclickAgent;
|
||||||
|
|
||||||
import org.litepal.LitePal;
|
import org.litepal.LitePal;
|
||||||
|
|
||||||
|
@ -176,4 +177,15 @@ public class BookMarkFragment extends BasicFragment implements MarkActivity.Sor
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
MobclickAgent.onPageStart(TAG);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onPause(){
|
||||||
|
super.onPause();
|
||||||
|
MobclickAgent.onPageEnd(TAG);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ import com.novelbook.android.db.DownloadTask;
|
||||||
import com.novelbook.android.db.Novel;
|
import com.novelbook.android.db.Novel;
|
||||||
import com.novelbook.android.netutils.NetUtil;
|
import com.novelbook.android.netutils.NetUtil;
|
||||||
import com.novelbook.android.utils.PageFactory;
|
import com.novelbook.android.utils.PageFactory;
|
||||||
|
import com.umeng.analytics.MobclickAgent;
|
||||||
|
|
||||||
|
|
||||||
import org.litepal.LitePal;
|
import org.litepal.LitePal;
|
||||||
|
@ -285,4 +286,15 @@ public class CatalogFragment extends BasicFragment implements MarkActivity.Sortc
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
refresh(null);
|
refresh(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
MobclickAgent.onPageStart(TAG);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onPause(){
|
||||||
|
super.onPause();
|
||||||
|
MobclickAgent.onPageEnd(TAG);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ import com.novelbook.android.netutils.OnSuccessAndFaultListener;
|
||||||
import com.novelbook.android.netutils.OnSuccessAndFaultSub;
|
import com.novelbook.android.netutils.OnSuccessAndFaultSub;
|
||||||
import com.novelbook.android.utils.Constants;
|
import com.novelbook.android.utils.Constants;
|
||||||
import com.novelbook.android.utils.ImageUtil;
|
import com.novelbook.android.utils.ImageUtil;
|
||||||
|
import com.umeng.analytics.MobclickAgent;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
@ -57,7 +58,8 @@ public class FragmentCates extends BasicFragment {
|
||||||
BookSubscribe.getCates(Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
|
BookSubscribe.getCates(Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(String result) {
|
public void onSuccess(String result) {
|
||||||
|
Log.d(TAG, String.format("init data HttpMethods successed on init, trycnt %s " ,error_try));
|
||||||
|
error_try =0;
|
||||||
// mFirstPage= gson.fromJson(result, FirstPage.class);
|
// mFirstPage= gson.fromJson(result, FirstPage.class);
|
||||||
try {
|
try {
|
||||||
JSONObject jsonObject = new JSONObject(result);
|
JSONObject jsonObject = new JSONObject(result);
|
||||||
|
@ -75,8 +77,8 @@ public class FragmentCates 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, String.format("init data HttpMethods error on init, trycnt %s " ,error_try ));
|
||||||
handler.sendEmptyMessage(2);
|
retryErorr(2);
|
||||||
}
|
}
|
||||||
}, getActivity()));
|
}, getActivity()));
|
||||||
|
|
||||||
|
@ -295,4 +297,17 @@ public class FragmentCates extends BasicFragment {
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
|
||||||
|
MobclickAgent.onPageStart(TAG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause(){
|
||||||
|
super.onPause();
|
||||||
|
MobclickAgent.onPageEnd(TAG);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,11 +19,15 @@ import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.CheckBox;
|
import android.widget.CheckBox;
|
||||||
import android.widget.CompoundButton;
|
import android.widget.CompoundButton;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.androidquery.callback.AQuery2;
|
||||||
|
import com.novelbook.android.AD.toutiao.TTAdManagerHolder;
|
||||||
|
import com.novelbook.android.BuildConfig;
|
||||||
import com.novelbook.android.Main2Activity;
|
import com.novelbook.android.Main2Activity;
|
||||||
import com.novelbook.android.R;
|
import com.novelbook.android.R;
|
||||||
import com.novelbook.android.db.Chapter;
|
import com.novelbook.android.db.Chapter;
|
||||||
|
@ -44,6 +48,7 @@ import com.novelbook.android.utils.ImageUtil;
|
||||||
import com.novelbook.android.utils.MyImageLoader;
|
import com.novelbook.android.utils.MyImageLoader;
|
||||||
import com.novelbook.android.utils.OnItemClickListener;
|
import com.novelbook.android.utils.OnItemClickListener;
|
||||||
import com.novelbook.android.adapter.BookListAdapter;
|
import com.novelbook.android.adapter.BookListAdapter;
|
||||||
|
import com.umeng.analytics.MobclickAgent;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.litepal.LitePal;
|
import org.litepal.LitePal;
|
||||||
|
@ -64,21 +69,25 @@ import okhttp3.ResponseBody;
|
||||||
|
|
||||||
|
|
||||||
public class Fragment_Shelf extends BasicFragment {
|
public class Fragment_Shelf extends BasicFragment {
|
||||||
public static final String TAG=Fragment_Shelf.class.getSimpleName();
|
public static final String TAG = Fragment_Shelf.class.getSimpleName();
|
||||||
private boolean[] flag ;//此处添加一个boolean类型的数组
|
private boolean[] flag;//此处添加一个boolean类型的数组
|
||||||
private boolean isSelectAll =true;
|
private boolean isSelectAll = true;
|
||||||
private MyImageLoader loader = new MyImageLoader();
|
private MyImageLoader loader = new MyImageLoader();
|
||||||
@BindView(R.id.llShelfBottom)
|
@BindView(R.id.llShelfBottom)
|
||||||
LinearLayout llShelfBottom;
|
LinearLayout llShelfBottom;
|
||||||
@BindView(R.id.id_recyclerview)
|
@BindView(R.id.id_recyclerview)
|
||||||
RecyclerView mRecyclerView;
|
RecyclerView mRecyclerView;
|
||||||
// private List<Novel> mDatas;
|
// private List<Novel> mDatas;
|
||||||
private BookListAdapter mAdapter;
|
private BookListAdapter mAdapter;
|
||||||
List<Novel> lstUpdate = new ArrayList<Novel>();
|
List<Novel> lstUpdate = new ArrayList<Novel>();
|
||||||
private List<Novel> bookLists;
|
private List<Novel> bookLists;
|
||||||
// private ShelfAdapter adapter;
|
// private ShelfAdapter adapter;
|
||||||
private String noveIds ;
|
private String noveIds;
|
||||||
BottomSheetDialog bottomSheetDialog;
|
BottomSheetDialog bottomSheetDialog;
|
||||||
|
|
||||||
|
@BindView(R.id.banner_container)
|
||||||
|
FrameLayout mBannerContainer;
|
||||||
|
|
||||||
public Fragment_Shelf() {
|
public Fragment_Shelf() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
|
@ -92,47 +101,47 @@ public class Fragment_Shelf extends BasicFragment {
|
||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadNovelsOnShelf(){
|
private void loadNovelsOnShelf() {
|
||||||
bookLists = Novel.getNovelsOnShelf();
|
bookLists = Novel.getNovelsOnShelf();
|
||||||
noveIds="";
|
noveIds = "";
|
||||||
for(Novel novel:bookLists){
|
for (Novel novel : bookLists) {
|
||||||
if(novel.isFinished()||novel.isLocalBook() ||novel.isUpdated() ){
|
if (novel.isFinished() || novel.isLocalBook() || novel.isUpdated()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
noveIds+=novel.getNovelId()+",";
|
noveIds += novel.getNovelId() + ",";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void test(int maxAge){
|
|
||||||
|
void test(int maxAge) {
|
||||||
|
|
||||||
String url = "http://xiaoshuofenxiang.com/api/r/need-update";
|
String url = "http://xiaoshuofenxiang.com/api/r/need-update";
|
||||||
Request request = new Request.Builder().url(url) // .header("User-Agent", "OkHttp Example")
|
Request request = new Request.Builder().url(url) // .header("User-Agent", "OkHttp Example")
|
||||||
.removeHeader("Pragma")
|
.removeHeader("Pragma")
|
||||||
.header("Cache-Control", "public, max-age=" + maxAge)
|
.header("Cache-Control", "public, max-age=" + maxAge)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
if (maxAge == -1) {
|
||||||
|
request = new Request.Builder().url(url).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
HttpMethods.getOkClient().newCall(request).enqueue(new Callback() {
|
||||||
|
@Override
|
||||||
|
public void onFailure(Call call, IOException e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResponse(Call call, Response response) throws IOException {
|
||||||
|
ResponseBody body = response.body();
|
||||||
|
Log.d(TAG, "onResponse:test " + body.string());
|
||||||
|
handler.sendEmptyMessage(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
if(maxAge==-1){
|
|
||||||
request = new Request.Builder().url(url) .build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
HttpMethods.getOkClient().newCall(request).enqueue(new Callback() {
|
|
||||||
@Override
|
|
||||||
public void onFailure(Call call, IOException e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onResponse(Call call, Response response) throws IOException {
|
|
||||||
ResponseBody body = response.body();
|
|
||||||
Log.d(TAG, "onResponse:test " + body.string());
|
|
||||||
handler.sendEmptyMessage(1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int getLayoutRes() {
|
protected int getLayoutRes() {
|
||||||
return R.layout.fragment_fragment__shelf;
|
return R.layout.fragment_fragment__shelf;
|
||||||
|
@ -141,19 +150,19 @@ void test(int maxAge){
|
||||||
/**
|
/**
|
||||||
* to get updated info from server,TODO: put it in service ,scheduled
|
* to get updated info from server,TODO: put it in service ,scheduled
|
||||||
*/
|
*/
|
||||||
private void getUpdatedData(){
|
private void getUpdatedData() {
|
||||||
|
|
||||||
|
|
||||||
List<Integer> novelIds;
|
List<Integer> novelIds;
|
||||||
OnSuccessAndFaultListener successAndFaultListener = new OnSuccessAndFaultListener() {
|
OnSuccessAndFaultListener successAndFaultListener = new OnSuccessAndFaultListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(String result) {
|
public void onSuccess(String result) {
|
||||||
|
|
||||||
// mFirstPage= gson.fromJson(result, FirstPage.class);
|
// mFirstPage= gson.fromJson(result, FirstPage.class);
|
||||||
try {
|
try {
|
||||||
|
|
||||||
lstUpdate = GsonUtil. parserJsonArray(result, Constants.BLOCK_TITLE_NOVELS);
|
lstUpdate = GsonUtil.parserJsonArray(result, Constants.BLOCK_TITLE_NOVELS);
|
||||||
if(lstUpdate.size()>0) {
|
if (lstUpdate.size() > 0) {
|
||||||
for (Novel novel2 : lstUpdate) {
|
for (Novel novel2 : lstUpdate) {
|
||||||
novel2.checkAndUpdate();
|
novel2.checkAndUpdate();
|
||||||
}
|
}
|
||||||
|
@ -181,12 +190,12 @@ void test(int maxAge){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
if(TextUtils.isEmpty(noveIds)){
|
if (TextUtils.isEmpty(noveIds)) {
|
||||||
loadNovelsOnShelf();
|
loadNovelsOnShelf();
|
||||||
}
|
}
|
||||||
if(!TextUtils.isEmpty(noveIds)){
|
if (!TextUtils.isEmpty(noveIds)) {
|
||||||
BookSubscribe.getNovelsByIds(noveIds , new OnSuccessAndFaultSub(successAndFaultListener, getActivity()));
|
BookSubscribe.getNovelsByIds(noveIds, new OnSuccessAndFaultSub(successAndFaultListener, getActivity()));
|
||||||
}else{
|
} else {
|
||||||
handler.sendEmptyMessage(1);
|
handler.sendEmptyMessage(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,11 +205,11 @@ void test(int maxAge){
|
||||||
public void initData() {
|
public void initData() {
|
||||||
|
|
||||||
|
|
||||||
// mDatas = initData(mDatas,'X');
|
// mDatas = initData(mDatas,'X');
|
||||||
|
|
||||||
// bookLists = LitePal.where("isOnShelf=? or novelId=? ","1","").find(Novel.class);
|
// bookLists = LitePal.where("isOnShelf=? or novelId=? ","1","").find(Novel.class);
|
||||||
loadNovelsOnShelf();
|
loadNovelsOnShelf();
|
||||||
// getUpdatedData();
|
// getUpdatedData();
|
||||||
flag = new boolean[bookLists.size()];
|
flag = new boolean[bookLists.size()];
|
||||||
|
|
||||||
/* if(bookLists.size()>0) { //TODO: to remove
|
/* if(bookLists.size()>0) { //TODO: to remove
|
||||||
|
@ -208,10 +217,9 @@ void test(int maxAge){
|
||||||
// bookLists.get(bookLists.size()-1).setUpdated(true);
|
// bookLists.get(bookLists.size()-1).setUpdated(true);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
mAdapter = new BookListAdapter(activity,bookLists,R.layout.recycle_list_item,new OnItemClickListener()
|
mAdapter = new BookListAdapter(activity, bookLists, R.layout.recycle_list_item, new OnItemClickListener() {
|
||||||
{
|
private long lastTimeMillis;
|
||||||
private long lastTimeMillis;
|
private static final long MIN_CLICK_INTERVAL = 1000;
|
||||||
private static final long MIN_CLICK_INTERVAL =1000;
|
|
||||||
|
|
||||||
protected boolean isTimeEnabled() {
|
protected boolean isTimeEnabled() {
|
||||||
long currentTimeMillis = System.currentTimeMillis();
|
long currentTimeMillis = System.currentTimeMillis();
|
||||||
|
@ -223,26 +231,24 @@ void test(int maxAge){
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemClick(View view, int position)
|
public void onItemClick(View view, int position) {
|
||||||
{
|
if (isTimeEnabled()) {
|
||||||
if(isTimeEnabled()) {
|
|
||||||
Novel book = bookLists.get(position);
|
Novel book = bookLists.get(position);
|
||||||
openBook(book, mAdapter);
|
openBook(book, mAdapter);
|
||||||
}else{
|
} else {
|
||||||
Log.d(TAG, "onclickInterval: bad click");
|
Log.d(TAG, "onclickInterval: bad click");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemLongClick(View view, int position)
|
public void onItemLongClick(View view, int position) {
|
||||||
{
|
|
||||||
initDialog(position);
|
initDialog(position);
|
||||||
// mAdapter.removeData(position);
|
// mAdapter.removeData(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLinearOutClick(View view, int position ,int llId) {
|
public void onLinearOutClick(View view, int position, int llId) {
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -250,80 +256,84 @@ void test(int maxAge){
|
||||||
mAdapter.setNorecord(R.string.noRecordInshelf);
|
mAdapter.setNorecord(R.string.noRecordInshelf);
|
||||||
|
|
||||||
|
|
||||||
((Main2Activity) activity).setShelfFragment(this);
|
((Main2Activity) activity).setShelfFragment(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void initSwipeRefreshLayout(){
|
void initSwipeRefreshLayout() {
|
||||||
super.initSwipeRefreshLayout();
|
super.initSwipeRefreshLayout();
|
||||||
mSwipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
mSwipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onRefresh() {
|
public void onRefresh() {
|
||||||
|
|
||||||
// 开始刷新,设置当前为刷新状态
|
// 开始刷新,设置当前为刷新状态
|
||||||
//swipeRefreshLayout.setRefreshing(true);
|
//swipeRefreshLayout.setRefreshing(true);
|
||||||
pageNo=1;
|
pageNo = 1;
|
||||||
getUpdatedData();
|
getUpdatedData();
|
||||||
// TODO 获取数据
|
// TODO 获取数据
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initViews(){
|
public void initViews() {
|
||||||
|
|
||||||
initReceyleView();
|
initReceyleView();
|
||||||
}
|
|
||||||
protected void processArguments(){
|
|
||||||
if (getArguments() != null) {
|
|
||||||
Bundle bundle = getArguments() ;
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void processArguments() {
|
||||||
|
if (getArguments() != null) {
|
||||||
|
Bundle bundle = getArguments();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void fillData() {
|
protected void fillData() {
|
||||||
|
|
||||||
mAdapter.setData(bookLists);
|
mAdapter.setData(bookLists);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initReceyleView() {
|
public void initReceyleView() {
|
||||||
// initData();
|
// initData();
|
||||||
// mRecyclerView.setLayoutManager(new LinearLayoutManager(this.activity));
|
// mRecyclerView.setLayoutManager(new LinearLayoutManager(this.activity));
|
||||||
mRecyclerView.setLayoutManager(new GridLayoutManager(activity,3));
|
mRecyclerView.setLayoutManager(new GridLayoutManager(activity, 3));
|
||||||
mRecyclerView.setAdapter(mAdapter );
|
mRecyclerView.setAdapter(mAdapter);
|
||||||
llShelfBottom.setVisibility(View.GONE);
|
llShelfBottom.setVisibility(View.GONE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showShelfMoreSheet() {
|
public void showShelfMoreSheet() {
|
||||||
BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(this.activity );
|
BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(this.activity);
|
||||||
bottomSheetDialog.setContentView(R.layout.fragment_shelf_more_sheet);
|
bottomSheetDialog.setContentView(R.layout.fragment_shelf_more_sheet);
|
||||||
//给布局设置透明背景色
|
//给布局设置透明背景色
|
||||||
bottomSheetDialog.getDelegate().findViewById(android.support.design.R.id.design_bottom_sheet)
|
bottomSheetDialog.getDelegate().findViewById(android.support.design.R.id.design_bottom_sheet)
|
||||||
.setBackgroundColor(getResources().getColor(android.R.color.transparent));
|
.setBackgroundColor(getResources().getColor(android.R.color.transparent));
|
||||||
|
|
||||||
Button btnZhengli = bottomSheetDialog.findViewById(R.id.btnZhengli);
|
Button btnZhengli = bottomSheetDialog.findViewById(R.id.btnZhengli);
|
||||||
btnZhengli.setOnClickListener(new View.OnClickListener() {
|
btnZhengli.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
bottomSheetDialog.dismiss();
|
bottomSheetDialog.dismiss();
|
||||||
initZhengliDialog();
|
initZhengliDialog();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Button btnImport = bottomSheetDialog.findViewById(R.id.btnImport);
|
Button btnImport = bottomSheetDialog.findViewById(R.id.btnImport);
|
||||||
btnImport.setOnClickListener(new View.OnClickListener() {
|
btnImport.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
bottomSheetDialog.dismiss();
|
bottomSheetDialog.dismiss();
|
||||||
Intent intent = new Intent(activity, FileChooserActivity.class);
|
Intent intent = new Intent(activity, FileChooserActivity.class);
|
||||||
startActivityForResult(intent, Activity.RESULT_FIRST_USER);
|
startActivityForResult(intent, Activity.RESULT_FIRST_USER);
|
||||||
// startActivity(intent);
|
// startActivity(intent);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Button btnCancel = bottomSheetDialog.findViewById(R.id.btnCancel);
|
Button btnCancel = bottomSheetDialog.findViewById(R.id.btnCancel);
|
||||||
btnCancel.setOnClickListener(new View.OnClickListener() {
|
btnCancel.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
bottomSheetDialog.dismiss();
|
bottomSheetDialog.dismiss();
|
||||||
|
@ -331,13 +341,13 @@ void test(int maxAge){
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bottomSheetDialog.show();
|
bottomSheetDialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data){
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
// bookLists = LitePal.findAll(Novel.class);
|
// bookLists = LitePal.findAll(Novel.class);
|
||||||
// mAdapter.notifyDataSetChanged();
|
// mAdapter.notifyDataSetChanged();
|
||||||
initViews();
|
initViews();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -359,84 +369,80 @@ void test(int maxAge){
|
||||||
TextView tvLatest = (TextView) bottomSheetDialog.findViewById(R.id.txtLatestUpdate);
|
TextView tvLatest = (TextView) bottomSheetDialog.findViewById(R.id.txtLatestUpdate);
|
||||||
|
|
||||||
tvLatestChapt.setText(bookLists.get(position).getChapterName());
|
tvLatestChapt.setText(bookLists.get(position).getChapterName());
|
||||||
tvLatest.setText(CommonUtil.getDateString( bookLists.get(position).getLastUpdateTime()) );
|
tvLatest.setText(CommonUtil.getDateString(bookLists.get(position).getLastUpdateTime()));
|
||||||
}else{
|
} else {
|
||||||
tvLatestChapt.setText("本地导入");
|
tvLatestChapt.setText("本地导入");
|
||||||
tvAuthor.setText("");
|
tvAuthor.setText("");
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageView imageView = (ImageView) bottomSheetDialog.findViewById(R.id.imageG1);
|
ImageView imageView = (ImageView) bottomSheetDialog.findViewById(R.id.imageG1);
|
||||||
ImageUtil.loadImage(activity,bookLists.get(position).getCover(),imageView);
|
ImageUtil.loadImage(activity, bookLists.get(position).getCover(), imageView);
|
||||||
|
|
||||||
LinearLayout lldetail=(LinearLayout) bottomSheetDialog.findViewById(R.id.llBookdetail);
|
LinearLayout lldetail = (LinearLayout) bottomSheetDialog.findViewById(R.id.llBookdetail);
|
||||||
if(!bookLists.get(position).isLocalBook())
|
if (!bookLists.get(position).isLocalBook())
|
||||||
lldetail.setOnClickListener(new View.OnClickListener() {
|
lldetail.setOnClickListener(new View.OnClickListener() {
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
showBookDetail(bookLists.get(position));
|
showBookDetail(bookLists.get(position));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
TextView tvCache =(TextView) bottomSheetDialog.findViewById(R.id.tvCache);
|
TextView tvCache = (TextView) bottomSheetDialog.findViewById(R.id.tvCache);
|
||||||
|
|
||||||
tvCache.setText(FileUtils.getCacheSizeK(bookLists.get(position).getId()));
|
tvCache.setText(FileUtils.getCacheSizeK(bookLists.get(position).getId()));
|
||||||
|
|
||||||
if(!bookLists.get(position).isLocalBook()) {
|
if (!bookLists.get(position).isLocalBook()) {
|
||||||
LinearLayout llClearCache = (LinearLayout) bottomSheetDialog.findViewById(R.id.llClearCache);
|
LinearLayout llClearCache = (LinearLayout) bottomSheetDialog.findViewById(R.id.llClearCache);
|
||||||
|
|
||||||
llClearCache.setOnClickListener(new View.OnClickListener() {
|
llClearCache.setOnClickListener(new View.OnClickListener() {
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
FileUtils.clearChapterCache(bookLists.get(position).getId());
|
FileUtils.clearChapterCache(bookLists.get(position).getId());
|
||||||
long size = FileUtils.getCacheSize(bookLists.get(position).getId());
|
long size = FileUtils.getCacheSize(bookLists.get(position).getId());
|
||||||
size = size / 1024;
|
size = size / 1024;
|
||||||
tvCache.setText(String.format("%sK", size));
|
tvCache.setText(String.format("%sK", size));
|
||||||
Toast.makeText(activity, "缓存清除成功", Toast.LENGTH_SHORT);
|
Toast.makeText(activity, "缓存清除成功", Toast.LENGTH_SHORT);
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}else{
|
} else {
|
||||||
TextView tvClearCache = (TextView) bottomSheetDialog.findViewById(R.id.tvClearCache);
|
TextView tvClearCache = (TextView) bottomSheetDialog.findViewById(R.id.tvClearCache);
|
||||||
tvClearCache.setText("导入文本");
|
tvClearCache.setText("导入文本");
|
||||||
}
|
}
|
||||||
|
|
||||||
LinearLayout lltop =(LinearLayout) bottomSheetDialog.findViewById(R.id.llTop);
|
LinearLayout lltop = (LinearLayout) bottomSheetDialog.findViewById(R.id.llTop);
|
||||||
TextView tvTop =(TextView) bottomSheetDialog.findViewById(R.id.tvTop);
|
TextView tvTop = (TextView) bottomSheetDialog.findViewById(R.id.tvTop);
|
||||||
ImageView imgTop =(ImageView) bottomSheetDialog.findViewById(R.id.imageTop);
|
ImageView imgTop = (ImageView) bottomSheetDialog.findViewById(R.id.imageTop);
|
||||||
if( bookLists.get(position).isTop()){
|
if (bookLists.get(position).isTop()) {
|
||||||
|
|
||||||
tvTop.setText("取消置顶");
|
tvTop.setText("取消置顶");
|
||||||
imgTop.setImageResource(R.mipmap.star_inactive);
|
imgTop.setImageResource(R.mipmap.star_inactive);
|
||||||
|
|
||||||
}else{
|
} else {
|
||||||
tvTop.setText("置顶显示");
|
tvTop.setText("置顶显示");
|
||||||
imgTop.setImageResource(R.mipmap.star_active);
|
imgTop.setImageResource(R.mipmap.star_active);
|
||||||
}
|
}
|
||||||
|
|
||||||
lltop.setOnClickListener(new View.OnClickListener() {
|
lltop.setOnClickListener(new View.OnClickListener() {
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if( bookLists.get(position).isTop()){
|
if (bookLists.get(position).isTop()) {
|
||||||
bookLists.get(position).setToDefault("isTop");
|
bookLists.get(position).setToDefault("isTop");
|
||||||
tvTop.setText("置顶显示");
|
tvTop.setText("置顶显示");
|
||||||
imgTop.setImageResource(R.mipmap.star_active);
|
imgTop.setImageResource(R.mipmap.star_active);
|
||||||
|
|
||||||
}else{
|
} else {
|
||||||
bookLists.get(position).setTop(true);
|
bookLists.get(position).setTop(true);
|
||||||
tvTop.setText("取消置顶");
|
tvTop.setText("取消置顶");
|
||||||
imgTop.setImageResource(R.mipmap.star_inactive);
|
imgTop.setImageResource(R.mipmap.star_inactive);
|
||||||
}
|
}
|
||||||
|
|
||||||
bookLists.get(position).update( bookLists.get(position).getId());
|
bookLists.get(position).update(bookLists.get(position).getId());
|
||||||
|
|
||||||
loadNovelsOnShelf();
|
loadNovelsOnShelf();
|
||||||
mAdapter.setData(bookLists);
|
mAdapter.setData(bookLists);
|
||||||
|
|
||||||
//Toast.makeText(activity,"缓存清除成功",Toast.LENGTH_SHORT);
|
//Toast.makeText(activity,"缓存清除成功",Toast.LENGTH_SHORT);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bottomSheetDialog.show();
|
bottomSheetDialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -445,35 +451,33 @@ void test(int maxAge){
|
||||||
@BindView(R.id.btnSelect)
|
@BindView(R.id.btnSelect)
|
||||||
Button btnSelectAll;
|
Button btnSelectAll;
|
||||||
|
|
||||||
@OnClick({R.id.btnSelect,R.id.btnDelete})
|
@OnClick({R.id.btnSelect, R.id.btnDelete})
|
||||||
void shelfZhengliSubmit(View view){
|
void shelfZhengliSubmit(View view) {
|
||||||
if(view.getId()== R.id.btnSelect) {
|
if (view.getId() == R.id.btnSelect) {
|
||||||
|
|
||||||
if(isSelectAll) {
|
if (isSelectAll) {
|
||||||
btnSelectAll.setText("全不选");
|
btnSelectAll.setText("全不选");
|
||||||
|
|
||||||
}else
|
} else {
|
||||||
{
|
|
||||||
btnSelectAll.setText("全选");
|
btnSelectAll.setText("全选");
|
||||||
}
|
}
|
||||||
for (int i = 0; i < flag.length; i++) {
|
for (int i = 0; i < flag.length; i++) {
|
||||||
flag[i] = isSelectAll;
|
flag[i] = isSelectAll;
|
||||||
}
|
}
|
||||||
isSelectAll =!isSelectAll;
|
isSelectAll = !isSelectAll;
|
||||||
mChkAdapter.notifyDataSetChanged();
|
mChkAdapter.notifyDataSetChanged();
|
||||||
}else if(view.getId()== R.id.btnDelete){
|
} else if (view.getId() == R.id.btnDelete) {
|
||||||
List<Integer> toRemove = new ArrayList<Integer>();
|
List<Integer> toRemove = new ArrayList<Integer>();
|
||||||
for (int i = 0; i < bookLists.size(); i++) {
|
for (int i = 0; i < bookLists.size(); i++) {
|
||||||
if(flag[i] ){
|
if (flag[i]) {
|
||||||
Novel nv = bookLists.get(i);
|
Novel nv = bookLists.get(i);
|
||||||
if(nv.isLocalBook())
|
if (nv.isLocalBook()) {
|
||||||
{
|
|
||||||
|
|
||||||
nv.delete();
|
nv.delete();
|
||||||
LitePal.deleteAllAsync(Chapter.class,"novelId=?",nv.getId()+"");
|
LitePal.deleteAllAsync(Chapter.class, "novelId=?", nv.getId() + "");
|
||||||
//TODO: remove cache on a new thread
|
//TODO: remove cache on a new thread
|
||||||
FileUtils.clearChapterCache(nv.getId());
|
FileUtils.clearChapterCache(nv.getId());
|
||||||
}else{
|
} else {
|
||||||
Log.d(TAG, "shelfZhengliSubmit: to delete novel " + nv.getName());
|
Log.d(TAG, "shelfZhengliSubmit: to delete novel " + nv.getName());
|
||||||
nv.setToDefault("isOnShelf");
|
nv.setToDefault("isOnShelf");
|
||||||
nv.setToDefault("isTop");
|
nv.setToDefault("isTop");
|
||||||
|
@ -482,8 +486,8 @@ void test(int maxAge){
|
||||||
// nv.update(nv.getId()); //not work,,,If you set a default value to a field, the corresponding column won't be updated.
|
// nv.update(nv.getId()); //not work,,,If you set a default value to a field, the corresponding column won't be updated.
|
||||||
}
|
}
|
||||||
|
|
||||||
// flag = new boolean[bookLists.size()];
|
// flag = new boolean[bookLists.size()];
|
||||||
// bookLists.remove(i);
|
// bookLists.remove(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -494,60 +498,47 @@ void test(int maxAge){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
bookLists =Novel.getNovelsOnShelf();
|
bookLists = Novel.getNovelsOnShelf();
|
||||||
flag = new boolean[bookLists.size()];
|
flag = new boolean[bookLists.size()];
|
||||||
zhengliShelf();
|
zhengliShelf();
|
||||||
initData();
|
initData();
|
||||||
// mChkAdapter.notifyDataSetChanged();
|
// mChkAdapter.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void initZhengliDialog( ) {
|
private void initZhengliDialog() {
|
||||||
zhengliShelf();
|
zhengliShelf();
|
||||||
llShelfBottom.setVisibility(View.VISIBLE);
|
llShelfBottom.setVisibility(View.VISIBLE);
|
||||||
Main2Activity main2Activity = (Main2Activity)activity;
|
Main2Activity main2Activity = (Main2Activity) activity;
|
||||||
main2Activity.switchShelfZhengli(false);
|
main2Activity.switchShelfZhengli(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onResume() {
|
|
||||||
super.onResume();
|
|
||||||
getUpdatedData(); //TODO: 更新书的状态,是不有更新
|
|
||||||
if(bottomSheetDialog!=null){
|
|
||||||
bottomSheetDialog.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
CheckAdapter mChkAdapter;
|
||||||
|
|
||||||
|
void zhengliShelf() {
|
||||||
|
mChkAdapter = new CheckAdapter(activity, bookLists, R.layout.recycle_list_item, new OnItemClickListener() {
|
||||||
CheckAdapter mChkAdapter;
|
|
||||||
void zhengliShelf(){
|
|
||||||
mChkAdapter = new CheckAdapter(activity,bookLists,R.layout.recycle_list_item,new OnItemClickListener()
|
|
||||||
{
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemClick(View view, int position)
|
public void onItemClick(View view, int position) {
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemLongClick(View view, int position)
|
public void onItemLongClick(View view, int position) {
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLinearOutClick(View view, int position ,int llId) {
|
public void onLinearOutClick(View view, int position, int llId) {
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
mRecyclerView.setLayoutManager(new GridLayoutManager(activity,3));
|
mRecyclerView.setLayoutManager(new GridLayoutManager(activity, 3));
|
||||||
mRecyclerView.setAdapter(mChkAdapter );
|
mRecyclerView.setAdapter(mChkAdapter);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -563,12 +554,14 @@ void test(int maxAge){
|
||||||
private List<Novel> mDatas = new ArrayList<Novel>();
|
private List<Novel> mDatas = new ArrayList<Novel>();
|
||||||
private OnItemClickListener mOnItemClickListener;
|
private OnItemClickListener mOnItemClickListener;
|
||||||
private int listItemID;
|
private int listItemID;
|
||||||
public CheckAdapter(Context context,List<Novel> mDatas,int listItemID,OnItemClickListener clickLitener) {
|
|
||||||
|
public CheckAdapter(Context context, List<Novel> mDatas, int listItemID, OnItemClickListener clickLitener) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.mDatas = mDatas;
|
this.mDatas = mDatas;
|
||||||
this.mOnItemClickListener = clickLitener;
|
this.mOnItemClickListener = clickLitener;
|
||||||
this.listItemID = listItemID;
|
this.listItemID = listItemID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CheckAdapter(Context context, OnItemClickListener clickLitener) {
|
public CheckAdapter(Context context, OnItemClickListener clickLitener) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.mOnItemClickListener = clickLitener;
|
this.mOnItemClickListener = clickLitener;
|
||||||
|
@ -577,9 +570,9 @@ void test(int maxAge){
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemViewType(int position) {
|
public int getItemViewType(int position) {
|
||||||
if(mDatas.size() == 0){
|
if (mDatas.size() == 0) {
|
||||||
return EMPTY_VIEW;
|
return EMPTY_VIEW;
|
||||||
} else if(mDatas.get(position) == null){
|
} else if (mDatas.get(position) == null) {
|
||||||
return PROGRESS_VIEW;
|
return PROGRESS_VIEW;
|
||||||
} else {
|
} else {
|
||||||
return super.getItemViewType(position);
|
return super.getItemViewType(position);
|
||||||
|
@ -587,8 +580,7 @@ void test(int maxAge){
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
|
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||||
{
|
|
||||||
MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
|
MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
|
||||||
context).inflate(listItemID, parent,
|
context).inflate(listItemID, parent,
|
||||||
false));
|
false));
|
||||||
|
@ -596,60 +588,51 @@ void test(int maxAge){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setParameters(List<Novel> mDatas, int listItemID) {
|
||||||
public void setParameters(List<Novel> mDatas,int listItemID ) {
|
|
||||||
this.mDatas = mDatas;
|
this.mDatas = mDatas;
|
||||||
this.listItemID = listItemID;
|
this.listItemID = listItemID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOnItemClickLitener(OnItemClickListener mOnItemClickLitener)
|
public void setOnItemClickLitener(OnItemClickListener mOnItemClickLitener) {
|
||||||
{
|
|
||||||
this.mOnItemClickListener = mOnItemClickLitener;
|
this.mOnItemClickListener = mOnItemClickLitener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(MyViewHolder holder, int position)
|
public void onBindViewHolder(MyViewHolder holder, int position) {
|
||||||
{
|
|
||||||
|
|
||||||
holder.tvTitle.setText(mDatas.get(position).getName());
|
holder.tvTitle.setText(mDatas.get(position).getName());
|
||||||
if(holder.tvAuthor!=null) holder.tvAuthor.setText(mDatas.get(position).getAuthor());
|
if (holder.tvAuthor != null) holder.tvAuthor.setText(mDatas.get(position).getAuthor());
|
||||||
if(holder.tvCate!=null) holder.tvCate.setText(mDatas.get(position).getNovelType());
|
if (holder.tvCate != null) holder.tvCate.setText(mDatas.get(position).getNovelType());
|
||||||
if(holder.tvDesc!=null) holder.tvDesc.setText(mDatas.get(position).getDesc ());
|
if (holder.tvDesc != null) holder.tvDesc.setText(mDatas.get(position).getDesc());
|
||||||
if(holder.checkBox!=null) holder.checkBox.setVisibility(View.VISIBLE);
|
if (holder.checkBox != null) holder.checkBox.setVisibility(View.VISIBLE);
|
||||||
if (holder.imageView != null && !TextUtils.isEmpty(mDatas.get(position).getCover())) {
|
if (holder.imageView != null && !TextUtils.isEmpty(mDatas.get(position).getCover())) {
|
||||||
loader.displayImage(context, NetUtil.getCoverUrl(mDatas.get(position).getCover()) ,holder.imageView);
|
loader.displayImage(context, NetUtil.getCoverUrl(mDatas.get(position).getCover()), holder.imageView);
|
||||||
}
|
}
|
||||||
if( mDatas.get(position).isTop()){
|
if (mDatas.get(position).isTop()) {
|
||||||
holder.imageTop.setVisibility(View.VISIBLE);
|
holder.imageTop.setVisibility(View.VISIBLE);
|
||||||
}else{
|
} else {
|
||||||
holder.imageTop.setVisibility(View.GONE);
|
holder.imageTop.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
// 如果设置了回调,则设置点击事件
|
// 如果设置了回调,则设置点击事件
|
||||||
if (mOnItemClickListener != null)
|
if (mOnItemClickListener != null) {
|
||||||
{
|
|
||||||
holder.checkBox.setOnCheckedChangeListener(null);//先设置一次CheckBox的选中监听器,传入参数null
|
holder.checkBox.setOnCheckedChangeListener(null);//先设置一次CheckBox的选中监听器,传入参数null
|
||||||
holder.checkBox.setChecked(flag[position]);//用数组中的值设置CheckBox的选中状态
|
holder.checkBox.setChecked(flag[position]);//用数组中的值设置CheckBox的选中状态
|
||||||
|
|
||||||
holder.itemView.setOnClickListener(new View.OnClickListener()
|
holder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||||
{
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v)
|
public void onClick(View v) {
|
||||||
{
|
holder.checkBox.setChecked(!holder.checkBox.isChecked());
|
||||||
holder.checkBox.setChecked( !holder.checkBox.isChecked());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
holder.itemView.setOnLongClickListener(new View.OnLongClickListener()
|
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
|
||||||
{
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onLongClick(View v)
|
public boolean onLongClick(View v) {
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//再设置一次CheckBox的选中监听器,当CheckBox的选中状态发生改变时,把改变后的状态储存在数组中
|
//再设置一次CheckBox的选中监听器,当CheckBox的选中状态发生改变时,把改变后的状态储存在数组中
|
||||||
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -662,12 +645,12 @@ void test(int maxAge){
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemCount()
|
public int getItemCount() {
|
||||||
{
|
|
||||||
return mDatas.size();
|
return mDatas.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addData(int position) {
|
public void addData(int position) {
|
||||||
// mDatas.add(position, "Insert One");
|
// mDatas.add(position, "Insert One");
|
||||||
notifyItemInserted(position);
|
notifyItemInserted(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -675,8 +658,8 @@ void test(int maxAge){
|
||||||
mDatas.remove(position);
|
mDatas.remove(position);
|
||||||
notifyItemRemoved(position);
|
notifyItemRemoved(position);
|
||||||
}
|
}
|
||||||
class MyViewHolder extends RecyclerView.ViewHolder
|
|
||||||
{
|
class MyViewHolder extends RecyclerView.ViewHolder {
|
||||||
@BindView(R.id.id_check_box)
|
@BindView(R.id.id_check_box)
|
||||||
CheckBox checkBox;
|
CheckBox checkBox;
|
||||||
@BindView(R.id.imageView)
|
@BindView(R.id.imageView)
|
||||||
|
@ -695,8 +678,8 @@ void test(int maxAge){
|
||||||
@Nullable
|
@Nullable
|
||||||
@BindView(R.id.desc)
|
@BindView(R.id.desc)
|
||||||
TextView tvDesc;
|
TextView tvDesc;
|
||||||
public MyViewHolder(View view)
|
|
||||||
{
|
public MyViewHolder(View view) {
|
||||||
super(view);
|
super(view);
|
||||||
ButterKnife.bind(this, view);
|
ButterKnife.bind(this, view);
|
||||||
//tvTitle = (TextView) view.findViewById(R.id.title);
|
//tvTitle = (TextView) view.findViewById(R.id.title);
|
||||||
|
@ -706,4 +689,30 @@ void test(int maxAge){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
getUpdatedData(); //TODO: 更新书的状态,是不有更新
|
||||||
|
if (bottomSheetDialog != null) {
|
||||||
|
bottomSheetDialog.hide();
|
||||||
|
}
|
||||||
|
MobclickAgent.onPageStart(TAG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
MobclickAgent.onPageEnd(TAG);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------toutiao ad
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ import com.novelbook.android.adapter.BandanAdapter;
|
||||||
import com.novelbook.android.utils.Constants;
|
import com.novelbook.android.utils.Constants;
|
||||||
import com.novelbook.android.utils.GsonUtil;
|
import com.novelbook.android.utils.GsonUtil;
|
||||||
import com.novelbook.android.utils.OnItemClickListener;
|
import com.novelbook.android.utils.OnItemClickListener;
|
||||||
|
import com.umeng.analytics.MobclickAgent;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -123,7 +124,8 @@ public class Fragment_bangdan extends BasicFragment {
|
||||||
BookSubscribe.getPaihangBangByCate( Constants.SEX,cid,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
|
BookSubscribe.getPaihangBangByCate( Constants.SEX,cid,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(String result) {
|
public void onSuccess(String result) {
|
||||||
|
Log.d(TAG, String.format("init data HttpMethods successed on init, trycnt %s " ,error_try));
|
||||||
|
error_try =0;
|
||||||
// mFirstPage= gson.fromJson(result, FirstPage.class);
|
// mFirstPage= gson.fromJson(result, FirstPage.class);
|
||||||
try {
|
try {
|
||||||
mMoreBlocks = GsonUtil.parserNovleBlocks(result,"ranks");
|
mMoreBlocks = GsonUtil.parserNovleBlocks(result,"ranks");
|
||||||
|
@ -138,8 +140,14 @@ public class Fragment_bangdan extends BasicFragment {
|
||||||
@Override
|
@Override
|
||||||
public void onFault(String errorMsg) {
|
public void onFault(String errorMsg) {
|
||||||
//失败
|
//失败
|
||||||
Log.d(TAG, "error on : " + errorMsg);
|
|
||||||
handler.sendEmptyMessage(1);
|
Log.d(TAG, String.format("init data HttpMethods error on init, trycnt %s " ,error_try ));
|
||||||
|
if(error_try<error_try_max){
|
||||||
|
error_try++;
|
||||||
|
initData();
|
||||||
|
}else {
|
||||||
|
handler.sendEmptyMessage(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, getActivity()));
|
}, getActivity()));
|
||||||
|
|
||||||
|
@ -166,6 +174,15 @@ public class Fragment_bangdan extends BasicFragment {
|
||||||
public void setFTag() {
|
public void setFTag() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
MobclickAgent.onPageStart(TAG);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onPause(){
|
||||||
|
super.onPause();
|
||||||
|
MobclickAgent.onPageEnd(TAG);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ import com.novelbook.android.netutils.OnSuccessAndFaultListener;
|
||||||
import com.novelbook.android.netutils.OnSuccessAndFaultSub;
|
import com.novelbook.android.netutils.OnSuccessAndFaultSub;
|
||||||
import com.novelbook.android.utils.Constants;
|
import com.novelbook.android.utils.Constants;
|
||||||
import com.novelbook.android.utils.GsonUtil;
|
import com.novelbook.android.utils.GsonUtil;
|
||||||
|
import com.umeng.analytics.MobclickAgent;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -157,6 +158,8 @@ public class Fragment_bangdans extends BasicFragment {
|
||||||
BookSubscribe.getPaihangBangCateList(Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
|
BookSubscribe.getPaihangBangCateList(Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(String result) {
|
public void onSuccess(String result) {
|
||||||
|
Log.d(TAG, String.format("init data HttpMethods successed on init, trycnt %s " ,error_try));
|
||||||
|
error_try =0;
|
||||||
try {
|
try {
|
||||||
|
|
||||||
mCateList = GsonUtil.parserBangdanCate(result,"subCategories");
|
mCateList = GsonUtil.parserBangdanCate(result,"subCategories");
|
||||||
|
@ -174,12 +177,21 @@ public class Fragment_bangdans 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, String.format("init data HttpMethods error on init, trycnt %s " ,error_try ));
|
||||||
// getSearchTabTtitle();
|
// getSearchTabTtitle();
|
||||||
handler.sendEmptyMessage(0);
|
retryErorr(0);
|
||||||
}
|
}
|
||||||
},getActivity()));
|
},getActivity()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
MobclickAgent.onPageStart(TAG);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onPause(){
|
||||||
|
super.onPause();
|
||||||
|
MobclickAgent.onPageEnd(TAG);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import android.view.View;
|
||||||
|
|
||||||
import com.novelbook.android.R;
|
import com.novelbook.android.R;
|
||||||
import com.flyco.tablayout.SlidingTabLayout;
|
import com.flyco.tablayout.SlidingTabLayout;
|
||||||
|
import com.umeng.analytics.MobclickAgent;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
@ -28,7 +29,7 @@ public class Fragment_bookStore extends BasicFragment {
|
||||||
SlidingTabLayout tabLayout;
|
SlidingTabLayout tabLayout;
|
||||||
private FragmentStatePagerAdapter mAdapter =null;
|
private FragmentStatePagerAdapter mAdapter =null;
|
||||||
private ArrayList<BasicFragment> mFragments;
|
private ArrayList<BasicFragment> mFragments;
|
||||||
private ArrayList<BasicFragment> mFragments_cp;
|
// private ArrayList<BasicFragment> mFragments_cp;
|
||||||
ArrayList<View> mList;
|
ArrayList<View> mList;
|
||||||
String[] mTitle;
|
String[] mTitle;
|
||||||
Fragment_jingxuan fragment_jingxuan;
|
Fragment_jingxuan fragment_jingxuan;
|
||||||
|
@ -111,8 +112,8 @@ public class Fragment_bookStore extends BasicFragment {
|
||||||
mFragments.add(fragment_jingxuan);
|
mFragments.add(fragment_jingxuan);
|
||||||
mFragments.add(fragmentCates);
|
mFragments.add(fragmentCates);
|
||||||
mFragments.add(fragment_bangdans);
|
mFragments.add(fragment_bangdans);
|
||||||
mFragments_cp = new ArrayList<>();
|
// mFragments_cp = new ArrayList<>();
|
||||||
mFragments_cp.addAll(mFragments);
|
// mFragments_cp.addAll(mFragments);
|
||||||
// mFragments.add(new Fragment_shudan());
|
// mFragments.add(new Fragment_shudan());
|
||||||
Log.d(TAG,"initial fragments in tabs ");
|
Log.d(TAG,"initial fragments in tabs ");
|
||||||
}
|
}
|
||||||
|
@ -144,7 +145,16 @@ public class Fragment_bookStore extends BasicFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
MobclickAgent.onPageStart(TAG);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onPause(){
|
||||||
|
super.onPause();
|
||||||
|
MobclickAgent.onPageEnd(TAG);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ import com.novelbook.android.utils.Constants;
|
||||||
import com.novelbook.android.utils.GsonUtil;
|
import com.novelbook.android.utils.GsonUtil;
|
||||||
import com.novelbook.android.utils.OnItemClickListener;
|
import com.novelbook.android.utils.OnItemClickListener;
|
||||||
import com.novelbook.android.adapter.BookListAdapter;
|
import com.novelbook.android.adapter.BookListAdapter;
|
||||||
|
import com.umeng.analytics.MobclickAgent;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.litepal.LitePal;
|
import org.litepal.LitePal;
|
||||||
|
@ -379,6 +380,12 @@ public class Fragment_booklist extends BasicFragment {
|
||||||
initData();
|
initData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
MobclickAgent.onPageStart(TAG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause(){
|
||||||
|
super.onPause();
|
||||||
|
MobclickAgent.onPageEnd(TAG);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,7 @@ import com.novelbook.android.utils.ImageUtil;
|
||||||
import com.novelbook.android.utils.MyViewPager;
|
import com.novelbook.android.utils.MyViewPager;
|
||||||
import com.novelbook.android.utils.OnItemClickListener;
|
import com.novelbook.android.utils.OnItemClickListener;
|
||||||
import com.novelbook.android.adapter.BookListAdapter;
|
import com.novelbook.android.adapter.BookListAdapter;
|
||||||
|
import com.umeng.analytics.MobclickAgent;
|
||||||
import com.youth.banner.Banner;
|
import com.youth.banner.Banner;
|
||||||
import com.youth.banner.BannerConfig;
|
import com.youth.banner.BannerConfig;
|
||||||
import com.youth.banner.Transformer;
|
import com.youth.banner.Transformer;
|
||||||
|
@ -156,7 +157,8 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener
|
||||||
BookSubscribe.getFirstPage(Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
|
BookSubscribe.getFirstPage(Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(String result) {
|
public void onSuccess(String result) {
|
||||||
|
Log.d(TAG, String.format("init data HttpMethods successed on init, trycnt %s " ,error_try));
|
||||||
|
error_try=0;
|
||||||
// mFirstPage= gson.fromJson(result, FirstPage.class);
|
// mFirstPage= gson.fromJson(result, FirstPage.class);
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
@ -171,8 +173,8 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener
|
||||||
@Override
|
@Override
|
||||||
public void onFault(String errorMsg) {
|
public void onFault(String errorMsg) {
|
||||||
//失败
|
//失败
|
||||||
Log.d(TAG, "error on get firstpage: " + errorMsg);
|
// Log.d(TAG, String.format("init data HttpMethods error on init, trycnt %s " ,error_try ));
|
||||||
handler.sendEmptyMessage(1);
|
retryErorr(1);
|
||||||
|
|
||||||
}
|
}
|
||||||
}, getActivity()));
|
}, getActivity()));
|
||||||
|
@ -276,6 +278,7 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initViews() {
|
public void initViews() {
|
||||||
|
|
||||||
gridItemSpace = getResources().getDimensionPixelSize(R.dimen._10dp);
|
gridItemSpace = getResources().getDimensionPixelSize(R.dimen._10dp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -659,5 +662,14 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
MobclickAgent.onPageStart(TAG);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onPause(){
|
||||||
|
super.onPause();
|
||||||
|
MobclickAgent.onPageEnd(TAG);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -10,6 +10,7 @@ import android.widget.TextView;
|
||||||
|
|
||||||
import com.novelbook.android.R;
|
import com.novelbook.android.R;
|
||||||
import com.novelbook.android.db.Novel;
|
import com.novelbook.android.db.Novel;
|
||||||
|
import com.umeng.analytics.MobclickAgent;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -133,5 +134,14 @@ public class Fragment_jingxuan_tuijian extends BasicFragment {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
MobclickAgent.onPageStart(TAG);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onPause(){
|
||||||
|
super.onPause();
|
||||||
|
MobclickAgent.onPageEnd(TAG);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ import com.novelbook.android.utils.OnItemClickListener;
|
||||||
import com.novelbook.android.adapter.BookListAdapter;
|
import com.novelbook.android.adapter.BookListAdapter;
|
||||||
import com.flyco.tablayout.CommonTabLayout;
|
import com.flyco.tablayout.CommonTabLayout;
|
||||||
import com.flyco.tablayout.listener.CustomTabEntity;
|
import com.flyco.tablayout.listener.CustomTabEntity;
|
||||||
|
import com.umeng.analytics.MobclickAgent;
|
||||||
|
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
@ -186,7 +187,8 @@ public static final String TAG = Fragment_paihang.class.getSimpleName();
|
||||||
OnSuccessAndFaultListener successAndFaultListener = new OnSuccessAndFaultListener() {
|
OnSuccessAndFaultListener successAndFaultListener = new OnSuccessAndFaultListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(String result) {
|
public void onSuccess(String result) {
|
||||||
|
error_try=0;
|
||||||
|
Log.d(TAG, String.format("init data HttpMethods successed on init, trycnt %s " ,error_try));
|
||||||
// mFirstPage= gson.fromJson(result, FirstPage.class);
|
// mFirstPage= gson.fromJson(result, FirstPage.class);
|
||||||
try {
|
try {
|
||||||
JSONObject jsonObject = new JSONObject(result);
|
JSONObject jsonObject = new JSONObject(result);
|
||||||
|
@ -204,8 +206,10 @@ public static final String TAG = Fragment_paihang.class.getSimpleName();
|
||||||
@Override
|
@Override
|
||||||
public void onFault(String errorMsg) {
|
public void onFault(String errorMsg) {
|
||||||
//失败
|
//失败
|
||||||
Log.d(TAG, "error on get firstpage: " + errorMsg);
|
|
||||||
handler.sendEmptyMessage(1);
|
// Log.d(TAG, String.format("init data HttpMethods error on init, trycnt %s " ,error_try ));
|
||||||
|
// getSearchTabTtitle();
|
||||||
|
retryErorr(0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
showProgressDialog(false, "正在加载...");
|
showProgressDialog(false, "正在加载...");
|
||||||
|
@ -402,13 +406,6 @@ public static final String TAG = Fragment_paihang.class.getSimpleName();
|
||||||
//------------滑动监听
|
//------------滑动监听
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onResume() {
|
|
||||||
super.onResume();
|
|
||||||
//mNestedScrollView.smoothScrollBy(1,1);
|
|
||||||
// tvHint.setVisibility(isShowHint? View.VISIBLE:View.GONE);
|
|
||||||
// tmp=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -417,5 +414,14 @@ public static final String TAG = Fragment_paihang.class.getSimpleName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
MobclickAgent.onPageStart(TAG);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onPause(){
|
||||||
|
super.onPause();
|
||||||
|
MobclickAgent.onPageEnd(TAG);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ import com.novelbook.android.Activity_createShudan;
|
||||||
import com.novelbook.android.Activity_shudan_my;
|
import com.novelbook.android.Activity_shudan_my;
|
||||||
import com.novelbook.android.R;
|
import com.novelbook.android.R;
|
||||||
import com.flyco.tablayout.SlidingTabLayout;
|
import com.flyco.tablayout.SlidingTabLayout;
|
||||||
|
import com.umeng.analytics.MobclickAgent;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
@ -181,5 +182,14 @@ public class Fragment_shudan extends BasicFragment {
|
||||||
if( bottomSheetDialog !=null ){
|
if( bottomSheetDialog !=null ){
|
||||||
bottomSheetDialog.dismiss();
|
bottomSheetDialog.dismiss();
|
||||||
}
|
}
|
||||||
|
MobclickAgent.onPageStart(TAG);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause(){
|
||||||
|
super.onPause();
|
||||||
|
MobclickAgent.onPageEnd(TAG);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ import com.novelbook.android.db.Novel;
|
||||||
import com.novelbook.android.db.BookDan;
|
import com.novelbook.android.db.BookDan;
|
||||||
import com.novelbook.android.utils.OnItemClickListener;
|
import com.novelbook.android.utils.OnItemClickListener;
|
||||||
import com.novelbook.android.adapter.BookListAdapter;
|
import com.novelbook.android.adapter.BookListAdapter;
|
||||||
|
import com.umeng.analytics.MobclickAgent;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -109,13 +110,8 @@ public class Fragment_shudan_list extends BasicFragment {
|
||||||
initialBookList();
|
initialBookList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onResume() {
|
|
||||||
super.onResume();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
|
|
|
@ -13,6 +13,7 @@ import android.support.v4.app.Fragment;
|
||||||
import android.support.v4.app.FragmentManager;
|
import android.support.v4.app.FragmentManager;
|
||||||
import android.support.v4.app.FragmentTransaction;
|
import android.support.v4.app.FragmentTransaction;
|
||||||
import android.support.v7.widget.AppCompatSpinner;
|
import android.support.v7.widget.AppCompatSpinner;
|
||||||
|
import android.util.DisplayMetrics;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
@ -23,6 +24,7 @@ import android.support.v7.app.ActionBarDrawerToggle;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
import android.view.WindowManager;
|
||||||
import android.widget.RadioButton;
|
import android.widget.RadioButton;
|
||||||
import android.widget.RadioGroup;
|
import android.widget.RadioGroup;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
@ -46,6 +48,7 @@ import com.novelbook.android.utils.PageFactory;
|
||||||
|
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
import org.litepal.util.Const;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
@ -97,6 +100,13 @@ public class Main2Activity extends Activity_base
|
||||||
initialSexOption();
|
initialSexOption();
|
||||||
// checkUpdate(true);
|
// checkUpdate(true);
|
||||||
CommonUtil.getSearchTabTtitle(this);
|
CommonUtil.getSearchTabTtitle(this);
|
||||||
|
DisplayMetrics metric = new DisplayMetrics();
|
||||||
|
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
|
||||||
|
wm.getDefaultDisplay().getMetrics(metric);
|
||||||
|
Constants.SCREEN_WIDTH_PIX = metric.widthPixels;
|
||||||
|
// mHeight = metric.heightPixels;
|
||||||
|
// mHeight = CommonUtil.getDpi(context);
|
||||||
|
Constants.SCREEN_HEIGHT_PIX = CommonUtil.getScreenHeight(this) - CommonUtil.statusBarDiff(this);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -249,38 +259,8 @@ public class Main2Activity extends Activity_base
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* @Override
|
|
||||||
public void onBackPressed() {
|
|
||||||
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
|
|
||||||
if (drawer.isDrawerOpen(GravityCompat.START)) {
|
|
||||||
drawer.closeDrawer(GravityCompat.START);
|
|
||||||
} else {
|
|
||||||
super.onBackPressed();
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* @Override
|
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
|
||||||
// Handle action bar item clicks here. The action bar will
|
|
||||||
// automatically handle clicks on the Home/Up button, so long
|
|
||||||
// as you specify a parent activity in AndroidManifest.xml.
|
|
||||||
int id = item.getItemId();
|
|
||||||
|
|
||||||
//noinspection SimplifiableIfStatement
|
|
||||||
if (id == R.id.action_settings) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if(id==R.id.menuSearch){
|
|
||||||
Intent intent = new Intent(this,Activity_Search.class);
|
|
||||||
startActivity(intent);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.onOptionsItemSelected(item);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
@SuppressWarnings("StatementWithEmptyBody")
|
@SuppressWarnings("StatementWithEmptyBody")
|
||||||
@Override
|
@Override
|
||||||
public boolean onNavigationItemSelected(MenuItem item) {
|
public boolean onNavigationItemSelected(MenuItem item) {
|
||||||
|
|
|
@ -40,10 +40,10 @@ public class MarkActivity extends Activity_base {
|
||||||
SlidingTabLayout tabLayout;
|
SlidingTabLayout tabLayout;
|
||||||
// @Bind(R.id.lv_catalogue)
|
// @Bind(R.id.lv_catalogue)
|
||||||
// ListView lv_catalogue;
|
// ListView lv_catalogue;
|
||||||
@BindView(R.id.btnSort)
|
/*@BindView(R.id.btnSort)
|
||||||
ImageButton ibSort;
|
ImageButton ibSort;
|
||||||
@BindView(R.id.btnRefresh)
|
@BindView(R.id.btnRefresh)
|
||||||
ImageButton btnRefresh;
|
ImageButton btnRefresh;*/
|
||||||
|
|
||||||
|
|
||||||
private PageFactory pageFactory;
|
private PageFactory pageFactory;
|
||||||
|
@ -60,12 +60,20 @@ public class MarkActivity extends Activity_base {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void initViews() {
|
protected void initViews() {
|
||||||
if(getFactory().getNovle().isLocalBook()) {
|
/* if(getFactory().getNovle().isLocalBook()) {
|
||||||
// btnRefresh.setEnabled(false);
|
// btnRefresh.setEnabled(false);
|
||||||
btnRefresh.setVisibility(View.GONE);
|
btnRefresh.setVisibility(View.GONE);
|
||||||
}
|
}*/
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||||
|
Log.e(TAG, "onPrepareOptionsMenu");
|
||||||
|
if(getFactory().getNovle().isLocalBook()) {
|
||||||
|
// btnRefresh.setEnabled(false);
|
||||||
|
menu.findItem(R.id.action_refresh).setVisible(false);
|
||||||
|
}
|
||||||
|
return super.onPrepareOptionsMenu(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setTitle() {
|
protected void setTitle() {
|
||||||
|
|
||||||
|
@ -107,7 +115,7 @@ public class MarkActivity extends Activity_base {
|
||||||
protected void initListener() {
|
protected void initListener() {
|
||||||
|
|
||||||
}
|
}
|
||||||
@OnClick({R.id.btnSort,R.id.btnRefresh})
|
/*@OnClick({R.id.btnSort,R.id.btnRefresh})
|
||||||
void Onclick(View view){
|
void Onclick(View view){
|
||||||
if(view.getId() == R.id.btnSort){
|
if(view.getId() == R.id.btnSort){
|
||||||
Log.d(TAG, "Onclick: sorted");
|
Log.d(TAG, "Onclick: sorted");
|
||||||
|
@ -131,7 +139,7 @@ public class MarkActivity extends Activity_base {
|
||||||
}}
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}*/
|
||||||
private Sortcat sortcat=null;
|
private Sortcat sortcat=null;
|
||||||
private Sortmark sortmark=null;
|
private Sortmark sortmark=null;
|
||||||
|
|
||||||
|
@ -176,6 +184,25 @@ public class MarkActivity extends Activity_base {
|
||||||
intent.putExtra(Activity_ChgSource.EXTR_cate,true);
|
intent.putExtra(Activity_ChgSource.EXTR_cate,true);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
finish();
|
finish();
|
||||||
|
}else
|
||||||
|
if (id == R.id.action_sort) {
|
||||||
|
Log.d(TAG, "Onclick: sorted");
|
||||||
|
|
||||||
|
if(sortcat!=null){
|
||||||
|
sortcat.sortList();
|
||||||
|
}
|
||||||
|
if(sortmark!=null){
|
||||||
|
sortmark.sortList();
|
||||||
|
}
|
||||||
|
}else
|
||||||
|
if (id == R.id.action_refresh) {
|
||||||
|
if(sortcat!=null){
|
||||||
|
sortcat.refresh();
|
||||||
|
}
|
||||||
|
if(sortmark!=null){
|
||||||
|
sortmark.refresh();
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,10 @@ import android.app.Application;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAdConfig;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAdConstant;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAdSdk;
|
||||||
|
import com.novelbook.android.AD.toutiao.TTAdManagerHolder;
|
||||||
import com.novelbook.android.netutils.HttpMethods;
|
import com.novelbook.android.netutils.HttpMethods;
|
||||||
import com.novelbook.android.netutils.NetUtil;
|
import com.novelbook.android.netutils.NetUtil;
|
||||||
import com.novelbook.android.utils.Config;
|
import com.novelbook.android.utils.Config;
|
||||||
|
@ -36,14 +40,23 @@ public class MyApp extends Application {
|
||||||
LogcatHelper.getInstance(this).start();
|
LogcatHelper.getInstance(this).start();
|
||||||
// BlurKit.init(this);
|
// BlurKit.init(this);
|
||||||
LitePal.initialize(this);
|
LitePal.initialize(this);
|
||||||
// splashAdManager = new SplashAdManager(this);
|
splashAdManager = new SplashAdManager(this);
|
||||||
initApi();
|
initUmengApi();
|
||||||
|
initAD();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initApi(){
|
private void initUmengApi(){
|
||||||
UMConfigure.init(applicationContext,UMConfigure.DEVICE_TYPE_PHONE,null);
|
UMConfigure.init(applicationContext,UMConfigure.DEVICE_TYPE_PHONE,null);
|
||||||
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
|
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
|
||||||
}
|
}
|
||||||
|
private void initAD(){
|
||||||
|
initAD_ChuanShanJia();
|
||||||
|
}
|
||||||
|
private void initAD_ChuanShanJia(){
|
||||||
|
TTAdManagerHolder.init(applicationContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean exit() {
|
public boolean exit() {
|
||||||
|
|
||||||
System.exit(-1);
|
System.exit(-1);
|
||||||
|
@ -60,6 +73,8 @@ public class MyApp extends Application {
|
||||||
oList.add(activity);//把当前Activity添加到集合中
|
oList.add(activity);//把当前Activity添加到集合中
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 销毁单个Activity
|
* 销毁单个Activity
|
||||||
*/
|
*/
|
||||||
|
@ -82,4 +97,8 @@ public class MyApp extends Application {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Activity> getActivityList(){
|
||||||
|
return oList;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,21 +18,37 @@ import android.support.v7.widget.Toolbar;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.view.animation.Animation;
|
import android.view.animation.Animation;
|
||||||
import android.view.animation.AnimationUtils;
|
import android.view.animation.AnimationUtils;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
|
|
||||||
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
import android.widget.SeekBar;
|
import android.widget.SeekBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.androidquery.callback.AQuery2;
|
||||||
|
import com.androidquery.callback.ImageOptions;
|
||||||
|
import com.bytedance.sdk.openadsdk.AdSlot;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAdConstant;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAdDislike;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAdNative;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTAppDownloadListener;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTBannerAd;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTImage;
|
||||||
|
import com.bytedance.sdk.openadsdk.TTNativeAd;
|
||||||
|
import com.novelbook.android.AD.SplashAdManager;
|
||||||
|
import com.novelbook.android.AD.toutiao.TTAdManagerHolder;
|
||||||
|
import com.novelbook.android.AD.toutiao.TToast;
|
||||||
import com.novelbook.android.db.Chapter;
|
import com.novelbook.android.db.Chapter;
|
||||||
import com.novelbook.android.db.Novel;
|
import com.novelbook.android.db.Novel;
|
||||||
import com.novelbook.android.db.BookMarks;
|
import com.novelbook.android.db.BookMarks;
|
||||||
|
@ -52,6 +68,7 @@ import org.litepal.LitePal;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -106,8 +123,8 @@ public class ReadActivity extends Activity_base implements AdInterface {
|
||||||
@BindView(R.id.appbar)
|
@BindView(R.id.appbar)
|
||||||
AppBarLayout appbar;
|
AppBarLayout appbar;
|
||||||
|
|
||||||
@BindView(R.id.llTopAd)
|
// @BindView(R.id.banner_container)
|
||||||
LinearLayout llTopAd;
|
// FrameLayout mBannerContainer;
|
||||||
@BindView(R.id.imgLoading)
|
@BindView(R.id.imgLoading)
|
||||||
pl.droidsonroids.gif.GifImageView imgLoading;
|
pl.droidsonroids.gif.GifImageView imgLoading;
|
||||||
|
|
||||||
|
@ -151,7 +168,7 @@ public class ReadActivity extends Activity_base implements AdInterface {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void initViews() {
|
protected void initViews() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -179,7 +196,7 @@ public class ReadActivity extends Activity_base implements AdInterface {
|
||||||
pageFactory = PageFactory.getInstance(getApplicationContext());
|
pageFactory = PageFactory.getInstance(getApplicationContext());
|
||||||
pageFactory.clear();
|
pageFactory.clear();
|
||||||
pageFactory.setAd(this);
|
pageFactory.setAd(this);
|
||||||
llTopAd.setVisibility(View.GONE);
|
mBannerContainer.setVisibility(View.GONE);
|
||||||
|
|
||||||
// showProgress (false,"读取目录信息");
|
// showProgress (false,"读取目录信息");
|
||||||
/* int slept = 0;
|
/* int slept = 0;
|
||||||
|
@ -406,6 +423,7 @@ public class ReadActivity extends Activity_base implements AdInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
pageFactory.prePage();
|
pageFactory.prePage();
|
||||||
|
SplashAdManager.plusPage(ReadActivity.this);
|
||||||
if (pageFactory.isfirstPage() || !pageFactory.isReady()) {
|
if (pageFactory.isfirstPage() || !pageFactory.isReady()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -426,6 +444,7 @@ public class ReadActivity extends Activity_base implements AdInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
pageFactory.nextPage();
|
pageFactory.nextPage();
|
||||||
|
SplashAdManager.plusPage(ReadActivity.this);
|
||||||
if (pageFactory.islastPage() || !pageFactory.isReady()) {
|
if (pageFactory.islastPage() || !pageFactory.isReady()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -489,7 +508,7 @@ public class ReadActivity extends Activity_base implements AdInterface {
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
hideReadSetting();
|
hideReadSetting();
|
||||||
|
pageFactory.updateTime();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -891,7 +910,7 @@ public class ReadActivity extends Activity_base implements AdInterface {
|
||||||
|
|
||||||
@OnClick({R.id.tv_progress, R.id.rl_progress, R.id.tv_pre, R.id.sb_progress, R.id.tv_next, R.id.tv_directory,
|
@OnClick({R.id.tv_progress, R.id.rl_progress, R.id.tv_pre, R.id.sb_progress, R.id.tv_next, R.id.tv_directory,
|
||||||
R.id.tv_dayornight,R.id.tv_pagemode, R.id.tv_setting, R.id.bookpop_bottom, /*R.id.rl_bottom,*/R.id.tv_stop_read
|
R.id.tv_dayornight,R.id.tv_pagemode, R.id.tv_setting, R.id.bookpop_bottom, /*R.id.rl_bottom,*/R.id.tv_stop_read
|
||||||
,R.id.llTopAd,R.id.btnRefresh})
|
,R.id.btnRefresh})
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
pageFactory.setPageWidget(bookpage);
|
pageFactory.setPageWidget(bookpage);
|
||||||
// if( pageFactory.isReady())
|
// if( pageFactory.isReady())
|
||||||
|
@ -943,11 +962,11 @@ public class ReadActivity extends Activity_base implements AdInterface {
|
||||||
isSpeaking = false;
|
isSpeaking = false;
|
||||||
hideReadSetting();
|
hideReadSetting();
|
||||||
}*/
|
}*/
|
||||||
case R.id.llTopAd:
|
/* case R.id.mBannerContainer:
|
||||||
Toast.makeText(this,"ad is clicked ",Toast.LENGTH_LONG).show();
|
Toast.makeText(this,"ad is clicked ",Toast.LENGTH_LONG).show();
|
||||||
Log.d(TAG,"Ad is clicked");
|
Log.d(TAG,"Ad is clicked");
|
||||||
|
|
||||||
break;
|
break;*/
|
||||||
case R.id.btnRefresh:
|
case R.id.btnRefresh:
|
||||||
pageFactory.retryChapt(pageFactory.getCurrentChapter());
|
pageFactory.retryChapt(pageFactory.getCurrentChapter());
|
||||||
btnRefresh.setVisibility(View.GONE);
|
btnRefresh.setVisibility(View.GONE);
|
||||||
|
@ -976,13 +995,13 @@ public class ReadActivity extends Activity_base implements AdInterface {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
final int contentAdHight=350;
|
final int contentAdHight=100;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showAd(boolean showAd ,int adHeight,int adY) {
|
public void showAd(boolean showAd ,int adHeight,int adY) {
|
||||||
|
|
||||||
hideSystemUI();
|
hideSystemUI();
|
||||||
llTopAd.setVisibility(View.GONE);
|
mBannerContainer.setVisibility(View.GONE);
|
||||||
if(!Constants.SHOWAD){
|
if(!Constants.SHOWAD){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -992,16 +1011,351 @@ public class ReadActivity extends Activity_base implements AdInterface {
|
||||||
|
|
||||||
if(adHeight >contentAdHight){
|
if(adHeight >contentAdHight){
|
||||||
|
|
||||||
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) llTopAd.getLayoutParams();
|
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) mBannerContainer.getLayoutParams();
|
||||||
params.setMargins(20, adY, 20, 10);
|
|
||||||
llTopAd.setLayoutParams(params);
|
Log.d(TAG, String.format("loadBannerAd:width %s, height %s ",Constants.SCREEN_WIDTH_PIX-50,adHeight));
|
||||||
llTopAd.setVisibility(View.VISIBLE);
|
|
||||||
|
if(adHeight>620){
|
||||||
|
loadNativeBannerAd(mBannerContainer,BuildConfig.AD_SLOT_TOUTIAO_BANNER_NATIVE_ID);
|
||||||
|
params.setMargins(20, adY-20, 20, 50);
|
||||||
|
}else{
|
||||||
|
loadBannerAd(mBannerContainer,BuildConfig.AD_SLOT_TOUTIAO_BANNER_ID, Constants.SCREEN_WIDTH_PIX-50,adHeight);
|
||||||
|
params.setMargins(20, adY, 20, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
mBannerContainer.setLayoutParams(params);
|
||||||
|
mBannerContainer.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*private void loadBannerAd(String codeId,int width,int height) {
|
||||||
|
//step4:创建广告请求参数AdSlot,具体参数含义参考文档
|
||||||
|
|
||||||
|
|
||||||
|
*//* if(height >390){
|
||||||
|
width =(int)(height*1.78);
|
||||||
|
if(width > Constants.SCREEN_WIDTH_PIX-50 ){
|
||||||
|
width= Constants.SCREEN_WIDTH_PIX-50;
|
||||||
|
height =(int)(width/1.78);
|
||||||
|
}
|
||||||
|
}else if(height >150){
|
||||||
|
width =(int)(height*1.78);
|
||||||
|
}*//*
|
||||||
|
width =990;
|
||||||
|
//height=150;
|
||||||
|
height=height > 500 ? 500: height;
|
||||||
|
Log.d(TAG, String.format("loadBannerAd:finial width %s, height %s ",width,height));
|
||||||
|
AdSlot adSlot = new AdSlot.Builder()
|
||||||
|
.setCodeId(codeId) //广告位id
|
||||||
|
.setSupportDeepLink(true)
|
||||||
|
.setImageAcceptedSize(width, height)
|
||||||
|
.build();
|
||||||
|
//step5:请求广告,对请求回调的广告作渲染处理
|
||||||
|
mTTAdNative.loadBannerAd(adSlot, new TTAdNative.BannerAdListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(int code, String message) {
|
||||||
|
TToast.show(ReadActivity.this, "load error : " + code + ", " + message);
|
||||||
|
mBannerContainer.removeAllViews();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBannerAdLoad(final TTBannerAd ad) {
|
||||||
|
if (ad == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
View bannerView = ad.getBannerView();
|
||||||
|
if (bannerView == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//设置轮播的时间间隔 间隔在30s到120秒之间的值,不设置默认不轮播
|
||||||
|
ad.setSlideIntervalTime(30 * 1000);
|
||||||
|
mBannerContainer.removeAllViews();
|
||||||
|
mBannerContainer.addView(bannerView);
|
||||||
|
//设置广告互动监听回调
|
||||||
|
ad.setBannerInteractionListener(new TTBannerAd.AdInteractionListener() {
|
||||||
|
@Override
|
||||||
|
public void onAdClicked(View view, int type) {
|
||||||
|
TToast.show(ReadActivity.this, "广告被点击");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAdShow(View view, int type) {
|
||||||
|
TToast.show(ReadActivity.this, "广告展示");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//(可选)设置下载类广告的下载监听
|
||||||
|
bindDownloadListener(ad);
|
||||||
|
//在banner中显示网盟提供的dislike icon,有助于广告投放精准度提升
|
||||||
|
ad.setShowDislikeIcon(new TTAdDislike.DislikeInteractionCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSelected(int position, String value) {
|
||||||
|
TToast.show(ReadActivity.this, "点击 " + value);
|
||||||
|
//用户选择不喜欢原因后,移除广告展示
|
||||||
|
mBannerContainer.removeAllViews();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCancel() {
|
||||||
|
TToast.show(ReadActivity.this, "点击取消 ");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//获取网盟dislike dialog,您可以在您应用中本身自定义的dislike icon 按钮中设置 mTTAdDislike.showDislikeDialog();
|
||||||
|
*//*mTTAdDislike = ad.getDislikeDialog(new TTAdDislike.DislikeInteractionCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSelected(int position, String value) {
|
||||||
|
TToast.show(mContext, "点击 " + value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCancel() {
|
||||||
|
TToast.show(mContext, "点击取消 ");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (mTTAdDislike != null) {
|
||||||
|
XXX.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
mTTAdDislike.showDislikeDialog();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} *//*
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
private boolean mHasShowDownloadActive = false;
|
||||||
|
private void bindDownloadListener(TTBannerAd ad) {
|
||||||
|
ad.setDownloadListener(new TTAppDownloadListener() {
|
||||||
|
@Override
|
||||||
|
public void onIdle() {
|
||||||
|
TToast.show(ReadActivity.this, "点击图片开始下载", Toast.LENGTH_LONG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadActive(long totalBytes, long currBytes, String fileName, String appName) {
|
||||||
|
if (!mHasShowDownloadActive) {
|
||||||
|
mHasShowDownloadActive = true;
|
||||||
|
TToast.show(ReadActivity.this, "下载中,点击图片暂停", Toast.LENGTH_LONG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadPaused(long totalBytes, long currBytes, String fileName, String appName) {
|
||||||
|
TToast.show(ReadActivity.this, "下载暂停,点击图片继续", Toast.LENGTH_LONG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadFailed(long totalBytes, long currBytes, String fileName, String appName) {
|
||||||
|
TToast.show(ReadActivity.this, "下载失败,点击图片重新下载", Toast.LENGTH_LONG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onInstalled(String fileName, String appName) {
|
||||||
|
TToast.show(ReadActivity.this, "安装完成,点击图片打开", Toast.LENGTH_LONG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadFinished(long totalBytes, String fileName, String appName) {
|
||||||
|
TToast.show(ReadActivity.this, "点击图片安装", Toast.LENGTH_LONG);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* //-------------native toutiao ad
|
||||||
|
private void loadNativeBannerAd(String codeId) {
|
||||||
|
//step4:创建广告请求参数AdSlot,注意其中的setNativeAdtype方法,具体参数含义参考文档
|
||||||
|
final AdSlot adSlot = new AdSlot.Builder()
|
||||||
|
.setCodeId(codeId)
|
||||||
|
.setSupportDeepLink(true)
|
||||||
|
.setImageAcceptedSize(690, 388)
|
||||||
|
.setNativeAdType(AdSlot.TYPE_BANNER) //请求原生广告时候,请务必调用该方法,设置参数为TYPE_BANNER或TYPE_INTERACTION_AD
|
||||||
|
.setAdCount(1)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
//step5:请求广告,对请求回调的广告作渲染处理
|
||||||
|
mTTAdNative.loadNativeAd(adSlot, new TTAdNative.NativeAdListener() {
|
||||||
|
@Override
|
||||||
|
public void onError(int code, String message) {
|
||||||
|
TToast.show(ReadActivity.this, "load error : " + code + ", " + message);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNativeAdLoad(List<TTNativeAd> ads) {
|
||||||
|
if (ads.get(0) == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
View bannerView = LayoutInflater.from(ReadActivity.this).inflate(R.layout.ad_toutiao_native_ad , mBannerContainer, false);
|
||||||
|
if (bannerView == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
//防止内存泄漏
|
||||||
|
mCreativeButton = null;
|
||||||
|
}
|
||||||
|
mBannerContainer.removeAllViews();
|
||||||
|
mBannerContainer.addView(bannerView);
|
||||||
|
//绑定原生广告的数据
|
||||||
|
setAdData(bannerView, ads.get(0));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("RedundantCast")
|
||||||
|
private void setAdData(View nativeView, TTNativeAd nativeAd) {
|
||||||
|
((TextView) nativeView.findViewById(R.id.tv_native_ad_title)).setText(nativeAd.getTitle());
|
||||||
|
((TextView) nativeView.findViewById(R.id.tv_native_ad_desc)).setText(nativeAd.getDescription());
|
||||||
|
ImageView imgDislike = nativeView.findViewById(R.id.img_native_dislike);
|
||||||
|
bindDislikeAction(nativeAd, imgDislike);
|
||||||
|
if (nativeAd.getImageList() != null && !nativeAd.getImageList().isEmpty()) {
|
||||||
|
TTImage image = nativeAd.getImageList().get(0);
|
||||||
|
if (image != null && image.isValid()) {
|
||||||
|
mAQuery.id(nativeView.findViewById(R.id.iv_native_image)).image(image.getImageUrl());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TTImage icon = nativeAd.getIcon();
|
||||||
|
if (icon != null && icon.isValid()) {
|
||||||
|
ImageOptions options = new ImageOptions();
|
||||||
|
mAQuery.id((nativeView.findViewById(R.id.iv_native_icon))).image(icon.getImageUrl(), options);
|
||||||
|
}
|
||||||
|
mCreativeButton = (Button) nativeView.findViewById(R.id.btn_native_creative);
|
||||||
|
//可根据广告类型,为交互区域设置不同提示信息
|
||||||
|
switch (nativeAd.getInteractionType()) {
|
||||||
|
case TTAdConstant.INTERACTION_TYPE_DOWNLOAD:
|
||||||
|
//如果初始化ttAdManager.createAdNative(getApplicationContext())没有传入activity 则需要在此传activity,否则影响使用Dislike逻辑
|
||||||
|
nativeAd.setActivityForDownloadApp(this);
|
||||||
|
mCreativeButton.setVisibility(View.VISIBLE);
|
||||||
|
nativeAd.setDownloadListener(mDownloadListener); // 注册下载监听器
|
||||||
|
break;
|
||||||
|
case TTAdConstant.INTERACTION_TYPE_DIAL:
|
||||||
|
mCreativeButton.setVisibility(View.VISIBLE);
|
||||||
|
mCreativeButton.setText("立即拨打");
|
||||||
|
break;
|
||||||
|
case TTAdConstant.INTERACTION_TYPE_LANDING_PAGE:
|
||||||
|
case TTAdConstant.INTERACTION_TYPE_BROWSER:
|
||||||
|
mCreativeButton.setVisibility(View.VISIBLE);
|
||||||
|
mCreativeButton.setText("查看详情");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mCreativeButton.setVisibility(View.GONE);
|
||||||
|
TToast.show(ReadActivity.this, "交互类型异常");
|
||||||
|
}
|
||||||
|
|
||||||
|
//可以被点击的view, 也可以把nativeView放进来意味整个广告区域可被点击
|
||||||
|
List<View> clickViewList = new ArrayList<>();
|
||||||
|
clickViewList.add(nativeView);
|
||||||
|
|
||||||
|
//触发创意广告的view(点击下载或拨打电话)
|
||||||
|
List<View> creativeViewList = new ArrayList<>();
|
||||||
|
//如果需要点击图文区域也能进行下载或者拨打电话动作,请将图文区域的view传入
|
||||||
|
//creativeViewList.add(nativeView);
|
||||||
|
creativeViewList.add(mCreativeButton);
|
||||||
|
|
||||||
|
//重要! 这个涉及到广告计费,必须正确调用。convertView必须使用ViewGroup。
|
||||||
|
nativeAd.registerViewForInteraction((ViewGroup) nativeView, clickViewList, creativeViewList, imgDislike, new TTNativeAd.AdInteractionListener() {
|
||||||
|
@Override
|
||||||
|
public void onAdClicked(View view, TTNativeAd ad) {
|
||||||
|
if (ad != null) {
|
||||||
|
TToast.show(ReadActivity.this, "广告" + ad.getTitle() + "被点击");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAdCreativeClick(View view, TTNativeAd ad) {
|
||||||
|
if (ad != null) {
|
||||||
|
TToast.show(ReadActivity.this, "广告" + ad.getTitle() + "被创意按钮被点击");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAdShow(TTNativeAd ad) {
|
||||||
|
if (ad != null) {
|
||||||
|
TToast.show(ReadActivity.this, "广告" + ad.getTitle() + "展示");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//接入网盟的dislike 逻辑,有助于提示广告精准投放度
|
||||||
|
private void bindDislikeAction(TTNativeAd ad, View dislikeView) {
|
||||||
|
final TTAdDislike ttAdDislike = ad.getDislikeDialog(this);
|
||||||
|
if (ttAdDislike != null) {
|
||||||
|
ttAdDislike.setDislikeInteractionCallback(new TTAdDislike.DislikeInteractionCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSelected(int position, String value) {
|
||||||
|
mBannerContainer.removeAllViews();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCancel() {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
dislikeView.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
if (ttAdDislike != null)
|
||||||
|
ttAdDislike.showDislikeDialog();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private final TTAppDownloadListener mDownloadListener = new TTAppDownloadListener() {
|
||||||
|
@Override
|
||||||
|
public void onIdle() {
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
mCreativeButton.setText("开始下载");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadActive(long totalBytes, long currBytes, String fileName, String appName) {
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
if (totalBytes <= 0L) {
|
||||||
|
mCreativeButton.setText("下载中 percent: 0");
|
||||||
|
} else {
|
||||||
|
mCreativeButton.setText("下载中 percent: " + (currBytes * 100 / totalBytes));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadPaused(long totalBytes, long currBytes, String fileName, String appName) {
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
mCreativeButton.setText("下载暂停 percent: " + (currBytes * 100 / totalBytes));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadFailed(long totalBytes, long currBytes, String fileName, String appName) {
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
mCreativeButton.setText("重新下载");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onInstalled(String fileName, String appName) {
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
mCreativeButton.setText("点击打开");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadFinished(long totalBytes, String fileName, String appName) {
|
||||||
|
if (mCreativeButton != null) {
|
||||||
|
mCreativeButton.setText("点击安装");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import android.content.Context;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
@ -13,7 +14,7 @@ import android.widget.SeekBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
|
||||||
import com.baidu.android.common.logging.Log;
|
|
||||||
import com.novelbook.android.utils.CommonUtil;
|
import com.novelbook.android.utils.CommonUtil;
|
||||||
import com.novelbook.android.utils.Config;
|
import com.novelbook.android.utils.Config;
|
||||||
import com.novelbook.android.R;
|
import com.novelbook.android.R;
|
||||||
|
@ -266,7 +267,7 @@ public class SettingDialog extends Dialog {
|
||||||
mSettingListener.changeTypeFace(tface);
|
mSettingListener.changeTypeFace(tface);
|
||||||
}
|
}
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
Log.e("SettingDialog",e.getMessage());
|
Log.e("SettingDialog", "setTypeface: ",e );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,8 +45,9 @@ public class RetryInterceptor implements Interceptor {
|
||||||
{
|
{
|
||||||
int i=0;
|
int i=0;
|
||||||
while(response==null && i<3){
|
while(response==null && i<3){
|
||||||
request = chain.request();
|
response = doRequest(chain, request);
|
||||||
i++;
|
i++;
|
||||||
|
Log.d(TAG, String.format("HttpMethods intercept:a retried %s, response is null? %s",i, response == null));
|
||||||
}
|
}
|
||||||
if(response==null) {
|
if(response==null) {
|
||||||
throw new IOException();
|
throw new IOException();
|
||||||
|
@ -70,8 +71,15 @@ public class RetryInterceptor implements Interceptor {
|
||||||
{
|
{
|
||||||
int i=0;
|
int i=0;
|
||||||
while(response==null && i<3){
|
while(response==null && i<3){
|
||||||
request = chain.request();
|
|
||||||
|
try {
|
||||||
|
Thread.sleep(10);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
response = doRequest(chain, request);
|
||||||
i++;
|
i++;
|
||||||
|
Log.d(TAG, String.format("HttpMethods intercept:b retried %s,%s,response is null? %s",i,request.url(), response == null));
|
||||||
}
|
}
|
||||||
if(response==null) {
|
if(response==null) {
|
||||||
throw new IOException();
|
throw new IOException();
|
||||||
|
@ -129,13 +137,19 @@ public class RetryInterceptor implements Interceptor {
|
||||||
|
|
||||||
response = doRequest(chain, newRequest);
|
response = doRequest(chain, newRequest);
|
||||||
|
|
||||||
Log.d(TAG, String.format("HttpMethods intercept: response is null? %s", response == null));
|
Log.d(TAG, String.format("HttpMethods intercept: %s, response is null? %s",newRequest.url(), response == null));
|
||||||
|
|
||||||
int i=0;
|
/* int i=0;
|
||||||
while((response==null || !response.isSuccessful() )&& i<3){
|
while((response==null || !response.isSuccessful() )&& i<5){
|
||||||
request = chain.request();
|
try {
|
||||||
|
Thread.sleep(10);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
response = doRequest(chain, newRequest);
|
||||||
i++;
|
i++;
|
||||||
}
|
Log.d(TAG, String.format("HttpMethods intercept:C retried %s,%s, response is null? %s",i,newRequest.url(), response == null));
|
||||||
|
}*/
|
||||||
|
|
||||||
if (response != null) {
|
if (response != null) {
|
||||||
Log.d(TAG, String.format("HttpMethods intercept: response .code? %s", response.code()));
|
Log.d(TAG, String.format("HttpMethods intercept: response .code? %s", response.code()));
|
||||||
|
|
|
@ -9,10 +9,15 @@ public class Constants {
|
||||||
public static final String BLOCK_TITLE_NOVELS = "ns";
|
public static final String BLOCK_TITLE_NOVELS = "ns";
|
||||||
public static final String HOT_KEYS = "keywords";
|
public static final String HOT_KEYS = "keywords";
|
||||||
public static final int NOVEL_SPAN_CNT =3 ; //grid columns
|
public static final int NOVEL_SPAN_CNT =3 ; //grid columns
|
||||||
public static final boolean SHOWAD =false ;
|
|
||||||
public static final int MAXAGE_MAX =60*60*24*28; //28 天 ;
|
public static final int MAXAGE_MAX =60*60*24*28; //28 天 ;
|
||||||
public static final int MAXAGE_MULU = 60*60*24*7*2; //2周;;
|
public static final int MAXAGE_MULU = 60*60*24*7*2; //2周;;
|
||||||
public static final String VERSION_ADDRESS ="version.xml";
|
public static final String VERSION_ADDRESS ="version.xml";
|
||||||
|
public static final boolean SHOWAD =true ;
|
||||||
|
public static final long AD_SPLASH_INVTERVAL = 5*60*1000;//间隔5分钟
|
||||||
|
public static final int AD_SPLASH_PAGES = 15;
|
||||||
|
public static int SCREEN_HEIGHT_PIX =0 ;
|
||||||
|
public static int SCREEN_WIDTH_PIX = 0;
|
||||||
public static long LAST_G = 0;//主目录API上次访问时间
|
public static long LAST_G = 0;//主目录API上次访问时间
|
||||||
public static long MAXAGE_G = 3600;//主目录API上次访问时间
|
public static long MAXAGE_G = 3600;//主目录API上次访问时间
|
||||||
public static String[] HOT_KEYS_VALUE = {};
|
public static String[] HOT_KEYS_VALUE = {};
|
||||||
|
|
|
@ -988,7 +988,7 @@ private void hideSysUI(){
|
||||||
|
|
||||||
private void showAd(int adHeight,int adY) {
|
private void showAd(int adHeight,int adY) {
|
||||||
|
|
||||||
boolean showAd = getCurrentPage().getPageNo() > 2
|
boolean showAd = getCurrentPage().getPageNo() > 1
|
||||||
&&NetWorkUtil.isNetworkConnected(mContext);
|
&&NetWorkUtil.isNetworkConnected(mContext);
|
||||||
|
|
||||||
if (mAd != null) {
|
if (mAd != null) {
|
||||||
|
@ -1154,7 +1154,7 @@ private void hideSysUI(){
|
||||||
this.mBookUtil.getTargetSites();
|
this.mBookUtil.getTargetSites();
|
||||||
}
|
}
|
||||||
public void initBookUtil() {
|
public void initBookUtil() {
|
||||||
mBookUtil = null;
|
mBookUtil = new BookUtil();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 打开书本
|
* 打开书本
|
||||||
|
@ -1168,7 +1168,7 @@ private void hideSysUI(){
|
||||||
if(book.isLocalBook()){ //离线书籍重新初始化加载mBookUtil
|
if(book.isLocalBook()){ //离线书籍重新初始化加载mBookUtil
|
||||||
mBookUtil = new BookUtil();
|
mBookUtil = new BookUtil();
|
||||||
mBookUtil.setNovel(book);
|
mBookUtil.setNovel(book);
|
||||||
}else if(mBookUtil==null){
|
}else if(getNovle()==null){
|
||||||
Log.d(TAG, "prepare book: preparing in openBook method" + book.getName());
|
Log.d(TAG, "prepare book: preparing in openBook method" + book.getName());
|
||||||
prepareBook(book);
|
prepareBook(book);
|
||||||
}
|
}
|
||||||
|
|
After Width: | Height: | Size: 4.5 KiB |
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<solid android:color="@color/white"/>
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
<!-- <item android:bottom="25dp">
|
||||||
|
<bitmap
|
||||||
|
android:gravity="bottom|center_horizontal"
|
||||||
|
android:src="@drawable/toutiao_splash_banner"/>
|
||||||
|
</item>-->
|
||||||
|
</layer-list>
|
|
@ -42,12 +42,17 @@
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/tvRightMore"
|
style="@style/buttonRightMore"
|
||||||
android:textSize="20sp"
|
android:text="详细"
|
||||||
android:text=">"
|
android:gravity="center_vertical"
|
||||||
|
android:layout_marginRight="5dp"
|
||||||
/>
|
/>
|
||||||
|
<TextView
|
||||||
|
style="@style/tvRightMore"
|
||||||
|
|
||||||
|
android:text=" "
|
||||||
|
|
||||||
|
/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<View style="@style/llGraySplit.2dp.gray" />
|
<View style="@style/llGraySplit.2dp.gray" />
|
||||||
|
@ -64,7 +69,7 @@
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/NovelBlockTitle"
|
style="@style/NovelBlockTitle"
|
||||||
android:id="@+id/tvVersion"
|
android:id="@+id/tvVersion"
|
||||||
android:text="1234455 "
|
|
||||||
android:gravity="right"
|
android:gravity="right"
|
||||||
android:layout_marginRight="5dp"
|
android:layout_marginRight="5dp"
|
||||||
/>
|
/>
|
||||||
|
@ -89,7 +94,7 @@
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/NovelBlockTitle"
|
style="@style/NovelBlockTitle"
|
||||||
android:id="@+id/tvCache"
|
android:id="@+id/tvCache"
|
||||||
android:text="1234455 "
|
|
||||||
android:gravity="right"
|
android:gravity="right"
|
||||||
android:layout_marginRight="5dp"
|
android:layout_marginRight="5dp"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -22,22 +22,30 @@
|
||||||
</android.support.v7.widget.Toolbar>
|
</android.support.v7.widget.Toolbar>
|
||||||
|
|
||||||
</android.support.design.widget.AppBarLayout>
|
</android.support.design.widget.AppBarLayout>
|
||||||
|
<LinearLayout
|
||||||
<TextView
|
android:layout_width="match_parent"
|
||||||
android:id="@+id/tvMsg"
|
android:layout_height="match_parent"
|
||||||
android:textColor="@color/red"
|
android:orientation="vertical"
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<android.support.v7.widget.RecyclerView
|
|
||||||
android:id="@+id/recycleView"
|
|
||||||
style="@style/llOutside"
|
|
||||||
android:layout_marginTop="50dp"
|
android:layout_marginTop="50dp"
|
||||||
android:divider="@color/list_item_divider"
|
|
||||||
>
|
>
|
||||||
</android.support.v7.widget.RecyclerView>
|
<TextView
|
||||||
|
android:layout_marginStart="@dimen/_20dp"
|
||||||
|
android:id="@+id/tvMsg"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/noRecord"
|
||||||
|
|
||||||
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<android.support.v7.widget.RecyclerView
|
||||||
|
android:id="@+id/recycleView"
|
||||||
|
style="@style/llOutside"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:divider="@color/list_item_divider"
|
||||||
|
>
|
||||||
|
</android.support.v7.widget.RecyclerView>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</android.support.design.widget.CoordinatorLayout>
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:background="#000000"
|
||||||
|
tools:context=".AD.toutiao.SplashActivity">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/splash_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="#000000"
|
||||||
|
>
|
||||||
|
</FrameLayout>
|
||||||
|
</LinearLayout>
|
|
@ -0,0 +1,74 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_native_ad_title"
|
||||||
|
android:layout_width="200dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="10dp"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textSize="14sp" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/iv_native_image"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@id/tv_native_ad_title"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:layout_marginLeft="10dp"
|
||||||
|
android:layout_marginRight="10dp"
|
||||||
|
android:scaleType="centerCrop" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/iv_native_icon"
|
||||||
|
android:layout_width="15dp"
|
||||||
|
android:layout_height="15dp"
|
||||||
|
android:layout_below="@id/iv_native_image"
|
||||||
|
android:layout_marginLeft="3dp"
|
||||||
|
android:layout_marginStart="3dp" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/tv_source_desc_layout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_below="@id/iv_native_image"
|
||||||
|
android:layout_toRightOf="@id/iv_native_icon"
|
||||||
|
android:layout_toEndOf="@id/iv_native_icon"
|
||||||
|
tools:ignore="UseCompoundDrawables">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_native_ad_desc"
|
||||||
|
android:layout_width="100dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="10dp"
|
||||||
|
android:layout_marginLeft="5dp"
|
||||||
|
android:layout_marginStart="5dp"
|
||||||
|
android:layout_marginTop="15dp"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textSize="14sp" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/img_native_dislike"
|
||||||
|
android:layout_width="20dp"
|
||||||
|
android:layout_height="20dp"
|
||||||
|
android:background="@drawable/tt_dislike_icon" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btn_native_creative"
|
||||||
|
android:layout_width="90dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_marginRight="14dp"
|
||||||
|
android:layout_marginEnd="14dp"
|
||||||
|
android:layout_alignTop="@+id/tv_source_desc_layout"
|
||||||
|
android:textSize="10sp"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/screen"
|
||||||
|
android:layout_width="fill_parent" android:layout_height="fill_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
<TextView android:id="@+id/left_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
/>
|
||||||
|
</RelativeLayout>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
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_width="match_parent"
|
||||||
android:layout_height="50dp"
|
android:layout_height="50dp"
|
||||||
android:layout_gravity="bottom"
|
android:layout_gravity="bottom"
|
||||||
|
@ -64,7 +64,7 @@
|
||||||
android:layout_weight="1" />
|
android:layout_weight="1" />
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>-->
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout style="@style/llGraySplit" />
|
<LinearLayout style="@style/llGraySplit" />
|
||||||
|
@ -207,7 +207,10 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
<FrameLayout
|
||||||
|
style="@style/frmBannerContainer"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/banner_container"/>
|
||||||
<LinearLayout style="@style/llGraySplit" />
|
<LinearLayout style="@style/llGraySplit" />
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
@ -293,6 +296,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tvTonglei"
|
android:id="@+id/tvTonglei"
|
||||||
style="@style/NovelBlockTitle"
|
style="@style/NovelBlockTitle"
|
||||||
|
|
|
@ -35,6 +35,8 @@
|
||||||
app:tl_indicator_bounce_enable ="true"
|
app:tl_indicator_bounce_enable ="true"
|
||||||
/>-->
|
/>-->
|
||||||
<!-- app:tl_indicator_color="@color/crimson" -->
|
<!-- app:tl_indicator_color="@color/crimson" -->
|
||||||
|
|
||||||
|
|
||||||
<android.support.v4.view.ViewPager
|
<android.support.v4.view.ViewPager
|
||||||
android:paddingTop="20dp"
|
android:paddingTop="20dp"
|
||||||
android:paddingLeft="2dp"
|
android:paddingLeft="2dp"
|
||||||
|
|
|
@ -1,11 +1,20 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
style="@style/llOutside"
|
style="@style/llOutside"
|
||||||
|
android:orientation="vertical"
|
||||||
tools:context=".Fragments.FragmentCates">
|
tools:context=".Fragments.FragmentCates">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/banner_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="0"
|
||||||
|
android:layout_centerInParent="true"
|
||||||
|
android:background="#D5D5D5" />
|
||||||
<android.support.v4.widget.SwipeRefreshLayout
|
<android.support.v4.widget.SwipeRefreshLayout
|
||||||
android:id="@+id/swipeLayout"
|
android:id="@+id/swipeLayout"
|
||||||
|
android:layout_weight="1"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
@ -21,4 +30,4 @@
|
||||||
/>
|
/>
|
||||||
</android.support.v4.widget.SwipeRefreshLayout>
|
</android.support.v4.widget.SwipeRefreshLayout>
|
||||||
|
|
||||||
</FrameLayout>
|
</LinearLayout>
|
|
@ -7,12 +7,20 @@
|
||||||
android:layout_marginRight="@dimen/marginRight"
|
android:layout_marginRight="@dimen/marginRight"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/banner_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerInParent="true"
|
||||||
|
android:background="#D5D5D5" />
|
||||||
|
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<android.support.v4.widget.SwipeRefreshLayout
|
<android.support.v4.widget.SwipeRefreshLayout
|
||||||
android:id="@+id/swipeLayout"
|
android:id="@+id/swipeLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -30,6 +38,7 @@
|
||||||
|
|
||||||
/>
|
/>
|
||||||
</android.support.v4.widget.SwipeRefreshLayout>
|
</android.support.v4.widget.SwipeRefreshLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/llShelfBottom"
|
android:id="@+id/llShelfBottom"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -27,8 +27,22 @@
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- TODO: Update blank fragment layout -->
|
<!-- TODO: Update blank fragment layout -->
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical"
|
||||||
|
>
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/banner_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="0"
|
||||||
|
android:layout_centerInParent="true"
|
||||||
|
android:background="@color/white" />
|
||||||
|
|
||||||
<android.support.v7.widget.RecyclerView
|
<android.support.v7.widget.RecyclerView
|
||||||
android:id="@+id/rvBangdan"
|
android:id="@+id/rvBangdan"
|
||||||
|
android:layout_weight="1"
|
||||||
android:divider="#ffff0000"
|
android:divider="#ffff0000"
|
||||||
android:dividerHeight="5dp"
|
android:dividerHeight="5dp"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -37,5 +51,5 @@
|
||||||
android:paddingBottom="30dp"
|
android:paddingBottom="30dp"
|
||||||
android:layout_marginBottom="-2dp"
|
android:layout_marginBottom="-2dp"
|
||||||
/>
|
/>
|
||||||
|
</LinearLayout>
|
||||||
</android.support.v4.widget.SwipeRefreshLayout>
|
</android.support.v4.widget.SwipeRefreshLayout>
|
|
@ -4,7 +4,12 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
style="@style/llOutside.vertical"
|
style="@style/llOutside.vertical"
|
||||||
tools:context=".Fragments.Fragment_jingxuan">
|
tools:context=".Fragments.Fragment_jingxuan">
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/banner_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerInParent="true"
|
||||||
|
android:background="#D5D5D5" />
|
||||||
<android.support.v4.widget.SwipeRefreshLayout
|
<android.support.v4.widget.SwipeRefreshLayout
|
||||||
android:id="@+id/swipeLayout"
|
android:id="@+id/swipeLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -17,15 +17,15 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:contentDescription="@string/nav_header_desc"
|
android:contentDescription="@string/nav_header_desc"
|
||||||
android:paddingTop="@dimen/nav_header_vertical_spacing" android:visibility="gone"
|
|
||||||
app:srcCompat="@mipmap/ic_launcher" />
|
app:srcCompat="@mipmap/ic_launcher" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tvUser"
|
android:id="@+id/tvUser"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingTop="@dimen/nav_header_vertical_spacing"
|
|
||||||
android:text="欢迎您的光临"
|
android:text="@string/app_name"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
android:layout_height="?attr/actionBarSize"
|
android:layout_height="?attr/actionBarSize"
|
||||||
android:background="?attr/colorPrimary"
|
android:background="?attr/colorPrimary"
|
||||||
app:popupTheme="@style/AppTheme.PopupOverlay">
|
app:popupTheme="@style/AppTheme.PopupOverlay">
|
||||||
<ImageButton
|
<!--<ImageButton
|
||||||
android:id="@+id/btnRefresh"
|
android:id="@+id/btnRefresh"
|
||||||
android:layout_weight="0"
|
android:layout_weight="0"
|
||||||
android:layout_gravity ="right|center_vertical"
|
android:layout_gravity ="right|center_vertical"
|
||||||
|
@ -32,11 +32,11 @@
|
||||||
android:id="@+id/btnSort"
|
android:id="@+id/btnSort"
|
||||||
android:layout_weight="0"
|
android:layout_weight="0"
|
||||||
android:layout_gravity ="right|center_vertical"
|
android:layout_gravity ="right|center_vertical"
|
||||||
android:layout_marginRight="10dp"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:srcCompat="@drawable/ic_format_line_spacing_black_24dp"
|
app:srcCompat="@drawable/ic_format_line_spacing_black_24dp"
|
||||||
style="@style/buttonCates"/>
|
style="@style/buttonCates"/>-->
|
||||||
</android.support.v7.widget.Toolbar>
|
</android.support.v7.widget.Toolbar>
|
||||||
</android.support.design.widget.AppBarLayout>
|
</android.support.design.widget.AppBarLayout>
|
||||||
|
|
||||||
|
|
|
@ -45,8 +45,8 @@
|
||||||
/>
|
/>
|
||||||
<pl.droidsonroids.gif.GifImageView
|
<pl.droidsonroids.gif.GifImageView
|
||||||
android:id="@+id/imgLoading"
|
android:id="@+id/imgLoading"
|
||||||
android:layout_width="30dp"
|
android:layout_width="35dp"
|
||||||
android:layout_height="30dp"
|
android:layout_height="35dp"
|
||||||
android:src="@mipmap/loading"
|
android:src="@mipmap/loading"
|
||||||
android:scaleType="centerCrop"
|
android:scaleType="centerCrop"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
|
@ -64,7 +64,7 @@
|
||||||
android:text="@string/refresh"
|
android:text="@string/refresh"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
/>
|
/>
|
||||||
<LinearLayout
|
<!-- <LinearLayout
|
||||||
android:id="@+id/llTopAd"
|
android:id="@+id/llTopAd"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="150dp"
|
android:layout_height="150dp"
|
||||||
|
@ -72,15 +72,13 @@
|
||||||
android:layout_marginTop="520dp"
|
android:layout_marginTop="520dp"
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:src="@color/whitesmoke"
|
|
||||||
android:scaleType="centerCrop"
|
|
||||||
|
|
||||||
android:contentDescription="TODO" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
</LinearLayout>-->
|
||||||
|
<FrameLayout
|
||||||
|
style="@style/frmBannerContainer"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/banner_container"
|
||||||
|
/>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,23 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_sort"
|
||||||
|
android:orderInCategory="20"
|
||||||
|
android:title=""
|
||||||
|
android:icon= "@drawable/ic_format_line_spacing_black_24dp"
|
||||||
|
app:showAsAction="always" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_refresh"
|
||||||
|
android:orderInCategory="30"
|
||||||
|
android:title=""
|
||||||
|
android:icon= "@drawable/ic_refresh_black_24dp"
|
||||||
|
app:showAsAction="always" />
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_change_source"
|
android:id="@+id/action_change_source"
|
||||||
android:title="@string/action_change_source"
|
android:title="@string/action_change_source"
|
||||||
android:orderInCategory="90"
|
android:icon= "@drawable/ic_call_split_black_24dp"
|
||||||
|
android:orderInCategory="40"
|
||||||
app:showAsAction="always" />
|
app:showAsAction="always" />
|
||||||
|
|
||||||
</menu>
|
</menu>
|
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 9.0 KiB |
|
@ -48,6 +48,7 @@
|
||||||
<dimen name="_10dp">10dp</dimen>
|
<dimen name="_10dp">10dp</dimen>
|
||||||
<dimen name="toolbarHeight">40dp</dimen>
|
<dimen name="toolbarHeight">40dp</dimen>
|
||||||
<dimen name="app_bar_height_250">240dp</dimen>
|
<dimen name="app_bar_height_250">240dp</dimen>
|
||||||
|
<dimen name="_20dp">20dp</dimen>
|
||||||
|
|
||||||
|
|
||||||
<!-- Default screen margins, per the Android Design guidelines. -->
|
<!-- Default screen margins, per the Android Design guidelines. -->
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
<string name="title_activity_main5">Main5Activity</string>
|
<string name="title_activity_main5">Main5Activity</string>
|
||||||
<string name="title_on_shelf">加入书架</string>
|
<string name="title_on_shelf">加入书架</string>
|
||||||
<string name="title_read">立即阅读</string>
|
<string name="title_read">立即阅读</string>
|
||||||
<string name="title_download">下载管理</string>
|
<string name="title_download">缓存管理</string>
|
||||||
<string name="title_activity_paihangbang">榜</string>
|
<string name="title_activity_paihangbang">榜</string>
|
||||||
<string name="title_activity_main6">Main6Activity</string>
|
<string name="title_activity_main6">Main6Activity</string>
|
||||||
<string name="section_format">Hello World from section: %1$d</string>
|
<string name="section_format">Hello World from section: %1$d</string>
|
||||||
|
@ -136,6 +136,8 @@
|
||||||
<string name="title_setup">设置</string>
|
<string name="title_setup">设置</string>
|
||||||
<string name="title_annouce">免责声明</string>
|
<string name="title_annouce">免责声明</string>
|
||||||
<string name="cache_novel">全本缓存</string>
|
<string name="cache_novel">全本缓存</string>
|
||||||
|
<string name="title_navi">如意阅读</string>
|
||||||
|
<string name="title_ad">广告</string>
|
||||||
|
|
||||||
<string-array name="voicer_cloud_entries">
|
<string-array name="voicer_cloud_entries">
|
||||||
<item>小燕—女青、中英、普通话</item>
|
<item>小燕—女青、中英、普通话</item>
|
||||||
|
|
|
@ -23,6 +23,18 @@
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<!-- toutiao chuanshanjia-->
|
||||||
|
<style name="Theme.Light" parent="Theme.AppCompat.Light">
|
||||||
|
<item name="android:windowBackground">@color/white</item>
|
||||||
|
</style>
|
||||||
|
<style name="Theme.Splash" parent="Theme.Light">
|
||||||
|
<!--<item name="android:windowBackground">@drawable/toutiao_splash_banner</item>-->
|
||||||
|
<item name="windowActionBar">false</item>
|
||||||
|
<item name="android:windowNoTitle">true</item>
|
||||||
|
<item name="windowNoTitle">true</item>
|
||||||
|
</style>
|
||||||
|
<!-- toutiao chuanshanjia end -->
|
||||||
|
|
||||||
<style name="ToolBarTheme.NoActionBar">
|
<style name="ToolBarTheme.NoActionBar">
|
||||||
<item name="windowActionBar">false</item>
|
<item name="windowActionBar">false</item>
|
||||||
<item name="windowNoTitle">true</item>
|
<item name="windowNoTitle">true</item>
|
||||||
|
@ -433,7 +445,12 @@
|
||||||
<item name="android:clickable">true</item>
|
<item name="android:clickable">true</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="frmBannerContainer">
|
||||||
|
<item name="android:layout_width">match_parent</item>
|
||||||
|
<item name="android:layout_height">50dp</item>
|
||||||
|
<item name="android:layout_centerInParent">true</item>
|
||||||
|
<item name="android:background">@color/transparent</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<paths xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<external-files-path name="external_files_path" path="Download" />
|
||||||
|
<!--为了适配所有路径可以设置 path = "." -->
|
||||||
|
</paths>
|
|
@ -106,17 +106,13 @@
|
||||||
<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/manifest-checker" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged-not-compiled-resources" />
|
|
||||||
<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_manifests" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" />
|
||||||
<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/proguard-rules" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
|
||||||
<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/resources" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shader_assets" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shader_assets" />
|
||||||
|
@ -126,104 +122,102 @@
|
||||||
<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/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" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:design:28.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: :open_ad_sdk:@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:support-fragment:28.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:localbroadcastmanager:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:localbroadcastmanager:28.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable:28.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: jp.wasabeef:glide-transformations:2.0.1@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:annotations:4.9.0@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: android.arch.lifecycle:viewmodel:1.1.1@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: __local_aars__:E.\reading\android\asProjects\zhuike\libs\juniversalchardet-1.0.3.jar:unspecified@jar" level="project" />
|
<orderEntry type="library" name="Gradle: __local_aars__:E.\reading\android\asProjects\zhuike\libs\juniversalchardet-1.0.3.jar:unspecified@jar" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource:3.0.2@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:loader:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:loader:28.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: android.arch.core:runtime:1.1.1@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: android.arch.lifecycle:extensions:1.1.1@aar" level="project" />
|
<orderEntry type="library" name="Gradle: android.arch.lifecycle:extensions:1.1.1@aar" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner:1.0.2@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:disklrucache:4.9.0@jar" level="project" />
|
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:disklrucache:4.9.0@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata-core:1.1.1@aar" level="project" />
|
<orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata-core:1.1.1@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.packetzoom:pz-android-sdk:3.2.43@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.packetzoom:pz-android-sdk:3.2.43@aar" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:cursoradapter:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:cursoradapter:28.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:gifdecoder:4.9.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:gifdecoder:4.9.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.squareup.okio:okio:1.17.2@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.squareup.retrofit2:adapter-rxjava2:2.5.0@jar" level="project" />
|
<orderEntry type="library" name="Gradle: com.squareup.retrofit2:adapter-rxjava2:2.5.0@jar" level="project" />
|
||||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core:3.0.2@aar" level="project" />
|
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core:3.0.2@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: android.arch.lifecycle:runtime:1.1.1@aar" level="project" />
|
<orderEntry type="library" name="Gradle: android.arch.lifecycle:runtime:1.1.1@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:support-compat:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:support-compat:28.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: __local_aars__:E.\reading\android\asProjects\zhuike\libs\galaxy-v2.0.jar:unspecified@jar" level="project" />
|
<orderEntry type="library" name="Gradle: __local_aars__:E.\reading\android\asProjects\zhuike\libs\android-query-full.0.26.7.jar:unspecified@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: q.rorbin:badgeview:1.1.2@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:cardview-v7:28.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-audience:16.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" />
|
<orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.astuetz:pagerslidingtabstrip:1.0.1@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.youth.banner:banner:1.4.10@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.github.chengzipi:Searchbox:v1.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: org.litepal.android:java:3.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: org.litepal.android:java:3.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable:28.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:support-core-utils:28.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:recyclerview-v7:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:recyclerview-v7:28.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:monitor:1.0.2@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:support-annotations:28.0.0@jar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:support-annotations:28.0.0@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: __local_aars__:D.\android\sdk\build-tools\28.0.3\renderscript\lib\renderscript-v8.jar:unspecified@jar" level="project" />
|
<orderEntry type="library" name="Gradle: __local_aars__:D.\android\sdk\build-tools\28.0.3\renderscript\lib\renderscript-v8.jar:unspecified@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: io.alterac.blurkit:blurkit:1.1.1@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:interpolator:28.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:transition:28.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata:1.1.1@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:drawerlayout:28.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-plus:16.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-plus:16.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:support-v4:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:support-v4:28.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout-solver:1.1.3@jar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout-solver:1.1.3@jar" level="project" />
|
||||||
<orderEntry type="library" scope="TEST" name="Gradle: net.sf.kxml:kxml2:2.3.0@jar" level="project" />
|
<orderEntry type="library" scope="TEST" name="Gradle: net.sf.kxml:kxml2:2.3.0@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: io.reactivex.rxjava2:rxandroid:2.1.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: io.reactivex.rxjava2:rxandroid:2.1.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.5@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:multidex:1.0.2@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: org.litepal.android:core:3.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: org.reactivestreams:reactive-streams:1.0.2@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.timqi.collapsibletextview:library:1.1.2@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.squareup.retrofit2:converter-gson:2.5.0@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:support-core-ui:28.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.squareup.okhttp3:logging-interceptor:3.14.0@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.umeng.umsdk:common:2.0.2@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:asynclayoutinflater:28.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout:1.1.3@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:glide:4.9.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: android.arch.core:common:1.1.1@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.squareup.retrofit2:retrofit:2.5.0@jar" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:viewpager:28.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: __local_aars__:E.\reading\android\asProjects\zhuike\libs\GDTSDK.union.4.40.910.jar:unspecified@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: pl.droidsonroids.gif:android-gif-drawable:1.2.16@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-basement:16.0.1@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.github.ixiaow:multilayout:1.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.1.1@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:customview:28.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:design:28.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:support-fragment:28.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable:28.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: jp.wasabeef:glide-transformations:2.0.1@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:annotations:4.9.0@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: android.arch.lifecycle:viewmodel:1.1.1@aar" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource:3.0.2@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: android.arch.core:runtime:1.1.1@aar" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner:1.0.2@aar" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.squareup.okio:okio:1.17.2@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: q.rorbin:badgeview:1.1.2@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:cardview-v7:28.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-audience:16.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.astuetz:pagerslidingtabstrip:1.0.1@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.youth.banner:banner:1.4.10@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.github.chengzipi:Searchbox:v1.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable:28.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:support-core-utils:28.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:monitor:1.0.2@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: io.alterac.blurkit:blurkit:1.1.1@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:interpolator:28.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:transition:28.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata:1.1.1@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:drawerlayout:28.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.umeng.umsdk:analytics:8.0.2@jar" level="project" />
|
<orderEntry type="library" name="Gradle: com.umeng.umsdk:analytics:8.0.2@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.jakewharton:butterknife-annotations:9.0.0@jar" level="project" />
|
<orderEntry type="library" name="Gradle: com.jakewharton:butterknife-annotations:9.0.0@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:documentfile:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:documentfile:28.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.jakewharton:butterknife:9.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.jakewharton:butterknife:9.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.5@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:slidingpanelayout:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:slidingpanelayout:28.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: __local_aars__:E.\reading\android\asProjects\zhuike\libs\Msc.jar:unspecified@jar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:appcompat-v7:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:appcompat-v7:28.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.squareup.okhttp3:okhttp:3.14.0@jar" level="project" />
|
<orderEntry type="library" name="Gradle: com.squareup.okhttp3:okhttp:3.14.0@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:multidex:1.0.2@aar" level="project" />
|
||||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support:multidex-instrumentation:1.0.2@aar" level="project" />
|
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support:multidex-instrumentation:1.0.2@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: org.litepal.android:core:3.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: org.reactivestreams:reactive-streams:1.0.2@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.packetzoom:pz-okhttp3-interceptor:3.2.43@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.packetzoom:pz-okhttp3-interceptor:3.2.43@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: io.reactivex.rxjava2:rxjava:2.2.7@jar" level="project" />
|
<orderEntry type="library" name="Gradle: io.reactivex.rxjava2:rxjava:2.2.7@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:collections:28.0.0@jar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:collections:28.0.0@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.timqi.collapsibletextview:library:1.1.2@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.squareup.retrofit2:converter-gson:2.5.0@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:support-core-ui:28.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.umeng.umsdk:common:2.0.2@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.squareup.okhttp3:logging-interceptor:3.14.0@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:asynclayoutinflater:28.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout:1.1.3@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:print:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:print:28.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.jakewharton:butterknife-runtime:9.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.jakewharton:butterknife-runtime:9.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:glide:4.9.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: android.arch.core:common:1.1.1@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:versionedparcelable:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:versionedparcelable:28.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-base:16.0.1@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-base:16.0.1@aar" level="project" />
|
||||||
<orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" />
|
<orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.squareup.retrofit2:retrofit:2.5.0@jar" level="project" />
|
||||||
|
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:viewpager:28.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-basement:16.0.1@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: pl.droidsonroids.gif:android-gif-drawable:1.2.16@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.github.ixiaow:multilayout:1.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" />
|
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" />
|
||||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" />
|
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.1.1@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:coordinatorlayout:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:coordinatorlayout:28.0.0@aar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: com.android.support:customview:28.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:swiperefreshlayout:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:swiperefreshlayout:28.0.0@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: q.rorbin:VerticalTabLayout:1.2.5@aar" level="project" />
|
<orderEntry type="library" name="Gradle: q.rorbin:VerticalTabLayout:1.2.5@aar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.android.support:support-media-compat:28.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.android.support:support-media-compat:28.0.0@aar" level="project" />
|
||||||
|
|