基于Android的小巫新闻客户端开发--主界面业务逻辑实现

论坛 期权论坛     
选择匿名的用户   2021-5-28 02:11   0   0
<h1 align="center">基于Android的小巫新闻客户端开发--主界面业务逻辑实现</h1>
<p><span style="font-family:&#39;FangSong_GB2312&#39;;font-size:14px;">上一篇介绍了主界面的UI设计,现在直接进入主题,业务逻辑的实现,由于项目的开发总是在不断的完善的,最初实现的效果,总会随项目的进度而做出相应的改变,小巫也不可能从新开发整个客户端,然后再一步一步记录,那没有必要,学习东西,只需要知道关键点在哪里就行了,关于细节方面,遇到再去解决。就是这么简单。</span></p>
<p><span style="font-family:&#39;FangSong_GB2312&#39;;font-size:14px;"></span></p>
<p><span style="font-family:&#39;FangSong_GB2312&#39;;font-size:14px;">主界面的最终实现效果如下;</span></p>
<p><span style="font-family:&#39;FangSong_GB2312&#39;;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:&#39;FangSong_GB2312&#39;;font-size:14px;"></span></p>
<p><span style="font-family:&#39;FangSong_GB2312&#39;;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;

/**
*
* &#64;author wwj
*
*/
public class MainActivity extends Activity {

private final int COLUMNWIDTH_PX &#61; 56;     // GridView每个单元格的宽度(像素)
private final int FLINGVELOCITY_PX &#61; 800;    // ViewFilper滑动的距离(像素)
private final int NEWSCOUNT &#61; 5;      // 显示新闻的条数
private final int SUCCESS &#61; 0;      // 加载新闻成功
private final int NONEWS &#61; 1;      // 没有新闻
private final int NOMORENEWS &#61; 2;     // 没有更多新闻
private final int LOADERROR &#61; 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&lt;HashMap&lt;String, Object&gt;&gt; mNewsData; // 存储新闻信息的数据集合
private LayoutInflater mInflater;      // 用来动态载入没有loadmore_layout界面

private Button category_Button &#61; null;    // 新闻分类标题栏的向右查看的按钮

private HorizontalScrollView categoryScrollView &#61; null;// 水平滚动图

private Button mTitleBarRefresh;     // 标题栏的刷新按钮
private ProgressBar mTitleBarProgress;    // 进度条
private Button mLoadmoreButton;      // 加载更多按钮

private LoadNewsAsyncTack mLoadNewsAsyncTack;  // 声明LoadNewsAsyncTack引用


&#64;Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.news_home_layout);
  
  //通过id来获取按钮的引用
  mTitleBarRefresh &#61; (Button) findViewById(R.id.titlebar_refresh);
  mTitleBarProgress &#61; (ProgressBar) findViewById(R.id.titlebar_progress);
  
  mTitleBarRefresh.setOnClickListener(loadmoreListener);
  // 将px转换为dip
  mColumnWidth_dip &#61; DensityUtil.px2dip(this, COLUMNWIDTH_PX);
  mFlingVelocity_dip &#61; DensityUtil.px2dip(this, FLINGVELOCITY_PX);
  //初始化新闻分类的编号
  mCid &#61; 1;
  mCategoryTitle &#61; &#34;焦点&#34;;
  mInflater &#61; getLayoutInflater();
  //存储新闻信息的数据集合
  mNewsData &#61; new ArrayList&lt;HashMap&lt;String, Object&gt;&gt;();
  // 获取数组资源
  String[] categoryArray &#61; getResources().getStringArray(
    R.array.categories);

  // 定义一个List数组,用来存放HashMap对象
  final List&lt;HashMap&lt;String, Category&gt;&gt; categories &#61; new ArrayList&lt;HashMap&lt;String, Category&gt;&gt;();
  // 分割新闻字符串
  for (int i &#61; 0; i &lt; categoryArray.length; i&#43;&#43;) {
   String temp[] &#61; categoryArray[i].split(&#34;[|]&#34;);
   if (
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP