排行榜界面

调整详细页面
This commit is contained in:
mwang 2019-04-12 23:02:31 +08:00
parent 4679e86098
commit 63662a1b6b
32 changed files with 1134 additions and 543 deletions

View File

@ -63,7 +63,6 @@ dependencies {
// annotationProcessor 'com.google.dagger:dagger-compiler:2.11' // annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
implementation 'com.youth.banner:banner:1.4.10' implementation 'com.youth.banner:banner:1.4.10'
api 'com.github.bumptech.glide:glide:4.6.1' api 'com.github.bumptech.glide:glide:4.6.1'
api 'org.xutils:xutils:3.5.0'
implementation 'com.google.code.gson:gson:2.8.5' implementation 'com.google.code.gson:gson:2.8.5'
// implementation 'com.viewpagerindicator:library:2.4.1' // implementation 'com.viewpagerindicator:library:2.4.1'
//implementation 'com.github.auv1107:tablayout-android:-SNAPSHOT' //implementation 'com.github.auv1107:tablayout-android:-SNAPSHOT'
@ -78,4 +77,9 @@ dependencies {
implementation 'com.squareup.okhttp3:logging-interceptor:3.14.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.14.0'
implementation 'com.packetzoom:pz-okhttp3-interceptor:3.2.43' implementation 'com.packetzoom:pz-okhttp3-interceptor:3.2.43'
api 'io.reactivex.rxjava2:rxandroid:2.1.0' api 'io.reactivex.rxjava2:rxandroid:2.1.0'
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'jp.wasabeef:glide-transformations:2.0.1'
implementation 'com.timqi.collapsibletextview:library:1.1.2'
// implementation 'com.ms-square:expandableTextView:0.1.4'
} }

View File

@ -78,15 +78,15 @@ public abstract class Activity_base extends AppCompatActivity {
protected abstract void initData() ; protected abstract void initData() ;
protected BookListAdapter getBookListAdapter(List<Novel> mDatas){ protected BookListAdapter getBookListAdapter(List<Novel> mDatas,int itemResourceId){
BookListAdapter mAdapter = new BookListAdapter(this ,mDatas,R.layout.recycle_list_item_horizon,new OnItemClickListener() BookListAdapter mAdapter = new BookListAdapter(this ,mDatas,itemResourceId,new OnItemClickListener()
{ {
@Override @Override
public void onItemClick(View view, int position) public void onItemClick(View view, int position)
{ {
showBook("射雕" +position); // showBook("射雕" +position);
showBookDetail(mDatas.get(position));
} }
@Override @Override
@ -105,7 +105,12 @@ public abstract class Activity_base extends AppCompatActivity {
return mAdapter; return mAdapter;
} }
void showBookDetail(Novel book) {
Intent intent = new Intent(this, BookActivity.class);
intent.putExtra(BookActivity.EXTRA_BOOK,book);
startActivity(intent);
}
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {

View File

@ -28,6 +28,7 @@ public static String TAG ="com.novelbook.android.paihangbang";
SlidingTabLayout tabLayout; SlidingTabLayout tabLayout;
public static String EXTR_FN="fn"; public static String EXTR_FN="fn";
public static String EXTR_TITLE="title"; public static String EXTR_TITLE="title";
public static String EXTR_BANGDAN ="bangdan";
private ArrayList<Fragment> mFragments; private ArrayList<Fragment> mFragments;
ArrayList<View> mList; ArrayList<View> mList;
String[] mTitle; String[] mTitle;
@ -42,8 +43,8 @@ public static String TAG ="com.novelbook.android.paihangbang";
initTabs(); initTabs();
} }
String bangdan;
String fn;
@Override @Override
protected void setTitle() { protected void setTitle() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
@ -51,11 +52,14 @@ public static String TAG ="com.novelbook.android.paihangbang";
localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags); localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);
} }
fn = getIntent().getStringExtra(EXTR_FN);
bangdan = getIntent().getStringExtra(EXTR_BANGDAN);
String title = getIntent().getStringExtra(EXTR_TITLE); String title = getIntent().getStringExtra(EXTR_TITLE);
String fn = getIntent().getStringExtra(EXTR_FN);
title+="";
//title+="";
this.setTitle(title); this.setTitle(title);
} }
@ -70,11 +74,16 @@ public static String TAG ="com.novelbook.android.paihangbang";
void initTabs() { void initTabs() {
if(mFragments ==null || mFragments.size() ==0){ if(mFragments ==null || mFragments.size() ==0){
mTitle = new String[]{"周榜", "月榜", "总榜"}; // mTitle = new String[]{"周榜", "月榜", "总榜"};
mFragments = new ArrayList<>(); mFragments = new ArrayList<>();
mFragments.add( Fragment_booklist.newInstance("a",1)); //目的地不清楚 mFragments.add( Fragment_booklist.newInstance(fn,bangdan)); //首页更多
mFragments.add(new Fragment_booklist());
mFragments.add(new Fragment_booklist());
// mFragments.add(new Fragment_booklist());
// mFragments.add(new Fragment_booklist());
} }
Log.d(TAG,"set viewPager adapter "); Log.d(TAG,"set viewPager adapter ");
@ -89,13 +98,14 @@ public static String TAG ="com.novelbook.android.paihangbang";
return mFragments.size(); return mFragments.size();
} }
//ViewPager与TabLayout绑定后这里获取到PageTitle就是Tab的Text //ViewPager与TabLayout绑定后这里获取到PageTitle就是Tab的Text
@Override // @Override
public CharSequence getPageTitle(int position) { // public CharSequence getPageTitle(int position) {
return mTitle[position]; // return mTitle[position];
} // }
}; };
mViewpager.setAdapter(mAdapter); mViewpager.setAdapter(mAdapter);
tabLayout.setViewPager(mViewpager); //tabLayout.setViewPager(mViewpager);
tabLayout.setVisibility(View.GONE);
// tabLayout.setViewPager(mViewpager, mTitle, activity, mFragments); // tabLayout.setViewPager(mViewpager, mTitle, activity, mFragments);
mViewpager.setCurrentItem(0); mViewpager.setCurrentItem(0);
} }

View File

