<h1 align="center">基于Android的小巫新闻客户端开发--主界面业务逻辑实现</h1>
<p><span style="font-family:'FangSong_GB2312';font-size:14px;">上一篇介绍了主界面的UI设计,现在直接进入主题,业务逻辑的实现,由于项目的开发总是在不断的完善的,最初实现的效果,总会随项目的进度而做出相应的改变,小巫也不可能从新开发整个客户端,然后再一步一步记录,那没有必要,学习东西,只需要知道关键点在哪里就行了,关于细节方面,遇到再去解决。就是这么简单。</span></p>
<p><span style="font-family:'FangSong_GB2312';font-size:14px;"></span></p>
<p><span style="font-family:'FangSong_GB2312';font-size:14px;">主界面的最终实现效果如下;</span></p>
<p><span style="font-family:'FangSong_GB2312';font-size:14px;"> <img alt="" height="458" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-a0ebf68c3302cab4c0e82f9252ae5339.png" width="300"></span></p>
<p><span style="font-family:'FangSong_GB2312';font-size:14px;"></span></p>
<p><span style="font-family:'FangSong_GB2312';font-size:14px;">下面是MainActivity.java的代码</span></p>
<pre class="blockcode"><code class="language-java">package com.xiaowu.news;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.GridView;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.xiaowu.news.custom.ConstomSimpleAdapter;
import com.xiaowu.news.model.Category;
import com.xiaowu.news.service.SyncHttp;
import com.xiaowu.news.update.UpdateManager;
import com.xiaowu.news.util.DensityUtil;
import com.xiaowu.news.util.StringUtil;
/**
*
* @author wwj
*
*/
public class MainActivity extends Activity {
private final int COLUMNWIDTH_PX = 56; // GridView每个单元格的宽度(像素)
private final int FLINGVELOCITY_PX = 800; // ViewFilper滑动的距离(像素)
private final int NEWSCOUNT = 5; // 显示新闻的条数
private final int SUCCESS = 0; // 加载新闻成功
private final int NONEWS = 1; // 没有新闻
private final int NOMORENEWS = 2; // 没有更多新闻
private final int LOADERROR = 3; // 加载失败
private long exitTime; //按返回键退出的时间
private int mColumnWidth_dip;
private int mFlingVelocity_dip;
private int mCid; // 新闻编号
private String mCategoryTitle; // 新闻分类标题
private ListView mNewslist; // 新闻列表
private SimpleAdapter mNewslistAdapter; // 为新闻内容提供需要显示的列表
private ArrayList<HashMap<String, Object>> mNewsData; // 存储新闻信息的数据集合
private LayoutInflater mInflater; // 用来动态载入没有loadmore_layout界面
private Button category_Button = null; // 新闻分类标题栏的向右查看的按钮
private HorizontalScrollView categoryScrollView = null;// 水平滚动图
private Button mTitleBarRefresh; // 标题栏的刷新按钮
private ProgressBar mTitleBarProgress; // 进度条
private Button mLoadmoreButton; // 加载更多按钮
private LoadNewsAsyncTack mLoadNewsAsyncTack; // 声明LoadNewsAsyncTack引用
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.news_home_layout);
//通过id来获取按钮的引用
mTitleBarRefresh = (Button) findViewById(R.id.titlebar_refresh);
mTitleBarProgress = (ProgressBar) findViewById(R.id.titlebar_progress);
mTitleBarRefresh.setOnClickListener(loadmoreListener);
// 将px转换为dip
mColumnWidth_dip = DensityUtil.px2dip(this, COLUMNWIDTH_PX);
mFlingVelocity_dip = DensityUtil.px2dip(this, FLINGVELOCITY_PX);
//初始化新闻分类的编号
mCid = 1;
mCategoryTitle = "焦点";
mInflater = getLayoutInflater();
//存储新闻信息的数据集合
mNewsData = new ArrayList<HashMap<String, Object>>();
// 获取数组资源
String[] categoryArray = getResources().getStringArray(
R.array.categories);
// 定义一个List数组,用来存放HashMap对象
final List<HashMap<String, Category>> categories = new ArrayList<HashMap<String, Category>>();
// 分割新闻字符串
for (int i = 0; i < categoryArray.length; i++) {
String temp[] = categoryArray[i].split("[|]");
if ( |
|