发现写的东西都木有人看啊~我这就叫做自娱自乐吧,哈哈~没关系~今天讲简介页,简介页算是所有页面里最简单的了,只要把单本书的信息分解展示就ok了~先上一张简介页的截图~
仍然先来谈布局,布局大块分两部分,上面的标题栏,和下面的内容,内容是一个scrollview,scrollview中分为基本信息 功能按钮 简介三个部分,整个布局相对比较简单,没有什么可说的,先上布局文件。
这里要说下,我的布局风格是css3的盒子模型风格,简单来说是将大盒子变成小盒子,化繁为简,有android工程师曾经问我为什么有的布局用相对布局一下就能搞定,我非要垂直水平不同的linearlayout切分,我从不觉得他们说的没有道理,但对于我自己的风格我依然保持,起码保持风格会让我在调试我的布局文件时一下子就抓到问题的关键,而不用不断尝试微调试探。如果您是一个成熟的android工程师,有更简单的布局风格,同样欢迎分享,如果您是初学者,那不妨百度下css3的知识,相信学多点知识总是好的!
从截图上大致可以看出 除功能按钮外,其他的内容都包含在bookbean的成员中,故,这个页面我们需要持有一个BookBean对象,我们用nid作为一本书的唯一标示,用DateProvider的getBookBeanByNid方法可以从网络得到一个bookbean对象, 通过此bookbean对象 就可以组装整个页面的信息,而 对于功能按钮 在线阅读会链接到阅读页,目录按钮会链接到目录页,全本下载会启动下载服务,加入书架会调用书架系统将当前书加入书架。四个功能都对应不同的模块 而我们之前讲过书架系统的工具类,调用哪个工具类 就可以为书架添加一本书,其他的模块以后会慢慢讲到。其中最复杂的要数阅读页,所以阅读页我会最后再讲,先把其他的都串联好,最后才会到阅读页。
下面是简介页的activity类,比较简单。就不细说了,有问题留言我!
package com.prince.gagareader;
import java.io.IOException;
import org.json.JSONException;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.prince.gagareader.bean.BookBean;
import com.prince.gagareader.services.DownLoadService;
import com.prince.gagareader.util.DateProvider;
import com.prince.gagareader.util.ImageUtil;
import com.prince.gagareader.util.ImageUtil.OnPreparedImageListenner;
import com.prince.gagareader.util.SharedPreferencesUtil;
import com.umeng.analytics.MobclickAgent;
public class BookDetailActivity extends Activity{
private Handler handler;
private String nid;
private BookBean bookBean;
private LinearLayout bottomLinear;
private ImageView bookshow;
private TextView novel_name;
private TextView novel_author;
private TextView novel_state;
private Button readbtn;
private Button indexbtn;
private Button downLoadbtn;
private Button putShelfbtn;
private Button backButton;
private TextView description;
private TextView novel_lastnew;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.detail);
initHandler();
initData();
initView();
addListenner();
}
private void initHandler(){
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1://数据加载完成 显示
bottomLinear.setVisibility(View.GONE);
preparedPage();
break;
case 2:
Drawable bitmap = (Drawable)msg.obj;
bookshow.setBackgroundDrawable(bitmap);
break;
default:
break;
}
}
};
}
private void preparedPage(){
novel_name.setText(bookBean.getNovelName());
novel_author.setText("作者:"+bookBean.getAuthor());
novel_state.setText("状态:"+(bookBean.getState()==0?"连载":"完结"));
description.setText(bookBean.getDes());
novel_lastnew.setText("最新章节:"+bookBean.getLastChapter());
ImageUtil iu = ImageUtil.getInstance();
final String imgurl = bookBean.getFengmianUrl();
iu.preparedImage(imgurl,new OnPreparedImageListenner() {
@Override
public void onPrepared(Drawable bitmap) {
sendMsgBean(2, bitmap);
}
});
}
private void initData(){
Intent intent=getIntent();
nid = intent.getStringExtra("nid");
if(nid==null)nid="0dbe15224f0324a86d527972466e3adc";
handler.postDelayed(new Runnable() {
@Override
public void run() {
try {
bookBean = DateProvider.getInstance().getBookBeanByNid(nid);
sendMsgBean(1);
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
},20);
}
private void initView(){
bottomLinear = (LinearLayout)findViewById(R.id.bottom_linear);
bookshow = (ImageView)findViewById(R.id.bookshow);
readbtn = (Button)findViewById(R.id.online_read);
indexbtn = (Button)findViewById(R.id.index_btn);
downLoadbtn = (Button)findViewById(R.id.download_btn);
putShelfbtn = (Button)findViewById(R.id.put_shelf_btn);
novel_name = (TextView)findViewById(R.id.novel_name);
novel_author = (TextView)findViewById(R.id.novel_author);
novel_state = (TextView)findViewById(R.id.novel_state);
description = (TextView)findViewById(R.id.des);
novel_lastnew = (TextView)findViewById(R.id.novel_lastnew);
backButton = (Button)findViewById(R.id.btn_leftTop);
}
private void addListenner(){
putShelfbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferencesUtil su = SharedPreferencesUtil.getInstance();
BookBean bookBeanDB = su.getBookBeanByNid(nid, BookDetailActivity.this);
if(bookBeanDB==null){
su.addBookBean(bookBean, BookDetailActivity.this);
}else{
su.addBookBean(bookBeanDB, BookDetailActivity.this);
}
}
});
indexbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(BookDetailActivity.this,
MuluActivity.class);
String nid = bookBean.getNid();
String name = bookBean.getNovelName();
intent.putExtra("nid", nid);
SharedPreferencesUtil su = SharedPreferencesUtil.getInstance();
BookBean bookDB = su.getBookBeanByNid(nid, BookDetailActivity.this);
if(bookDB!=null){
int cid = bookDB.getCurrentCount();
intent.putExtra("cid", cid);
}
intent.putExtra("novelName", name);
startActivity(intent);
}
});
downLoadbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(BookDetailActivity.this, DownLoadService.class);
intent.putExtra("nid", nid);
intent.putExtra("novelName", bookBean.getNovelName());
SharedPreferencesUtil su = SharedPreferencesUtil.getInstance();
BookBean bookBeanDB = su.getBookBeanByNid(nid, BookDetailActivity.this);
if(bookBeanDB==null){
su.addBookBean(bookBean, BookDetailActivity.this);
}else{
su.addBookBean(bookBeanDB, BookDetailActivity.this);
}
startService(intent);
}
});
readbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(BookDetailActivity.this,
ReaderActivity.class);
intent.putExtra("nid", nid);
SharedPreferencesUtil su = SharedPreferencesUtil.getInstance();
BookBean bookDB = su.getBookBeanByNid(nid, BookDetailActivity.this);
if(bookDB!=null){
int cid = bookDB.getCurrentCount();
intent.putExtra("currentChapter", ""+cid);
}else{
intent.putExtra("currentChapter", "1");
}
startActivity(intent);
}
});
backButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
BookDetailActivity.this.finish();
}
});
}
private void sendMsgBean(int msgWhat){
Message message = new Message();
message.what = msgWhat;
handler.sendMessage(message);
}
private void sendMsgBean(int msgWhat,Drawable bitmap){
Message message = new Message();
message.what = msgWhat;
message.obj=bitmap;
handler.sendMessage(message);
}
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
}
今天文章略轻松啊!哈哈,下一篇目录页+下载模块! 目录页依然简单, 下载嘛 复杂一点点~