@ -24,7 +24,7 @@ public class Activity_shudan extends Activity_base {
@Override @Override
protected void initData() { protected void initData() {
mData = getFakeData(5); mData = getFakeData(5);
mAdapter = getBookListAdapter( mData); mAdapter = getBookListAdapter( mData,R.layout.recycle_list_item_horizon);
} }

View File

@ -7,14 +7,17 @@ import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
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.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.Gravity;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
@ -41,6 +44,9 @@ import com.novelbook.android.service.ChapterDownloadSvrc;
import com.novelbook.android.service.MyIntentService; import com.novelbook.android.service.MyIntentService;
import com.novelbook.android.service.ServiceDownload; import com.novelbook.android.service.ServiceDownload;
import com.novelbook.android.utils.BookUtil; import com.novelbook.android.utils.BookUtil;
import com.novelbook.android.utils.CommonUtil;
import com.novelbook.android.utils.Constants;
import com.novelbook.android.utils.GaoSiTransForm;
import com.novelbook.android.utils.GsonUtil; import com.novelbook.android.utils.GsonUtil;
import com.novelbook.android.utils.ImageUtil; import com.novelbook.android.utils.ImageUtil;
import com.novelbook.android.utils.MyImageLoader; import com.novelbook.android.utils.MyImageLoader;
@ -54,6 +60,9 @@ import org.litepal.LitePal;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
@ -61,6 +70,7 @@ import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
import jp.wasabeef.glide.transformations.BlurTransformation;
import okhttp3.Call; import okhttp3.Call;
import okhttp3.Callback; import okhttp3.Callback;
import okhttp3.Request; import okhttp3.Request;
@ -77,16 +87,21 @@ public class BookActivity extends Activity_base {
private Novel mNovel; private Novel mNovel;
private Chapter mChapter; private Chapter mChapter;
static String TAG = BookActivity.class.getSimpleName(); static String TAG = BookActivity.class.getSimpleName();
BookListAdapter mAdapter; BookListAdapter mAdapterAuthor;
// private BookListAdapter mAdapter; // private BookListAdapter mAdapter;
private List<Novel> mData; private List<Novel> mDataAuthor;
BookListAdapter mAdapterRelated;
// private BookListAdapter mAdapter;
private List<Novel> mDataRelated;
; ;
private Gson gson = new Gson();
//private Gson gson = new Gson();
private List<Chapter> mChapters = new ArrayList<>(); private List<Chapter> mChapters = new ArrayList<>();
@BindView(R.id.toolbar) // @BindView(R.id.toolbar)
Toolbar toolbar; // Toolbar toolbar;
@BindView(R.id.rvBooklist) @BindView(R.id.rvBooklist)
RecyclerView rvBooklist; RecyclerView rvBooklistAuthor;
@BindView(R.id.btnShelf) @BindView(R.id.btnShelf)
Button btnShelf; Button btnShelf;
@BindView(R.id.imageView) @BindView(R.id.imageView)
@ -100,15 +115,23 @@ public class BookActivity extends Activity_base {
@BindView(R.id.category) @BindView(R.id.category)
TextView txtCategory; TextView txtCategory;
@BindView(R.id.txtDesc2) @BindView(R.id.txtDesc2)
TextView txtDesc2; com.timqi.collapsibletextview.CollapsibleTextView txtDesc2;
@BindView(R.id.txtLatestCate) @BindView(R.id.txtLatestCate)
TextView txtLatestCate; TextView txtLatestCate;
@BindView(R.id.btnCacheBook) @BindView(R.id.btnCacheBook)
Button btnCach; Button btnCach;
@BindView(R.id.rvBooklistRelated)
RecyclerView rvBooklistRelated;
Intent serviceIntent ; Intent serviceIntent ;
@BindView(R.id.imageViewHead)
ImageView imageViewHead;
@BindView(R.id.tvAuthorMore)
TextView tvAuthorMore;
@BindView(R.id.tvTonglei)
TextView tvTonglei;
@BindView(R.id.txtLatestUpdate)
TextView tvLastUpdate;
public Intent getSvrIntent(){ public Intent getSvrIntent(){
if(serviceIntent ==null){ if(serviceIntent ==null){
serviceIntent= new Intent(this, ServiceDownload.class); serviceIntent= new Intent(this, ServiceDownload.class);
@ -123,12 +146,17 @@ public class BookActivity extends Activity_base {
@Override @Override
protected void initViews() { protected void initViews() {
initialBookList(); rvBooklistRelated.setVisibility(View.GONE);
rvBooklistAuthor.setVisibility(View.GONE);
tvTonglei.setVisibility(View.GONE);
tvAuthorMore.setText( "");
} }
@Override @Override
protected void setupToolbar() { protected void setupToolbar() {
super.setupToolbar(); super.setupToolbar();
toolbar.setTitleMarginBottom(1);
toolbar.setTitleTextAppearance(this,R.style.TitleText);
toolbar.inflateMenu(R.menu.menu_book);//设置右上角的填充菜单 toolbar.inflateMenu(R.menu.menu_book);//设置右上角的填充菜单
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override @Override
@ -164,8 +192,7 @@ public class BookActivity extends Activity_base {
setBookInfo();//set title ,data from novel list setBookInfo();//set title ,data from novel list
getBookInfo(); getBookInfo();
mData = getFakeData(5);
mAdapter = getBookListAdapter(mData);
} }
/** /**
@ -175,8 +202,36 @@ public class BookActivity extends Activity_base {
} }
private void setNovelsSameAuthor(){
if(mDataAuthor!=null && mDataAuthor.size() >0){
tvAuthorMore.setText(mNovel.getAuthor()+ " 还写过");
} else{
return;
}
rvBooklistAuthor.setVisibility(View.VISIBLE);
mAdapterAuthor = getBookListAdapter(mDataAuthor,R.layout.recycle_list_item_horizon);
rvBooklistAuthor.setLayoutManager(new LinearLayoutManager(this));
rvBooklistAuthor.setAdapter(mAdapterAuthor);
}
private void setNovelsRelated(){
if(mDataRelated!=null && mDataRelated.size() >0){
tvTonglei.setVisibility(View.VISIBLE);
}else
{
return;
}
rvBooklistRelated.setVisibility(View.VISIBLE);
mAdapterRelated = getBookListAdapter(mDataRelated,R.layout.recycle_list_item);
rvBooklistRelated.setLayoutManager(new GridLayoutManager(this, Constants.NOVEL_SPAN_CNT));
rvBooklistRelated.setAdapter(mAdapterRelated);
}
/** /**
* 设置服务器传来的详细信息 * 设置服务器传来的详细信息
*/ */
@ -187,13 +242,39 @@ public class BookActivity extends Activity_base {
this.txtCategory.setText(mNovel.getNovelType()); this.txtCategory.setText(mNovel.getNovelType());
this.txtDesc.setText(mNovel.getDesc ()); this.txtDesc.setText(mNovel.getDesc ());
this.txtTitle.setText(mNovel.getName()); this.txtTitle.setText(mNovel.getName());
this.txtDesc2.setText(mNovel.getDesc ()); this.txtDesc2.setFullString(mNovel.getDesc ());
this.txtLatestCate.setText(mNovel.getChapterName());
if (mNovel.getLastUpateTime() > 0) {
this.txtLatestCate.setText(new Date(mNovel.getLastUpateTime()).toString() + "\n" + txtLatestCate.getText());
}
loadImageView(mNovel.getCover(),imageView);
txtDesc2.setCollapsedLines(2);
// txtDesc2.setSuffixColor(R.color.colorPrimary);
// txtDesc2.setExpanded(false);
// txtDesc2.setSuffixTrigger(false);
this.txtLatestCate.setText(mNovel.getChapterName());
tvLastUpdate.setText(CommonUtil.getDateString( mNovel.getLastUpateTime()));
loadImageView(mNovel.getCover(),imageView);
gaosiHeadPic();
}
void gaosiHeadPic(){
//new BlurTransformation(BookActivity.this, 10)).into(mImageView);
/* URL url = null;
try {
url = new URL( NetUtil.getCoverUrl(mNovel.getCover()));
} catch (MalformedURLException e) {
e.printStackTrace();
}*/
String a =Uri.decode(NetUtil.getCoverUrl(mNovel.getCover()));
Glide.with(BookActivity.this)
.load( Uri.decode(NetUtil.getCoverUrl(mNovel.getCover())))
.dontAnimate()
.error(R.mipmap.side_bg2)
.transform(new GaoSiTransForm(this, 50, 3)) // "14":模糊度"3":图片缩放3倍后再进行模糊
.into(imageViewHead);
// Glide.with(this).load(url) .transform(new BlurTransformation(BookActivity.this, 10)).into(imageViewHead);
// Glide.with(this).load(imageView.getDrawable()).transform(new BlurTransformation(BookActivity.this, 10)).into(imageViewHead);
} }
void setShelfButtonText() { void setShelfButtonText() {
@ -243,14 +324,14 @@ public class BookActivity extends Activity_base {
setBookDetailInfo(); setBookDetailInfo();
} else if (msg.what == 2) //准备数据启动service } else if (msg.what == 2) //准备数据启动service
{ {
hideProgress();
Toast.makeText(BookActivity.this, "已加入下载队列1", Toast.LENGTH_LONG).show(); Toast.makeText(BookActivity.this, "已加入下载队列1", Toast.LENGTH_LONG).show();
} else if (msg.what == 3) { } else if (msg.what == 3) {
Toast.makeText(BookActivity.this, "获取目录信息失败,下载失败", Toast.LENGTH_LONG).show(); Toast.makeText(BookActivity.this, "获取目录信息失败,下载失败", Toast.LENGTH_LONG).show();
} }
hideProgress();
} }
}; };
@ -460,6 +541,50 @@ public class BookActivity extends Activity_base {
} }
}, BookActivity.this)); }, BookActivity.this));
BookSubscribe.getNovelsRelated(novelId, Constants.SEX, new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
@Override
public void onSuccess(String result) {
//成功
try {
mDataRelated = GsonUtil. parserJsonArray(result,Constants.BLOCK_TITLE_NOVELS);
setNovelsRelated();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFault(String errorMsg) {
}
}, BookActivity.this));
BookSubscribe.getNovelsSameAuthor(novelId, Constants.SEX, new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
@Override
public void onSuccess(String result) {
//成功
try {
mDataAuthor = GsonUtil. parserJsonArray(result,Constants.BLOCK_TITLE_NOVELS);
setNovelsSameAuthor();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFault(String errorMsg) {
}
}, BookActivity.this));
} }
/* /*
void readChapters( String url){ void readChapters( String url){
@ -530,11 +655,6 @@ void onResponseProcess( String content ,String url){
//----------------绑定列表 //----------------绑定列表
void initialBookList() {
rvBooklist.setLayoutManager(new LinearLayoutManager(this));
rvBooklist.setAdapter(mAdapter);
}
@Override @Override
protected void onResume() { protected void onResume() {

View File

@ -31,6 +31,10 @@ import android.widget.Toast;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
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;
@ -55,6 +59,7 @@ import org.w3c.dom.Text;
import java.io.File; import java.io.File;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
import butterknife.BindView; import butterknife.BindView;
@ -134,7 +139,7 @@ public abstract class BasicFragment extends Fragment {
{ {
Toast.makeText(getActivity(), " ", Toast.LENGTH_LONG).show(); Toast.makeText(getActivity(), "数据请求失败 ", Toast.LENGTH_LONG).show();
} else if (msg.what == 3) { } else if (msg.what == 3) {
Toast.makeText(getActivity(), " ", Toast.LENGTH_LONG).show(); Toast.makeText(getActivity(), " ", Toast.LENGTH_LONG).show();
@ -296,12 +301,30 @@ public abstract class BasicFragment extends Fragment {
NovelBlock nb = (NovelBlock) obj; NovelBlock nb = (NovelBlock) obj;
Intent intent = new Intent(activity, Activity_paihangbang.class); Intent intent = new Intent(activity, Activity_paihangbang.class);
intent.putExtra(Activity_paihangbang.EXTR_FN,nb.getFn() ); String title = TextUtils.isEmpty(nb.getTitle()) ? nb.getName() : nb.getTitle() ;
intent.putExtra(Activity_paihangbang.EXTR_TITLE,nb.getTitle() );
intent.putExtra(Activity_paihangbang.EXTR_FN,nb.getFn() );
intent.putExtra(Activity_paihangbang.EXTR_TITLE,title );
startActivity(intent); startActivity(intent);
} }
void showPaihangbang(NovelBlock nb) { //show paihangbang activity
Intent intent = new Intent(activity, Activity_paihangbang.class);
String title = TextUtils.isEmpty(nb.getTitle()) ? nb.getName() : nb.getTitle() ;
intent.putExtra(Activity_paihangbang.EXTR_FN,nb.getFn() );
intent.putExtra(Activity_paihangbang.EXTR_TITLE,title );
intent.putExtra(Activity_paihangbang.EXTR_BANGDAN,title );
startActivity(intent);
}
protected void loadImageView(String url, ImageView imageView){ protected void loadImageView(String url, ImageView imageView){
ImageUtil.loadImage( getActivity(), url , imageView); ImageUtil.loadImage( getActivity(), url , imageView);
} }
} }

View File

@ -3,13 +3,24 @@ package com.novelbook.android.Fragments;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.Toast;
import com.novelbook.android.R; import com.novelbook.android.R;
import com.novelbook.android.bean.NovelBlock;
import com.novelbook.android.db.Novel; import com.novelbook.android.db.Novel;
import com.novelbook.android.netsubscribe.BookSubscribe;
import com.novelbook.android.netutils.OnSuccessAndFaultListener;
import com.novelbook.android.netutils.OnSuccessAndFaultSub;
import com.novelbook.android.utils.BandanAdapter; import com.novelbook.android.utils.BandanAdapter;
import com.novelbook.android.utils.Constants;
import com.novelbook.android.utils.GsonUtil;
import com.novelbook.android.utils.OnItemClickListener; import com.novelbook.android.utils.OnItemClickListener;
import org.json.JSONObject;
import java.util.List; import java.util.List;
import butterknife.BindView; import butterknife.BindView;
@ -21,7 +32,8 @@ public class Fragment_bangdan extends BasicFragment {
private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2"; private static final String ARG_PARAM2 = "param2";
private BandanAdapter mAdapter; private BandanAdapter mAdapter;
private List<Novel> mData; private List<NovelBlock> mBlocks;
// private List<Novel> mData;
@BindView(R.id.rvBangdan) @BindView(R.id.rvBangdan)
RecyclerView rvBandan; RecyclerView rvBandan;
@ -35,6 +47,39 @@ public class Fragment_bangdan extends BasicFragment {
} }
@Override @Override
protected void fillData() { protected void fillData() {
if(mBlocks==null){
return;
}
mAdapter = new BandanAdapter(activity ,mBlocks,R.layout.recycle_list_item_bangdan,new OnItemClickListener()
{
@Override
public void onItemClick(View view, int position)
{
showPaihangbang(mBlocks.get(position));
// Toast.makeText(getActivity(),"待。。。。。做",Toast.LENGTH_LONG).show();
}
@Override
public void onItemLongClick(View view, int position)
{
// initDialog(position);
// mAdapter.removeData(position);
}
@Override
public void onLinearOutClick(View view, int blockId,int novelIndex) {
// Toast.makeText(activity, "book "+ bookId + " clicked", Toast.LENGTH_SHORT).show();
showBookDetail(mBlocks.get(blockId).getNs().get(novelIndex));
//showPaihangbang("分类名称" +position);
Log.d(TAG,String.format("clicked: position %s,lineId %s",novelIndex,blockId));
// openBook();
}
});
initialBookList();
} }
protected void processArguments(){ protected void processArguments(){
@ -51,38 +96,38 @@ public class Fragment_bangdan extends BasicFragment {
@Override @Override
public void initData() { public void initData() {
mData = initData(mData,'F'); showProgressDialog(true, "正在加载");
mAdapter = new BandanAdapter(activity ,mData,R.layout.recycle_list_item_bangdan,new OnItemClickListener()
{
@Override
public void onItemClick(View view, int position)
{
showPaihangbang("分类名称" +position);
}
@Override
public void onItemLongClick(View view, int position)
{
// initDialog(position);
// mAdapter.removeData(position);
}
@Override
public void onLinearOutClick(View view, int position,int lineId) {
// Toast.makeText(activity, "book "+ bookId + " clicked", Toast.LENGTH_SHORT).show();
showBookDetail(mData.get(position)); BookSubscribe.getSiteRanks( Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
// openBook(); @Override
} public void onSuccess(String result) {
});
// mFirstPage= gson.fromJson(result, FirstPage.class);
try {
mBlocks = GsonUtil.parserNovleBlocks(result,"ranks");
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG, "error on : " + e.getMessage());
}
handler.sendEmptyMessage(1);
}
@Override
public void onFault(String errorMsg) {
//失败
Log.d(TAG, "error on : " + errorMsg);
handler.sendEmptyMessage(1);
}
}, getActivity()));
} }
public void initViews(){ public void initViews(){
initialBookList();
} }
void initialBookList() { void initialBookList() {

View File

@ -3,6 +3,7 @@ package com.novelbook.android.Fragments;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.Toast; import android.widget.Toast;
@ -18,6 +19,7 @@ import com.novelbook.android.netsubscribe.BookSubscribe;
import com.novelbook.android.netutils.OnSuccessAndFaultListener; 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.OnItemClickListener; import com.novelbook.android.utils.OnItemClickListener;
import com.novelbook.android.adapter.BookListAdapter; import com.novelbook.android.adapter.BookListAdapter;
@ -34,11 +36,18 @@ import butterknife.BindView;
public class Fragment_booklist extends BasicFragment { public class Fragment_booklist extends BasicFragment {
private static final String EXTR_CATE ="cate" ; private static final String EXTR_CATE ="cate" ;
private static final String EXTR_PROGRESS ="progress" ; private static final String EXTR_PROGRESS ="progress" ;
private static final String EXTR_FN ="fn" ;
private static final String EXTR_BANGDAN ="bangdan" ;
private BookListAdapter mAdapter; private BookListAdapter mAdapter;
// private BookListAdapter mAdapter; // private BookListAdapter mAdapter;
private List<Novel> mData;; private List<Novel> mData;;
private String cate; private String cate;
private int progress; private int progress;
private String fn;
private String bangdan;
private int pageNo=1; private int pageNo=1;
private int totalCount; private int totalCount;
private int pageCount; private int pageCount;
@ -48,7 +57,14 @@ public class Fragment_booklist extends BasicFragment {
public Fragment_booklist() { public Fragment_booklist() {
// Required empty public constructor // Required empty public constructor
} }
public static Fragment_booklist newInstance(String fn,String bangdan) {
Fragment_booklist fragment = new Fragment_booklist();
Bundle args = new Bundle();
args.putString(EXTR_FN,fn);
args.putString(EXTR_BANGDAN,bangdan);
fragment.setArguments(args);
return fragment;
}
public static Fragment_booklist newInstance(String noveType,int progress) { public static Fragment_booklist newInstance(String noveType,int progress) {
Fragment_booklist fragment = new Fragment_booklist(); Fragment_booklist fragment = new Fragment_booklist();
Bundle args = new Bundle(); Bundle args = new Bundle();
@ -60,48 +76,27 @@ public class Fragment_booklist extends BasicFragment {
protected void processArguments(){ protected void processArguments(){
if (getArguments() != null) { if (getArguments() != null) {
Bundle bundle = getArguments() ; Bundle bundle = getArguments() ;
bangdan =bundle.getString(EXTR_BANGDAN);
fn= bundle.getString(EXTR_FN);
if(!TextUtils.isEmpty((fn))){
return;
}
cate = bundle.getString(EXTR_CATE); cate = bundle.getString(EXTR_CATE);
progress = bundle.getInt(EXTR_PROGRESS); progress = bundle.getInt(EXTR_PROGRESS);
} }
} }
public List<Novel> parserJsonArray(String strJson) {
List<Novel> list = new ArrayList<Novel>();
//创建一个Gson对象
// Gson gson = new Gson();
//创建一个JsonParser
JsonParser parser = new JsonParser();
//通过JsonParser对象可以把json格式的字符串解析成一个JsonElement对象
JsonElement el = parser.parse(strJson);
//把JsonElement对象转换成JsonObject
JsonObject jsonObj = null;
if (el.isJsonObject()) {
jsonObj = el.getAsJsonObject();
}
//把JsonElement对象转换成JsonArray
JsonArray jsonArray = null;
if (el.isJsonArray()) {
jsonArray = el.getAsJsonArray();
}
//遍历JsonArray对象
Iterator it = jsonArray.iterator();
while (it.hasNext()) {
JsonElement e = (JsonElement) it.next();
//JsonElement转换为JavaBean对象
list.add((Novel) gson.fromJson(e, Novel.class));
}
return list;
}
@Override @Override
protected void fillData() { protected void fillData() {
mAdapter = new BookListAdapter(activity, mData, R.layout.recycle_list_item_shudan, new OnItemClickListener() { if(mData==null){
return;
}
mAdapter = new BookListAdapter(activity, mData, R.layout.recycle_list_item_horizon, new OnItemClickListener() {
@Override @Override
public void onItemClick(View view, int position) { public void onItemClick(View view, int position) {
@ -133,15 +128,76 @@ public class Fragment_booklist extends BasicFragment {
public void initData() { public void initData() {
showProgressDialog(true, "正在加载"); showProgressDialog(true, "正在加载");
Log.d(TAG,String.format("fn is %s",fn) );
if(!TextUtils.isEmpty(bangdan) && !TextUtils.isEmpty(fn)){ //榜单
BookSubscribe.getSiteRankDetail(fn,pageNo,Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
@Override
public void onSuccess(String result) {
try {
JSONObject jsonObject = new JSONObject(result);
String resultstr = jsonObject.getString("rank") ;
mData = GsonUtil. parserJsonArray(resultstr,Constants.BLOCK_TITLE_NOVELS);
} catch (Exception e) {
e.printStackTrace();
}
handler.sendEmptyMessage(1);
}
@Override
public void onFault(String errorMsg) {
//失败
Log.d(TAG, "error on get firstpage: " + errorMsg);
handler.sendEmptyMessage(1);
}
}, getActivity()));
}else if(!TextUtils.isEmpty(fn)){ //首页 更多
BookSubscribe.getNovelPaihang(fn,Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
@Override
public void onSuccess(String result) {
// mFirstPage= gson.fromJson(result, FirstPage.class);
try {
mData = GsonUtil. parserJsonArray(result,Constants.BLOCK_TITLE_NOVELS);
} catch (Exception e) {
e.printStackTrace();
}
handler.sendEmptyMessage(1);
}
@Override
public void onFault(String errorMsg) {
//失败
Log.d(TAG, "error on get firstpage: " + errorMsg);
handler.sendEmptyMessage(1);
}
}, getActivity()));
}
else
BookSubscribe.getCateNovelList(cate,pageNo,Constants.SEX,progress,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() { BookSubscribe.getCateNovelList(cate,pageNo,Constants.SEX,progress,new OnSuccessAndFaultSub(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 {
JSONObject jsonObject = new JSONObject(result);
String resultstr = jsonObject.getString("ns"); mData = GsonUtil. parserJsonArray(result,Constants.BLOCK_TITLE_NOVELS);
mData = parserJsonArray(resultstr);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -33,7 +33,9 @@ import com.novelbook.android.db.SiteRule;
import com.novelbook.android.netsubscribe.BookSubscribe; import com.novelbook.android.netsubscribe.BookSubscribe;
import com.novelbook.android.netutils.OnSuccessAndFaultListener; 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.CyclePageIndicator; import com.novelbook.android.utils.CyclePageIndicator;
import com.novelbook.android.utils.GsonUtil;
import com.novelbook.android.utils.ImageUtil; 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;
@ -137,52 +139,20 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener
return R.layout.fragment_jingxuan; return R.layout.fragment_jingxuan;
} }
public List<NovelBlock> parserJsonArray(String strJson) {
List<NovelBlock> list = new ArrayList<NovelBlock>();
//创建一个Gson对象
// Gson gson = new Gson();
//创建一个JsonParser
JsonParser parser = new JsonParser();
//通过JsonParser对象可以把json格式的字符串解析成一个JsonElement对象
JsonElement el = parser.parse(strJson);
//把JsonElement对象转换成JsonObject
JsonObject jsonObj = null;
if (el.isJsonObject()) {
jsonObj = el.getAsJsonObject();
}
//把JsonElement对象转换成JsonArray
JsonArray jsonArray = null;
if (el.isJsonArray()) {
jsonArray = el.getAsJsonArray();
}
//遍历JsonArray对象
Iterator it = jsonArray.iterator();
while (it.hasNext()) {
JsonElement e = (JsonElement) it.next();
//JsonElement转换为JavaBean对象
list.add((NovelBlock) gson.fromJson(e, NovelBlock.class));
}
return list;
}
@Override @Override
public void initData() { public void initData() {
showProgressDialog(true, "正在加载"); showProgressDialog(true, "正在加载");
BookSubscribe.getFirstPage(new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() { BookSubscribe.getFirstPage(Constants.SEX,new OnSuccessAndFaultSub(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 {
JSONObject jsonObject = new JSONObject(result);
String resultstr = jsonObject.getString("blocks"); mBlocks = GsonUtil.parserNovleBlocks(result,"blocks");
mBlocks = parserJsonArray(resultstr);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -474,9 +444,13 @@ public class Fragment_jingxuan extends BasicFragment implements OnBannerListener
@BindView(R.id.rvFinishG) @BindView(R.id.rvFinishG)
RecyclerView rvFinishG; RecyclerView rvFinishG;
int getSpanCnt(){
return Constants.NOVEL_SPAN_CNT;
}
void initialBookList() { void initialBookList() {
int spanCnt =4; int spanCnt =getSpanCnt();
OnItemClickListener onItemClickListener = new OnItemClickListener() { OnItemClickListener onItemClickListener = new OnItemClickListener() {
@Override @Override

View File

@ -29,9 +29,7 @@ import com.novelbook.android.Fragments.Fragment_Shelf;
import com.novelbook.android.Fragments.Fragment_bookStore; import com.novelbook.android.Fragments.Fragment_bookStore;
import com.novelbook.android.Fragments.Fragment_paihang; import com.novelbook.android.Fragments.Fragment_paihang;
import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;

View File

@ -6,7 +6,7 @@ import android.content.Context;
import com.novelbook.android.utils.PageFactory; import com.novelbook.android.utils.PageFactory;
import org.litepal.LitePal; import org.litepal.LitePal;
import org.xutils.x;
import io.alterac.blurkit.BlurKit; import io.alterac.blurkit.BlurKit;
@ -19,8 +19,7 @@ public class MyApp extends Application {
Config.createConfig(this); Config.createConfig(this);
PageFactory.createPageFactory(this); PageFactory.createPageFactory(this);
x.Ext.init(this);
x.Ext.setDebug(false); //输出debug日志开启会影响性能
// BlurKit.init(this); // BlurKit.init(this);
LitePal.initialize(this); LitePal.initialize(this);
} }

View File

@ -72,7 +72,7 @@ public class activity_cates extends Activity_base {
{ {
Toast.makeText(activity_cates.this, " ", Toast.LENGTH_LONG).show(); Toast.makeText(activity_cates.this, " 请求失败", Toast.LENGTH_LONG).show();
} else if (msg.what == 3) { } else if (msg.what == 3) {
Toast.makeText(activity_cates.this, " ", Toast.LENGTH_LONG).show(); Toast.makeText(activity_cates.this, " ", Toast.LENGTH_LONG).show();
@ -95,7 +95,8 @@ public class activity_cates extends Activity_base {
@Override @Override
public void onItemClick(View view, int position) { public void onItemClick(View view, int position) {
showCateList(mCataloges.get(position).getName()); Cataloge cl = cates.get(position);
showCateList(cl.getName());
} }
}); });
@ -178,7 +179,7 @@ public class activity_cates extends Activity_base {
public void onFault(String errorMsg) { public void onFault(String errorMsg) {
//失败 //失败
Log.d(TAG, "error on get firstpage: " + errorMsg); Log.d(TAG, "error on get firstpage: " + errorMsg);
handler.sendEmptyMessage(1); handler.sendEmptyMessage(2);
} }
}, this)); }, this));

View File

@ -51,7 +51,7 @@ public interface HttpApi {
Observable<ResponseBody> getNovelRule(@Path("siteDomain") String siteDomain); Observable<ResponseBody> getNovelRule(@Path("siteDomain") String siteDomain);
@GET("page/index") @GET("page/index")
Observable<ResponseBody> getFirstPage(); Observable<ResponseBody> getFirstPage(@Query("sex") int Sex);
//分类的总榜显示每个小说分类有多少本书 //分类的总榜显示每个小说分类有多少本书
@GET("page/noveltype") @GET("page/noveltype")
@ -63,7 +63,22 @@ public interface HttpApi {
@GET("search/nt/{cate}/{pageno}") @GET("search/nt/{cate}/{pageno}")
Observable<ResponseBody> getCateNovels(@Path("cate") String cate, @Path("pageno") int pageno, @Query("sex") int sex, @Query("progress") int progress); Observable<ResponseBody> getCateNovels(@Path("cate") String cate, @Path("pageno") int pageno, @Query("sex") int sex, @Query("progress") int progress);
//小说排行 http://xiaoshuofenxiang.com/api/page/rank?fn=hot
@GET("page/rank")
Observable<ResponseBody> getNovelPaihang(@Query("fn") String fn,@Query("sex") int Sex);
//相关小说 http://xiaoshuofenxiang.com/api/n/6/about
@GET("n/{novelId}/about")
Observable<ResponseBody> getNovelsRelated(@Path("novelId") int novelId,@Query("sex") int Sex);
//同作者其它小说http://xiaoshuofenxiang.com/api/n/7/author
@GET("n/{novelId}/author")
Observable<ResponseBody> getNovelsSameAuthor(@Path("novelId") int novelId,@Query("sex") int Sex);
//站点榜单http://xiaoshuofenxiang.com/api/page/siteranks?sex=1
@GET("page/siteranks")
Observable<ResponseBody> getSiteRanks(@Query("sex") int Sex);
//http://xiaoshuofenxiang.com/api/page/siterank?fn=qidian-yuanchuangfengyunbang&pn=3
@GET("page/siterank?fn=qidian-yuanchuangfengyunbang&pn=3")
Observable<ResponseBody> getSiteRankDetail(@Query("fn")String fn,@Query("pn")int pageNo,@Query("sex") int Sex);
} }

View File

@ -31,8 +31,8 @@ public class BookSubscribe {
HttpMethods.getInstance().toSubscribe(observable, subscriber); HttpMethods.getInstance().toSubscribe(observable, subscriber);
} }
public static void getFirstPage(DisposableObserver<ResponseBody> subscriber){ public static void getFirstPage(int sex,DisposableObserver<ResponseBody> subscriber){
Observable<ResponseBody> observable = HttpMethods.getInstance().getHttpApi().getFirstPage(); Observable<ResponseBody> observable = HttpMethods.getInstance().getHttpApi().getFirstPage(sex);
HttpMethods.getInstance().toSubscribe(observable, subscriber); HttpMethods.getInstance().toSubscribe(observable, subscriber);
} }
public static void getCates(int sex,DisposableObserver<ResponseBody> subscriber){ public static void getCates(int sex,DisposableObserver<ResponseBody> subscriber){
@ -43,4 +43,28 @@ public class BookSubscribe {
Observable<ResponseBody> observable = HttpMethods.getInstance().getHttpApi().getCateNovels(cate,pageno,sex,progress); Observable<ResponseBody> observable = HttpMethods.getInstance().getHttpApi().getCateNovels(cate,pageno,sex,progress);
HttpMethods.getInstance().toSubscribe(observable, subscriber); HttpMethods.getInstance().toSubscribe(observable, subscriber);
} }
public static void getNovelPaihang(String fn,int sex,DisposableObserver<ResponseBody> subscriber){
Observable<ResponseBody> observable = HttpMethods.getInstance().getHttpApi().getNovelPaihang(fn,sex);
HttpMethods.getInstance().toSubscribe(observable, subscriber);
}
public static void getNovelsRelated(int novelId,int sex,DisposableObserver<ResponseBody> subscriber){
Observable<ResponseBody> observable = HttpMethods.getInstance().getHttpApi().getNovelsRelated(novelId,sex);
HttpMethods.getInstance().toSubscribe(observable, subscriber);
}
public static void getNovelsSameAuthor(int novelId,int sex,DisposableObserver<ResponseBody> subscriber){
Observable<ResponseBody> observable = HttpMethods.getInstance().getHttpApi().getNovelsSameAuthor(novelId,sex);
HttpMethods.getInstance().toSubscribe(observable, subscriber);
}
public static void getSiteRanks( int sex,DisposableObserver<ResponseBody> subscriber){
Observable<ResponseBody> observable = HttpMethods.getInstance().getHttpApi().getSiteRanks(sex);
HttpMethods.getInstance().toSubscribe(observable, subscriber);
}
public static void getSiteRankDetail( String fn,int pageNo,int sex,DisposableObserver<ResponseBody> subscriber){
Observable<ResponseBody> observable = HttpMethods.getInstance().getHttpApi().getSiteRankDetail(fn,pageNo,sex);
HttpMethods.getInstance().toSubscribe(observable, subscriber);
}
} }

View File

@ -11,7 +11,7 @@ import com.novelbook.android.utils.CommonUtil;
import com.novelbook.android.utils.FileUtils; import com.novelbook.android.utils.FileUtils;
import org.xutils.common.util.FileUtil;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;

View File

@ -130,7 +130,10 @@ public class OnSuccessAndFaultSub extends DisposableObserver<ResponseBody>
} else if (code == 401) { } else if (code == 401) {
// ToastManager.showShortToast("请求的地址不存在"); // ToastManager.showShortToast("请求的地址不存在");
mOnSuccessAndFaultListener.onFault("权限验证错误"); mOnSuccessAndFaultListener.onFault("权限验证错误");
} else { } else if(code == 500) {
// ToastManager.showShortToast("请求失败");
mOnSuccessAndFaultListener.onFault("服务错误");
}else {
// ToastManager.showShortToast("请求失败"); // ToastManager.showShortToast("请求失败");
mOnSuccessAndFaultListener.onFault("请求失败"); mOnSuccessAndFaultListener.onFault("请求失败");
} }

View File

@ -5,10 +5,12 @@ import android.support.v7.widget.RecyclerView;
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.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.novelbook.android.R; import com.novelbook.android.R;
import com.novelbook.android.bean.NovelBlock;
import com.novelbook.android.db.Novel; import com.novelbook.android.db.Novel;
import java.util.ArrayList; import java.util.ArrayList;
@ -23,10 +25,10 @@ import butterknife.ButterKnife;
private final int IMAGE_VIEW = 3; private final int IMAGE_VIEW = 3;
private Context context; private Context context;
private List<Novel> mDatas = new ArrayList<Novel>(); private List<NovelBlock> mDatas = new ArrayList<NovelBlock>();
private OnItemClickListener mOnItemClickLitener; private OnItemClickListener mOnItemClickLitener;
private int listItemID; private int listItemID;
public BandanAdapter(Context context, List<Novel> mDatas, int listItemID, OnItemClickListener clickLitener) { public BandanAdapter(Context context, List<NovelBlock> mDatas, int listItemID, OnItemClickListener clickLitener) {
this.context = context; this.context = context;
this.mDatas = mDatas; this.mDatas = mDatas;
this.mOnItemClickLitener = clickLitener; this.mOnItemClickLitener = clickLitener;
@ -60,7 +62,7 @@ import butterknife.ButterKnife;
public void setParameters(List<Novel> mDatas,int listItemID ) { public void setParameters(List<NovelBlock> mDatas,int listItemID ) {
this.mDatas = mDatas; this.mDatas = mDatas;
this.listItemID = listItemID; this.listItemID = listItemID;
} }
@ -73,22 +75,56 @@ import butterknife.ButterKnife;
@Override @Override
public void onBindViewHolder(MyViewHolder holder, int position) public void onBindViewHolder(MyViewHolder holder, int position)
{ {
holder.tvCateName .setText(mDatas.get(0).getNovelType()); holder.ll1.setVisibility(View.GONE);
holder.ll2.setVisibility(View.GONE);
holder.ll3.setVisibility(View.GONE);
NovelBlock nb = mDatas.get(position);
holder.tvCateName.setText(nb.getName());
if(nb==null){return;}
if(nb.getNs().size()>0) {
holder.tvTitle.setText(mDatas.get(0).getName()); Novel novel = nb.getNs().get(0);
holder.tvAuthor.setText(mDatas.get(0).getAuthor()); if(novel!=null) {
holder.tvCate.setText(mDatas.get(0).getNovelType()); holder.ll1.setVisibility(View.VISIBLE);
holder.tvDesc.setText(mDatas.get(0).getDesc());
holder.tvTitle.setText(novel.getName());
holder.tvAuthor.setText(novel.getAuthor());
holder.tvCate.setText(novel.getNovelType());
holder.tvDesc.setText(novel.getDesc());
ImageUtil.loadImage(context,novel.getCover(),holder.imageView);
}
}
if(nb.getNs().size()>1) {
Novel novel = nb.getNs().get(1);
if(novel!=null) {
holder.ll2.setVisibility(View.VISIBLE);
holder.tvTitle2.setText(novel.getName());
holder.tvAuthor2.setText(novel.getAuthor());
holder.tvCate2.setText(novel.getNovelType());
holder.tvDesc2.setText(novel.getDesc());
ImageUtil.loadImage(context,novel.getCover(),holder.imageView2);
}
}
if(nb.getNs().size()>2) {
Novel novel = nb.getNs().get(2);
if(novel!=null) {
holder.ll3.setVisibility(View.VISIBLE);
holder.tvTitle3.setText(novel.getName());
holder.tvAuthor3.setText(novel.getAuthor());
holder.tvCate3.setText(novel.getNovelType());
holder.tvDesc3.setText(novel.getDesc());
ImageUtil.loadImage(context,novel.getCover(),holder.imageView3);
}
}
holder.tvTitle2.setText(mDatas.get(1).getName());
holder.tvAuthor2.setText(mDatas.get(1).getAuthor());
holder.tvCate2.setText(mDatas.get(1).getNovelType());
holder.tvDesc2.setText(mDatas.get(1).getDesc());
holder.tvTitle3.setText(mDatas.get(2).getName());
holder.tvAuthor3.setText(mDatas.get(2).getAuthor());
holder.tvCate3.setText(mDatas.get(2).getNovelType());
holder.tvDesc3.setText(mDatas.get(2).getDesc());
// 如果设置了回调则设置点击事件 // 如果设置了回调则设置点击事件
if (mOnItemClickLitener != null) if (mOnItemClickLitener != null)
@ -120,7 +156,7 @@ import butterknife.ButterKnife;
public void onClick(View v) public void onClick(View v)
{ {
int pos = position; int pos = position;
mOnItemClickLitener.onLinearOutClick(holder.itemView, pos,1); mOnItemClickLitener.onLinearOutClick(holder.itemView, pos,0);
} }
}); });
@ -129,7 +165,7 @@ import butterknife.ButterKnife;
public void onClick(View v) public void onClick(View v)
{ {
int pos = position; int pos = position;
mOnItemClickLitener.onLinearOutClick(holder.itemView, pos,2); mOnItemClickLitener.onLinearOutClick(holder.itemView, pos,1);
} }
}); });
@ -138,7 +174,7 @@ import butterknife.ButterKnife;
public void onClick(View v) public void onClick(View v)
{ {
int pos = position; int pos = position;
mOnItemClickLitener.onLinearOutClick(holder.itemView, pos,3); mOnItemClickLitener.onLinearOutClick(holder.itemView, pos,2);
} }
}); });
@ -193,7 +229,12 @@ import butterknife.ButterKnife;
LinearLayout ll2; LinearLayout ll2;
@BindView(R.id.ll3) @BindView(R.id.ll3)
LinearLayout ll3; LinearLayout ll3;
@BindView(R.id.imageView)
ImageView imageView;
@BindView(R.id.imageView2)
ImageView imageView2;
@BindView(R.id.imageView3)
ImageView imageView3;
public MyViewHolder(View view) public MyViewHolder(View view)
{ {
super(view); super(view);

View File

@ -4,13 +4,17 @@ import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.text.TextUtils;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.Display; import android.view.Display;
import android.view.TextureView;
import android.view.Window; import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale; import java.util.Locale;
@ -260,6 +264,15 @@ public class CommonUtil {
return versionName; return versionName;
} }
public static String getDateString(long time,String format){
String f = TextUtils.isEmpty(format) ?"yyyy年MM月dd日 HH:mm:ss":format;
Date dt = new Date(time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
return sdf.format(dt);
}
public static String getDateString(long time){
return getDateString(time,"");
}
} }

View File

@ -1,6 +1,8 @@
package com.novelbook.android.utils; package com.novelbook.android.utils;
public class Constants { public class Constants {
public static final String BLOCK_TITLE_NOVELS = "ns";
public static final int NOVEL_SPAN_CNT =3 ; //grid columns
public static int SEX=1; public static int SEX=1;
} }

View File

@ -0,0 +1,117 @@
package com.novelbook.android.utils;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Build;
import android.renderscript.RSRuntimeException;
import android.support.annotation.NonNull;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import jp.wasabeef.glide.transformations.internal.FastBlur;
import jp.wasabeef.glide.transformations.internal.RSBlur;
public class GaoSiTransForm extends BitmapTransformation {
private static String STRING_CHARSET_NAME = "UTF-8";
private static final String ID = "GaoSiTransFormtion";
private static Charset CHARSET = Charset.forName(STRING_CHARSET_NAME);
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private static int MAX_RADIUS = 25;
private static int DEFAULT_DOWN_SAMPLING = 1;
private Context mContext;
private BitmapPool mBitmapPool;
private int mRadius;
private int mSampling;
public GaoSiTransForm(Context context) {
this(context, Glide.get(context).getBitmapPool(), MAX_RADIUS, DEFAULT_DOWN_SAMPLING);
}
public GaoSiTransForm(Context context, BitmapPool pool) {
this(context, pool, MAX_RADIUS, DEFAULT_DOWN_SAMPLING);
}
public GaoSiTransForm(Context context, BitmapPool pool, int radius) {
this(context, pool, radius, DEFAULT_DOWN_SAMPLING);
}
public GaoSiTransForm(Context context, int radius) {
this(context, Glide.get(context).getBitmapPool(), radius, DEFAULT_DOWN_SAMPLING);
}
public GaoSiTransForm(Context context, int radius, int sampling) {
this(context, Glide.get(context).getBitmapPool(), radius, sampling);
}
public GaoSiTransForm(Context context, BitmapPool pool, int radius, int sampling) {
mContext = context.getApplicationContext();
mBitmapPool = pool;
mRadius = radius;
mSampling = sampling;
}
@Override
protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int
outWidth, int outHeight) {
Bitmap source = toTransform;
int width = source.getWidth();
int height = source.getHeight();
int scaledWidth = width / mSampling;
int scaledHeight = height / mSampling;
Bitmap bitmap = mBitmapPool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);
if (bitmap == null) {
bitmap = Bitmap.createBitmap(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);
}
Canvas canvas = new Canvas(bitmap);
canvas.scale(1 / (float) mSampling, 1 / (float) mSampling);
Paint paint = new Paint();
paint.setFlags(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(source, 0, 0, paint);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
try {
bitmap = RSBlur.blur(mContext, bitmap, mRadius);
} catch (RSRuntimeException e) {
bitmap = FastBlur.blur(bitmap, mRadius, true);
}
} else {
bitmap = FastBlur.blur(bitmap, mRadius, true);
}
//return BitmapResource.obtain(bitmap, mBitmapPool);
return bitmap;
}
@Override
public int hashCode() {
return ID.hashCode();
}
@Override
public boolean equals(Object obj) {
return obj instanceof GaoSiTransForm;
}
@Override
public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
}
}

View File

@ -1,12 +1,23 @@
package com.novelbook.android.utils; package com.novelbook.android.utils;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.novelbook.android.bean.NovelBlock;
import com.novelbook.android.db.Novel; import com.novelbook.android.db.Novel;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class GsonUtil { public class GsonUtil {
private static Gson gson = new Gson();
public static Novel getNovel(String json){ public static Novel getNovel(String json){
Novel nv = new Novel(); Novel nv = new Novel();
try { try {
@ -27,4 +38,72 @@ public class GsonUtil {
} }
return nv; return nv;
} }
public static List<NovelBlock> parserNovleBlocks(String restult,String blockName ) throws JSONException {
JSONObject jsonObject = new JSONObject(restult);
String strJson = jsonObject.getString(blockName);
List<NovelBlock> list = new ArrayList<NovelBlock>();
//创建一个Gson对象
// Gson gson = new Gson();
//创建一个JsonParser
JsonParser parser = new JsonParser();
//通过JsonParser对象可以把json格式的字符串解析成一个JsonElement对象
JsonElement el = parser.parse(strJson);
//把JsonElement对象转换成JsonObject
JsonObject jsonObj = null;
if (el.isJsonObject()) {
jsonObj = el.getAsJsonObject();
}
//把JsonElement对象转换成JsonArray
JsonArray jsonArray = null;
if (el.isJsonArray()) {
jsonArray = el.getAsJsonArray();
}
//遍历JsonArray对象
Iterator it = jsonArray.iterator();
while (it.hasNext()) {
JsonElement e = (JsonElement) it.next();
//JsonElement转换为JavaBean对象
list.add((NovelBlock) gson.fromJson(e, NovelBlock.class));
}
return list;
}
public static List<Novel> parserJsonArray(String restult,String blockName ) throws JSONException {
JSONObject jsonObject = new JSONObject(restult);
String resultstr = jsonObject.getString(blockName);
List<Novel> list = new ArrayList<Novel>();
//创建一个Gson对象
// Gson gson = new Gson();
//创建一个JsonParser
JsonParser parser = new JsonParser();
//通过JsonParser对象可以把json格式的字符串解析成一个JsonElement对象
JsonElement el = parser.parse(resultstr);
//把JsonElement对象转换成JsonObject
JsonObject jsonObj = null;
if (el.isJsonObject()) {
jsonObj = el.getAsJsonObject();
}
//把JsonElement对象转换成JsonArray
JsonArray jsonArray = null;
if (el.isJsonArray()) {
jsonArray = el.getAsJsonArray();
}
//遍历JsonArray对象
Iterator it = jsonArray.iterator();
while (it.hasNext()) {
JsonElement e = (JsonElement) it.next();
//JsonElement转换为JavaBean对象
list.add((Novel) gson.fromJson(e, Novel.class));
}
return list;
}
} }

View File

@ -33,23 +33,25 @@
android:fitsSystemWindows="true" android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary" app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed" app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:collapsedTitleGravity="center"
app:expandedTitleGravity="bottom"
app:expandedTitleTextAppearance="@style/TitleText"
app:toolbarId="@+id/toolbar"> app:toolbarId="@+id/toolbar">
<FrameLayout <FrameLayout
android:id="@+id/login_layout" android:id="@+id/login_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="240dp" android:layout_height="match_parent"
android:paddingBottom="10dp" android:paddingBottom="0dp"
app:layout_collapseMode="pin" app:layout_collapseMode="pin"
app:layout_collapseParallaxMultiplier="0.7"> app:layout_collapseParallaxMultiplier="0.7">
<ImageView <ImageView
android:id="@+id/head_img2" android:id="@+id/imageViewHead"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:src="@mipmap/side_bg2" android:scaleType="fitXY"
android:alpha="0.6"
/> />
@ -58,20 +60,20 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="bottom" android:gravity="bottom"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginLeft="25dp" android:layout_marginLeft="30dp"
android:layout_marginRight="20dp" android:layout_marginRight="20dp"
android:orientation="horizontal"> android:orientation="horizontal">
<ImageView <ImageView
android:id="@+id/imageView" android:id="@+id/imageView"
android:layout_width="100dp" style="@style/NovelImage"
android:layout_height="120dp"
android:layout_margin="10dp"
android:layout_weight="0" android:layout_weight="0"
android:gravity="left" android:gravity="left"
android:scaleType="fitXY" android:scaleType="fitXY"
android:src="@mipmap/side_bg" /> android:layout_height="100dp"
android:layout_width="80dp"
/>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -83,36 +85,34 @@
<TextView <TextView
android:id="@+id/title" android:id="@+id/title"
style="@style/TextViewHead.bold" style="@style/TextViewNovelTitle.horizon.bold"
android:text="射雕英雄传" android:text=" "
android:layout_height="30dp"
/> />
<TextView <TextView
android:id="@+id/desc" android:id="@+id/desc"
style="@style/TextViewHead" style="@style/TextViewNovelDesc.head"
android:maxLines="2" android:text=" "
android:text="xxxxxxxxxxxxxxxxxxxxx"
/> />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="2dp"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView
android:id="@+id/author"
style="@style/TextViewHead"
android:text="金庸"
/>
<TextView <TextView
android:id="@+id/category" android:id="@+id/category"
style="@style/TextViewHead" style="@style/TextViewNovelType"
android:layout_marginLeft="5dp" android:text="aaa"
android:text="武侠小说" />
/> <TextView
android:id="@+id/author"
style="@style/TextViewNovelAuthor"
android:text="aaa"
/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@ -126,8 +126,13 @@
<android.support.v7.widget.Toolbar <android.support.v7.widget.Toolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" android:layout_height="40dp"
android:minHeight="40dp"
app:layout_collapseMode="pin" app:layout_collapseMode="pin"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:popupTheme="@style/ToolBarTheme.PopupOverlay" > app:popupTheme="@style/ToolBarTheme.PopupOverlay" >
<Button android:id="@+id/mTextMessage" <Button android:id="@+id/mTextMessage"

View File

@ -72,12 +72,15 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical"
>
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="horizontal"
android:visibility="gone">
<TextView <TextView
android:layout_width="5dp" android:layout_width="5dp"
@ -94,10 +97,23 @@
android:text="简介" /> android:text="简介" />
</LinearLayout> </LinearLayout>
<com.timqi.collapsibletextview.CollapsibleTextView
<TextView xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/txtDesc2" android:id="@+id/txtDesc2"
style="@style/TextViewDesc" style="@style/TextViewDesc"
android:padding="5dp"
android:layout_marginLeft="20dp"
app:collapsedLines="2"
app:collapsedText=" 》》》"
app:expandedText=" 《《《"
app:suffixColor="#0000ff"
app:suffixTrigger="true"
/>
<TextView
android:visibility="gone"
android:id="@+id/txtDesc22"
style="@style/TextViewDesc"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="20dp" android:layout_marginLeft="20dp"
@ -108,7 +124,9 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_gravity="center"> android:layout_gravity="center"
android:visibility="gone"
>
<ImageView <ImageView
android:layout_width="match_parent" android:layout_width="match_parent"
@ -130,7 +148,9 @@
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="horizontal"
android:visibility="gone"
>
<TextView <TextView
android:layout_width="5dp" android:layout_width="5dp"
@ -151,29 +171,45 @@
android:id="@+id/llCate" android:id="@+id/llCate"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="5dp" android:layout_marginTop="10dp"
android:paddingBottom="5dp" android:layout_marginBottom="10dp"
android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal">
<ImageView <ImageView
android:layout_width="wrap_content" android:layout_width="5dp"
android:layout_height="5dp"
android:layout_gravity="center"
android:layout_weight="0"
android:layout_marginRight="5dp"
android:src="@drawable/ic_mood_black_24dp" />
<TextView
style="@style/TextViewDesc"
android:layout_width="20dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:textSize="11sp"
android:layout_weight="0" android:text="目录" />
android:src="@drawable/ic_mood_black_24dp" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:orientation="vertical"> android:orientation="vertical">
<TextView
android:id="@+id/txtLatestUpdate"
style="@style/TextViewDesc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
/>
<TextView <TextView
android:id="@+id/txtLatestCate" android:id="@+id/txtLatestCate"
style="@style/TextViewDesc" style="@style/TextViewDesc"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="最近更新:2/20/2019 5:06:39 PM" android:text=""
/> />
@ -181,13 +217,7 @@
</LinearLayout> </LinearLayout>
<TextView
style="@style/TextViewDesc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center"
android:layout_weight="0"
android:text=">>" />
</LinearLayout> </LinearLayout>
@ -254,11 +284,11 @@
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
style="@style/TextViewTitle" android:id="@+id/tvAuthorMore"
android:layout_width="match_parent" style="@style/NovelBlockTitle"
android:layout_height="wrap_content" android:layout_marginBottom="5dp"
android:layout_weight="1" android:layout_weight="1"
android:text="作者其他作品" /> android:text=" 其他作品" />
<android.support.v7.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/rvBooklist" android:id="@+id/rvBooklist"
@ -272,8 +302,30 @@
</LinearLayout> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tvTonglei"
style="@style/NovelBlockTitle"
android:layout_marginBottom="5dp"
android:layout_weight="1"
android:text="同类推荐" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rvBooklistRelated"
android:divider="#ffff0000"
android:dividerHeight="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:nestedScrollingEnabled="false"
android:paddingBottom="50dp"
/>
</LinearLayout>
<LinearLayout style="@style/llGraySplit" />
</LinearLayout> </LinearLayout>

View File

@ -11,6 +11,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:nestedScrollingEnabled="false" android:nestedScrollingEnabled="false"
android:paddingTop="10dp"
/> />
</FrameLayout> </FrameLayout>

View File

@ -2,9 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout 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"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" style="@style/llOutside.vertical"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Fragments.Fragment_jingxuan"> tools:context=".Fragments.Fragment_jingxuan">
<android.support.v4.widget.SwipeRefreshLayout <android.support.v4.widget.SwipeRefreshLayout
@ -22,10 +20,11 @@
app:layout_behavior="@string/appbar_scrolling_view_behavior"> app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout <LinearLayout
android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:paddingBottom="30dp" android:layout_marginBottom="50dp"
android:orientation="vertical"> >
<com.youth.banner.Banner <com.youth.banner.Banner
android:id="@+id/banner" android:id="@+id/banner"
@ -39,34 +38,25 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center" android:gravity="center"
android:orientation="vertical"> android:orientation="vertical">
<!-- 推荐 --> <!-- 推荐 -->
<LinearLayout <LinearLayout
android:layout_width="match_parent" style="@style/NovelBlockHead"
android:layout_height="30dp" >
android:layout_gravity="center_horizontal"
android:layout_margin="6dp"
android:orientation="horizontal">
<ImageView <ImageView
android:layout_width="20dp" style="@style/NovelBlockImg"
android:layout_height="20dp"
android:layout_gravity="left"
android:src="@drawable/googleg_standard_color_18" /> android:src="@drawable/googleg_standard_color_18" />
<TextView <TextView
android:layout_width="match_parent" style="@style/NovelBlockTitle"
android:layout_height="30dp"
android:layout_gravity="left"
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:text="重磅推荐" android:text="重磅推荐"
android:textColor="#212121" /> />
<Button <Button
android:id="@+id/buttonMoreTuijian" android:id="@+id/buttonMoreTuijian"
style="@style/buttonRightMore" style="@style/buttonRightMore"
android:text="更多>" android:text="更多>>"
android:visibility="gone" android:visibility="gone"
/> />
@ -107,33 +97,24 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" style="@style/NovelBlockHead"
android:layout_height="30dp" >
android:layout_gravity="center_horizontal"
android:layout_margin="6dp"
android:orientation="horizontal">
<ImageView <ImageView
android:id="@+id/imageBlock1" android:id="@+id/imageBlock1"
android:layout_width="20dp" style="@style/NovelBlockImg"
android:layout_height="20dp"
android:layout_gravity="left"
android:src="@drawable/googleg_standard_color_18" /> android:src="@drawable/googleg_standard_color_18" />
<TextView <TextView
android:id="@+id/tvBlock1" android:id="@+id/tvBlock1"
android:layout_width="match_parent" style="@style/NovelBlockTitle"
android:layout_height="30dp" android:text="block"
android:layout_gravity="left" />
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:text="火热新书"
android:textColor="#212121" />
<Button <Button
android:id="@+id/buttonMore1" android:id="@+id/buttonMore1"
style="@style/buttonRightMore" style="@style/buttonRightMore"
android:text="更多>"
/> />
@ -169,34 +150,28 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_gravity="center_horizontal"
android:layout_margin="6dp"
android:orientation="horizontal">
<LinearLayout
style="@style/NovelBlockHead"
>
<ImageView <ImageView
android:id="@+id/imageBlock2" android:id="@+id/imageBlock2"
android:layout_width="20dp" style="@style/NovelBlockImg"
android:layout_height="20dp"
android:layout_gravity="left"
android:src="@drawable/googleg_standard_color_18" /> android:src="@drawable/googleg_standard_color_18" />
<TextView <TextView
android:id="@+id/tvBlock2" android:id="@+id/tvBlock2"
android:layout_width="match_parent" style="@style/NovelBlockTitle"
android:layout_height="30dp" android:text="block"
android:layout_gravity="left" />
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:text="热门连载"
android:textColor="#212121" />
<Button <Button
android:id="@+id/buttonMore2" android:id="@+id/buttonMore2"
style="@style/buttonRightMore" style="@style/buttonRightMore"
android:text="更多>"
/> />
@ -236,33 +211,25 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" style="@style/NovelBlockHead"
android:layout_height="30dp" >
android:layout_gravity="center_horizontal"
android:layout_margin="6dp"
android:orientation="horizontal">
<ImageView <ImageView
android:id="@+id/imageBlock3" android:id="@+id/imageBlock3"
android:layout_width="20dp" style="@style/NovelBlockImg"
android:layout_height="20dp"
android:layout_gravity="left"
android:src="@drawable/googleg_standard_color_18" /> android:src="@drawable/googleg_standard_color_18" />
<TextView <TextView
android:id="@+id/tvBlock3" android:id="@+id/tvBlock3"
android:layout_width="match_parent" style="@style/NovelBlockTitle"
android:layout_height="30dp" android:text="block"
android:layout_gravity="left" />
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:text="完本精选"
android:textColor="#212121" />
<Button <Button
android:id="@+id/buttonMore3" android:id="@+id/buttonMore3"
style="@style/buttonRightMore" style="@style/buttonRightMore"
android:text="更多>"
/> />
@ -301,34 +268,28 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout style="@style/llGraySplit" />
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_gravity="center_horizontal"
android:layout_margin="6dp"
android:orientation="horizontal">
<LinearLayout
style="@style/NovelBlockHead"
>
<ImageView <ImageView
android:id="@+id/imageBlock4" android:id="@+id/imageBlock4"
android:layout_width="20dp" style="@style/NovelBlockImg"
android:layout_height="20dp"
android:layout_gravity="left"
android:src="@drawable/googleg_standard_color_18" /> android:src="@drawable/googleg_standard_color_18" />
<TextView <TextView
android:id="@+id/tvBlock4" android:id="@+id/tvBlock4"
android:layout_width="match_parent" style="@style/NovelBlockTitle"
android:layout_height="30dp" android:text="block"
android:layout_gravity="left" />
android:layout_marginLeft="2dp"
android:layout_weight="1"
android:text="完本精选"
android:textColor="#212121" />
<Button <Button
android:id="@+id/buttonMore4" android:id="@+id/buttonMore4"
style="@style/buttonRightMore" style="@style/buttonRightMore"
android:text="更多>"
/> />
@ -356,7 +317,7 @@
<LinearLayout style="@style/llGraySplit" /> <LinearLayout style="@style/llGraySplit" />
</LinearLayout> </LinearLayout>
<LinearLayout style="@style/llGraySplit" />
</LinearLayout> </LinearLayout>
<!-- <include layout="@layout/fragment_jingxuan_book_list"></include> --> <!-- <include layout="@layout/fragment_jingxuan_book_list"></include> -->

View File

@ -7,58 +7,33 @@
android:background="@drawable/item_selector" android:background="@drawable/item_selector"
android:clickable="true" android:clickable="true"
android:layout_weight="1" android:layout_weight="1"
android:padding="0dp"> android:layout_marginBottom="5dp"
<FrameLayout android:padding="2dp">
<FrameLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<ImageView <ImageView
android:id="@+id/imageView" android:id="@+id/imageView"
style="@style/NovelImage" style="@style/NovelImage"
android:src="@drawable/googleg_standard_color_18" /> android:src="@drawable/googleg_standard_color_18" />
<CheckBox <CheckBox
android:id="@+id/id_check_box" android:id="@+id/id_check_box"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="right" android:layout_gravity="right"
android:layout_marginTop="5dp" android:layout_marginTop="5dp"
android:visibility="gone" android:visibility="gone"
android:text=""/> android:text=""/>
</FrameLayout> </FrameLayout>
<TextView <TextView
android:id="@+id/title" android:id="@+id/title"
android:layout_width="wrap_content" style="@style/TextViewNovelTitle"
android:layout_height="30dp" android:layout_width="75dp"
android:gravity="top|center" android:gravity="top|center"
android:text="天龙八部天龙八部天龙八部" android:text="天龙八部天龙八部天龙八部"
android:lines="1"
android:maxLength="5" />
android:textColor="#212121" />
<!--
<TextView
android:visibility="gone"
android:id="@+id/desc"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:gravity="center"
android:text=""
android:textColor="#212121" />
<TextView
android:visibility="gone"
android:id="@+id/author"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:gravity="center"
android:text=""
android:textColor="#212121" />
<TextView
android:visibility="gone"
android:id="@+id/category"
android:layout_marginLeft="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="武侠小说"
android:textColor="@color/colorAccent" />
-->
</LinearLayout> </LinearLayout>

View File

@ -3,23 +3,27 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout style="@style/llGraySplit"/>
<LinearLayout style="@style/llGraySplit" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="30dp" android:layout_height="30dp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_margin="2dp" android:layout_margin="2dp"
android:paddingBottom="5dp"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
android:id="@+id/tvCateName" android:id="@+id/tvCateName"
android:layout_width="wrap_content" style="@style/NovelBlockTitle"
android:layout_height="30dp"
android:layout_gravity="left"
android:layout_weight="1"
android:text="完本精选" android:text="完本精选"
android:textColor="#212121" />
/>
<TextView
style="@style/tvRightMore"
android:text="更多"
/>
</LinearLayout> </LinearLayout>
@ -31,68 +35,58 @@
android:background="@drawable/item_selector" android:background="@drawable/item_selector"
android:clickable="true" android:clickable="true"
android:gravity="center" android:gravity="center"
android:orientation="horizontal"> android:orientation="vertical">
<ImageView
android:id="@+id/imageView"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_margin="10dp"
android:layout_weight="0"
android:gravity="left"
android:src="@drawable/googleg_standard_color_18" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" android:orientation="horizontal">
android:gravity="center"
android:orientation="vertical">
<TextView <ImageView
android:id="@+id/title" android:id="@+id/imageView"
android:layout_width="wrap_content" style="@style/NovelImage.horizon"
android:layout_height="30dp" android:src="@drawable/googleg_standard_color_18" />
android:layout_gravity="left"
android:text="射雕英雄传"
android:textColor="#212121" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_marginTop="2dp" android:layout_weight="1"
android:orientation="horizontal"> android:gravity="center"
android:orientation="vertical">
<TextView <TextView
android:id="@+id/author" android:id="@+id/title"
android:layout_width="wrap_content" style="@style/TextViewNovelTitle.horizon" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="金庸" android:layout_marginTop="2dp"
android:textColor="#212121" />
android:orientation="horizontal">
<TextView
android:id="@+id/category"
style="@style/TextViewNovelType" />
<TextView
android:id="@+id/author"
style="@style/TextViewNovelAuthor" />
</LinearLayout>
<TextView <TextView
android:id="@+id/category" android:id="@+id/desc"
android:layout_width="wrap_content" style="@style/TextViewNovelDesc"/>
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="武侠小说"
android:textColor="@color/colorAccent" />
</LinearLayout> </LinearLayout>
<TextView
android:id="@+id/desc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="武侠小说,武侠小说,著名的金庸作品 "
android:textColor="@color/common_google_signin_btn_text_light"
android:textSize="11sp" />
</LinearLayout> </LinearLayout>
<LinearLayout style="@style/llGraySplit" />
</LinearLayout> </LinearLayout>
<LinearLayout style="@style/llGraySplit" />
<LinearLayout <LinearLayout
android:id="@+id/ll2" android:id="@+id/ll2"
@ -102,69 +96,58 @@
android:background="@drawable/item_selector" android:background="@drawable/item_selector"
android:clickable="true" android:clickable="true"
android:gravity="center" android:gravity="center"
android:orientation="horizontal"> android:orientation="vertical">
<ImageView
android:id="@+id/imageView2"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_margin="10dp"
android:layout_weight="0"
android:gravity="left"
android:src="@drawable/googleg_standard_color_18" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" android:orientation="horizontal">
android:gravity="center"
android:orientation="vertical">
<TextView <ImageView
android:id="@+id/title2" android:id="@+id/imageView2"
android:layout_width="wrap_content" style="@style/NovelImage.horizon"
android:layout_height="30dp" android:src="@drawable/googleg_standard_color_18" />
android:layout_gravity="left"
android:text="射雕英雄传"
android:textColor="#212121" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_marginTop="2dp" android:layout_weight="1"
android:orientation="horizontal"> android:gravity="center"
android:orientation="vertical">
<TextView <TextView
android:id="@+id/author2" android:id="@+id/title2"
android:layout_width="wrap_content" style="@style/TextViewNovelTitle.horizon" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="金庸" android:layout_marginTop="2dp"
android:textColor="#212121" /> android:orientation="horizontal">
<TextView
android:id="@+id/category2"
style="@style/TextViewNovelType" />
<TextView
android:id="@+id/author2"
style="@style/TextViewNovelAuthor" />
</LinearLayout>
<TextView <TextView
android:id="@+id/category2" android:id="@+id/desc2"
android:layout_width="wrap_content" style="@style/TextViewNovelDesc"/>
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="武侠小说"
android:textColor="@color/colorAccent" />
</LinearLayout> </LinearLayout>
<TextView
android:id="@+id/desc2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="武侠小说,武侠小说,著名的金庸作品 "
android:textColor="@color/common_google_signin_btn_text_light"
android:textSize="11sp" />
</LinearLayout> </LinearLayout>
<LinearLayout style="@style/llGraySplit" />
</LinearLayout> </LinearLayout>
<LinearLayout style="@style/llGraySplit" />
<LinearLayout <LinearLayout
android:id="@+id/ll3" android:id="@+id/ll3"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -173,74 +156,65 @@
android:background="@drawable/item_selector" android:background="@drawable/item_selector"
android:clickable="false" android:clickable="false"
android:gravity="center" android:gravity="center"
android:orientation="horizontal"> android:orientation="vertical">
<ImageView
android:id="@+id/imageView3"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_margin="10dp"
android:layout_weight="0"
android:gravity="left"
android:src="@drawable/googleg_standard_color_18" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" android:orientation="horizontal">
android:gravity="center"
android:orientation="vertical">
<TextView <ImageView
android:id="@+id/title3" android:id="@+id/imageView3"
android:layout_width="wrap_content" style="@style/NovelImage.horizon"
android:layout_height="30dp" android:src="@drawable/googleg_standard_color_18" />
android:layout_gravity="left"
android:text="射雕英雄传"
android:textColor="#212121" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_marginTop="2dp" android:layout_weight="1"
android:orientation="horizontal"> android:gravity="center"
android:orientation="vertical">
<TextView <TextView
android:id="@+id/author3" android:id="@+id/title3"
android:layout_width="wrap_content" style="@style/TextViewNovelTitle.horizon" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="金庸" android:layout_marginTop="2dp"
android:textColor="#212121" /> android:orientation="horizontal">
<TextView
android:id="@+id/category3"
style="@style/TextViewNovelType" />
<TextView
android:id="@+id/author3"
style="@style/TextViewNovelAuthor" />
</LinearLayout>
<TextView <TextView
android:id="@+id/category3" android:id="@+id/desc3"
android:layout_width="wrap_content" style="@style/TextViewNovelDesc"/>
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="武侠小说"
android:textColor="@color/colorAccent" />
</LinearLayout> </LinearLayout>
<TextView
android:id="@+id/desc3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="武侠小说,武侠小说,著名的金庸作品 "
android:textColor="@color/common_google_signin_btn_text_light"
android:textSize="11sp" />
</LinearLayout> </LinearLayout>
<LinearLayout style="@style/llGraySplit" />
</LinearLayout> </LinearLayout>
<LinearLayout style="@style/llGraySplit" /> <LinearLayout style="@style/llGraySplit" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:background="@drawable/item_selector"> android:background="@drawable/item_selector"
android:visibility="gone"
>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@ -43,6 +43,7 @@
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:id="@+id/tvCateName" android:id="@+id/tvCateName"
style="@style/TextViewCateTitle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="玄幻奇幻"/> android:text="玄幻奇幻"/>

View File

@ -6,13 +6,11 @@
android:gravity="center" android:gravity="center"
android:background="@drawable/item_selector" android:background="@drawable/item_selector"
android:clickable="true" android:clickable="true"
android:layout_marginBottom="5dp" android:layout_marginBottom="10dp"
android:layout_weight="1"> android:layout_weight="1">
<ImageView <ImageView
android:id="@+id/imageView" android:id="@+id/imageView"
style="@style/NovelImage" style="@style/NovelImage.horizon"
android:layout_weight="0"
android:gravity="left|center_vertical"
android:src="@drawable/googleg_standard_color_18" /> android:src="@drawable/googleg_standard_color_18" />
<LinearLayout <LinearLayout
android:orientation="vertical" android:orientation="vertical"
@ -23,13 +21,13 @@
<TextView <TextView
android:id="@+id/title" android:id="@+id/title"
style="@style/TextViewNovelTitle" style="@style/TextViewNovelTitle.horizon"
android:layout_width="wrap_content"
android:text="射雕英雄传" android:text="射雕英雄传"
/> />
<LinearLayout <LinearLayout
android:layout_marginTop="2dp" android:layout_marginTop="2dp"
android:layout_marginLeft="5dp" android:layout_marginLeft="0dp"
android:orientation="horizontal" android:orientation="horizontal"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -50,14 +48,9 @@
</LinearLayout> </LinearLayout>
<TextView <TextView
android:id="@+id/desc" android:id="@+id/desc"
android:layout_margin="5dp" style="@style/TextViewNovelDesc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="11sp"
android:maxLines="2"
android:text=" " android:text=" "
android:textColor="@color/common_google_signin_btn_text_light" /> />
</LinearLayout> </LinearLayout>

View File

@ -7,8 +7,8 @@
<dimen name="activity_horizontal_margin">16dp</dimen> <dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen> <dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="fab_margin">16dp</dimen> <dimen name="fab_margin">16dp</dimen>
<dimen name="app_bar_height">256dp</dimen> <dimen name="app_bar_height">200dp</dimen>
<dimen name="toolbar_action_menu_text" > 15sp</dimen>
<!-- 状态栏电池厚度 --> <!-- 状态栏电池厚度 -->
<dimen name="reading_board_battery_border_width">1dp</dimen> <dimen name="reading_board_battery_border_width">1dp</dimen>
<!-- 书本宽边距 --> <!-- 书本宽边距 -->
@ -38,9 +38,11 @@
<dimen name="appbar_padding_top">8dp</dimen> <dimen name="appbar_padding_top">8dp</dimen>
<dimen name="toolbarPadding">22dp</dimen> <dimen name="toolbarPadding">22dp</dimen>
<!-- 屏幕右侧空出 --> <!-- 屏幕右侧空出 -->
<dimen name="marginRight">5dp</dimen> <dimen name="marginRight">10dp</dimen>
<!-- 屏幕左侧空出 --> <!-- 屏幕左侧空出 -->
<dimen name="marginLeft">5dp</dimen> <dimen name="marginLeft">10dp</dimen>
<!-- 屏幕底部侧空出 -->
<dimen name="marginBottom">5dp</dimen>

View File

@ -77,15 +77,30 @@
</style> </style>
<style name="buttonRightMore" parent="@android:style/Widget.Button"> <style name="buttonRightMore" parent="@android:style/Widget.Button">
<item name="android:layout_width">40dp</item> <item name="android:layout_width">30dp</item>
<item name="android:layout_height">wrap_content</item> <item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">center</item> <item name="android:layout_gravity">center_vertical</item>
<item name="android:layout_weight">0</item> <item name="android:layout_weight">0</item>
<item name="android:gravity">right</item> <item name="android:gravity">right</item>
<item name="android:textColor">@color/grey</item> <item name="android:textColor">@color/grey</item>
<item name="android:textSize">12sp</item>
<item name="android:layout_marginRight">10dp</item>
<item name="android:background">@drawable/item_selector</item> <item name="android:background">@drawable/item_selector</item>
<item name="android:text">更多</item>
</style> </style>
<style name="tvRightMore" >
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">center_vertical</item>
<item name="android:layout_weight">0</item>
<item name="android:gravity">right</item>
<item name="android:textColor">@color/grey</item>
<item name="android:textSize">12sp</item>
<item name="android:layout_marginRight">10dp</item>
</style>
<style name="buttonCates" parent="@android:style/Widget.Button"> <style name="buttonCates" parent="@android:style/Widget.Button">
<item name="android:layout_width">match_parent</item> <item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item> <item name="android:layout_height">wrap_content</item>
@ -102,7 +117,7 @@
<style name="llGraySplit"> <style name="llGraySplit">
<item name="android:layout_width">match_parent</item> <item name="android:layout_width">match_parent</item>
<item name="android:layout_height">5dp</item> <item name="android:layout_height">5dp</item>
<item name="android:background">@color/ghostwhite</item> <item name="android:background">@color/whitesmoke</item>
</style> </style>
@ -123,7 +138,7 @@
<item name="android:layout_width">match_parent</item> <item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item> <item name="android:layout_height">wrap_content</item>
<item name="android:textColor">@color/lightgray</item> <item name="android:textColor">@color/common_google_signin_btn_text_light</item>
<item name="android:textSize">15sp</item> <item name="android:textSize">15sp</item>
</style> </style>
@ -137,10 +152,13 @@
<item name="android:layout_width">80dp</item> <item name="android:layout_width">80dp</item>
<item name="android:layout_height">100dp</item> <item name="android:layout_height">100dp</item>
<item name="android:layout_weight">1</item> <item name="android:layout_weight">1</item>
<item name="android:gravity">center</item> <item name="android:layout_gravity">center</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:scaleType">fitStart</item> <item name="android:scaleType">fitStart</item>
</style>
<style name="NovelImage.horizon">
<item name="android:layout_weight">0</item>
<!--item name="android:gravity">left|center_vertical</item -->
</style> </style>
<style name="llGallary"> <style name="llGallary">
<item name="android:orientation">vertical</item> <item name="android:orientation">vertical</item>
@ -187,6 +205,9 @@
<item name="android:layout_height">match_parent</item> <item name="android:layout_height">match_parent</item>
<item name="android:layout_marginRight">@dimen/marginRight</item> <item name="android:layout_marginRight">@dimen/marginRight</item>
<item name="android:layout_marginLeft">@dimen/marginLeft</item> <item name="android:layout_marginLeft">@dimen/marginLeft</item>
<item name="android:layout_marginBottom">@dimen/marginLeft</item>
</style> </style>
<!-- activity barlayout --> <!-- activity barlayout -->
<style name="barLayout"> <style name="barLayout">
@ -263,10 +284,13 @@
</style> </style>
<style name="TextViewNovelTitle"> <style name="TextViewNovelTitle">
<item name="android:layout_marginLeft">0dp</item>
<item name="android:textColor">#212121</item> <item name="android:textColor">#212121</item>
<item name="android:layout_height">25dp</item> <item name="android:layout_height">25dp</item>
<item name="android:layout_gravity">left</item> <item name="android:layout_gravity">left</item>
<item name="android:layout_width">wrap_content</item> <item name="android:layout_width">wrap_content</item>
<item name="android:lines">1</item>
<item name="android:ellipsize">end</item>
</style> </style>
@ -280,12 +304,86 @@
</style> </style>
<style name="TextViewNovelType"> <style name="TextViewNovelType">
<item name="android:layout_marginLeft">5dp</item> <item name="android:layout_marginLeft">10dp</item>
<item name="android:textColor">@color/colorAccent</item> <item name="android:textColor">@color/colorAccent</item>
<item name="android:textSize">12sp</item> <item name="android:textSize">12sp</item>
<item name="android:layout_width">wrap_content</item> <item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item> <item name="android:layout_height">wrap_content</item>
<item name="android:lines">1</item>
</style>
<style name="TextViewNovelDesc">
<item name="android:layout_margin">10dp</item>
<item name="android:textColor">@color/common_google_signin_btn_text_light</item>
<item name="android:textSize">12sp</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:lines">2</item>
<item name="android:gravity">center</item>
<item name="android:ellipsize">end</item>
</style>
<style name="TextViewNovelDesc.head">
<item name="android:layout_margin">10dp</item>
<item name="android:textColor">@color/white</item>
<item name="android:textSize">14sp</item>
</style>
<!-- item name="android:background">@color/colorAccent</item -->
<style name="NovelBlockHead">
<item name="android:paddingBottom">2dp</item>
<item name="android:paddingTop">2dp</item>
<item name="android:gravity">center_vertical</item>
<item name="android:textSize">5sp</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">30dp</item>
<item name="android:orientation">horizontal</item>
</style> </style>
<style name="NovelBlockImg">
<item name="android:layout_gravity">left|center_vertical</item>
<item name="android:layout_width">10dp</item>
<item name="android:layout_height">10dp</item>
</style>
<style name="NovelBlockTitle">
<item name="android:layout_marginLeft">4dp</item>
<item name="android:layout_gravity">left|center_vertical</item>
<item name="android:textColor">#212121</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">20dp</item>
<item name="android:layout_weight">1</item>
</style>
<style name="llOutside.vertical">
<item name="android:orientation">vertical </item>
</style>
<style name="TextViewNovelTitle.horizon">
<item name="android:layout_marginLeft">10dp</item>
</style>
<style name="TextViewCateTitle">
<item name="android:textColor">#212121</item>
<item name="android:lines">1</item>
<item name="android:ellipsize">end</item>
</style>
<style name="TextViewNovelTitle.horizon.bold">
<item name="android:textSize">16sp</item>
<item name="android:textStyle">bold</item>
<item name="android:layout_height">20dp</item>
</style>
<style name="ToolbarTheme" parent="AppTheme.AppBarOverlay">
<item name="android:textSize">@dimen/toolbar_action_menu_text</item> <!--字体大小-->
</style>
<style name="TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
<item name="android:textSize">16sp</item>
</style>
</resources> </resources>

View File

@ -125,22 +125,24 @@
<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: com.android.support:design:28.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:glide:4.6.1@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: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: 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: 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" 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.core:runtime:1.1.1@aar" level="project" />
<orderEntry type="library" name="Gradle: org.xutils:xutils:3.5.0@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" 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: 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" 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.squareup.okio:okio:1.17.2@jar" 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" />
@ -157,7 +159,6 @@
<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: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" scope="TEST" name="Gradle: com.android.support.test:monitor:1.0.2@aar" level="project" />
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:disklrucache:4.6.1@jar" 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: io.alterac.blurkit:blurkit:1.1.1@aar" level="project" />
@ -184,14 +185,15 @@
<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.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.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.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:asynclayoutinflater:28.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:annotations:4.6.1@jar" 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.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" 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: 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" />
@ -205,7 +207,6 @@
<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: android.arch.lifecycle:common:1.1.1@jar" level="project" />
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:gifdecoder:4.6.1@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: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: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" />