亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

基于PHP后臺的Android新聞瀏覽客戶端

2024-05-04 23:46:23
字體:
來源:轉載
供稿:網友
這篇文章主要為大家詳細介紹了基于PHP后臺的Android新聞瀏覽客戶端,具有一定的參考價值,感興趣的小伙伴們可以參考一下
 

本文實例為大家分享了Android新聞瀏覽客戶端,基于php后臺,供大家參考,具體內容如下

1、使用HBuilder進行PHP環境配置,測試是否可以查詢MySQL語句,之前都已經詳細說明過了。

2、此處php后臺實現mysql的查詢功能,并以JSON數據格式返回個客戶端

在PHP此處建立一個mysql_connect.php文件,實現數據庫的連接,并設置字符集格式。

<?php$con = mysql_connect("localhost","root","123456");//設置字符集為UTF-8 可解決中文亂碼mysql_query("SET NAMES 'utf8'");mysql_query("SET CHARACTER SET utf8");mysql_query("SET CHARACTER_SET_RESULT=utf8");if(!$con){die(mysql_error());}mysql_select_db("newsdemo",$con);?>

然后新建一個getNewsJSON.php文件用于進行將查詢結果轉換成JSON字符串格式。只需要 json_encode這個方法即可。

<?php/*獲得JSON數據 * 返回值:title desc time content_url pic_url*/   require 'mysql_connect.php';$n = 0;$result = mysql_query("select * from news");while($row = mysql_fetch_array($result)){$arr[$n++] = array("title"=>$row['title'],"desc"=>$row['desc'],"time"=>$row['time'],"content_url"=>$row['content_url'],"pic_url"=>$row['pic_url']);}//數組轉化為JSON字符串echo json_encode($arr);?>

重點在于Android端的設計開發

1、設計界面

由于需要以在ListView的每個Item中設置相同的格式,所以此處運用ListView+Adapter的形式

在主界面LinearLayout中添加一個ListView控件

2、Mainactivity程序如下:

 

public class MainActivity extends Activity implements OnItemClickListener{  private ListView lvNews ;  private NewsAdapter adapter ;  //定義集合  private List<News> newsList ;    //獲取json字符串的URL地址  public static final String GET_NEWS_URL = "http://211.87.234.20/NewsDemo/getNewsJSON.php";  //獲取msg之后如何處理  private Handler getNewsHandler = new Handler(){  public void handleMessage(android.os.Message msg){  String jsonData = (String) msg.obj ;  System.out.println(jsonData) ;  try {JSONArray jsonArray = new JSONArray(jsonData) ;for(int i=0;i<jsonArray.length();i++){JSONObject object = jsonArray.getJSONObject(i) ;String    } ;  } ;    @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState) ;    setContentView(R.layout.activity_main) ;        lvNews = (ListView) findViewById(R.id.lvNews) ;    //初始化    newsList = new ArrayList<News>();      adapter = new NewsAdapter(this,newsList) ;    lvNews.setAdapter(adapter) ;    lvNews.setOnItemClickListener(this) ;        HttpUtils.getNewsJSON(GET_NEWS_URL,getNewsHandler) ;  }  @Override  public boolean onCreateOptionsMenu(Menu menu) {    // Inflate the menu; this adds items to the action bar if it is present.    getMenuInflater().inflate(R.menu.main, menu);    return true;  }@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {// TODO Auto-generated method stubNews news = newsList.get(position) ;Intent intent = new Intent(this,BrowseNewsActivity.class) ;intent.putExtra("content_url",news.getContent_url()) ;startActivity(intent) ;}  }

此處需要一個工具類HttpUtils以及自定義的NewsAdapter以實現item的視圖顯示.

HttpUtils代碼如下:

package com.MR.news.utils;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Handler;import android.os.Message;import android.widget.ImageView;public class HttpUtils {//工具類直接定義成靜態方法即可/*url用于內部類中,所以要將其設定為final類型*//*讀取完成需要通知主線程,需要使用handler*/public static void getNewsJSON(final String url,final Handler handler){//訪問網絡,時間長,開啟新線程new Thread(new Runnable(){@Overridepublic void run() {// TODO Auto-generated method stubHttpURLConnection conn ;InputStream is ;try {conn = (HttpURLConnection) new URL(url).openConnection() ;//GET方式獲取conn.setRequestMethod("GET") ;//得到輸入流is=conn.getInputStream() ;//讀取數據用緩沖,里面要傳入一個readerBufferedReader reader = new BufferedReader(new InputStreamReader(is));//一行一行讀取數據String line = "";//沒讀完一行進行拼接,高效StringBuilder result = new StringBuilder();while((line = reader.readLine()) != null){result.append(line);}Message msg = new Message() ;//msg.obj可以放進去任何對象msg.obj = result.toString() ;handler.sendMessage(msg) ;} catch (Exception e) {e.printStackTrace();}}}).start() ;}public static void setPicBitMap(final ImageView ivPic,final String pic_url){new Thread(new Runnable(){@Overridepublic void run() {// TODO Auto-generated method stubtry {HttpURLConnection conn = (HttpURLConnection) new URL(pic_url).openConnection() ;conn.connect() ;InputStream is = conn.getInputStream() ;//bitmap就是所需圖片資源/*從資源文件中的到圖片*/Bitmap bitmap = BitmapFactory.decodeStream(is) ;ivPic.setImageBitmap(bitmap) ;is.close() ;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} }}).start() ;}}

NewsAdapter代碼如下:

package com.MR.news.adapter;import java.util.List;import com.MR.news.R;import com.MR.news.model.News;import com.MR.news.utils.HttpUtils;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class NewsAdapter extends BaseAdapter {//聲明上下文對象,后面的getView方法需要private Context context;private List<News> newsList;public NewsAdapter(Context context, List<News> newsList){this.context = context ;this.newsList = newsList ;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn newsList.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn newsList.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup arg2) {// TODO Auto-generated method stubif(convertView == null){convertView = LayoutInflater.from(context).inflate(R.layout.news_item,null) ;}TextView tvTitle = (TextView) convertView.findViewById(R.id.tvTitle) ;TextView tvDesc = (TextView) convertView.findViewById(R.id.tvDesc) ;TextView tvTime = (TextView) convertView.findViewById(R.id.tvTime) ;ImageView ivPic = (ImageView) convertView.findViewById(R.id.ivPic);News news = newsList.get(position) ;tvTitle.setText(news.getTitle()) ;tvDesc.setText(news.getDesc()) ;tvTime.setText(news.getTime()) ;String pic_url = news.getPic_url() ;HttpUtils.setPicBitMap(ivPic, pic_url) ;return convertView;}}

news_item用來設置每個item的顯示格式

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent" >    <ImageView     android:id="@+id/ivPic"    android:layout_width="42dp"    android:layout_height="42dp"    android:src="@drawable/ic_launcher"    />  <TextView    android:id="@+id/tvTitle"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_alignParentTop="true"    android:layout_toRightOf="@+id/ivPic"    android:text="title"    android:textSize="18sp" />  <TextView    android:id="@+id/tvDesc"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_alignLeft="@+id/tvTitle"    android:layout_below="@+id/tvTitle"    android:text="desc"    android:textSize="18sp" />  <TextView    android:id="@+id/tvTime"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_alignParentRight="true"    android:text="time"    android:textSize="10sp"    /></RelativeLayout>

注意:此item中需要顯示單個圖片,所以用到Bitmap這個類。由于用到網絡傳輸,所以需要用到線程這個概念!!

關鍵理解handler message以及loop這三者的關系。

以上就是本文的全部內容,希望對大家學習Android軟件編程有所幫助。



注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产日韩一区| 狠狠色狠狠色综合日日小说| 亚洲精品成人免费| 国产精品丝袜久久久久久不卡| 成人激情视频在线观看| 97av视频在线| 日韩福利伦理影院免费| 欧美激情第99页| 日韩视频永久免费观看| 亚洲日韩欧美视频| 岛国av午夜精品| 亚洲精品网站在线播放gif| 免费91麻豆精品国产自产在线观看| 性欧美激情精品| 精品亚洲国产视频| 欧美激情亚洲国产| 黑人巨大精品欧美一区二区| 欧美日韩亚洲网| 久久久久久久久久久av| 国产欧美一区二区三区久久人妖| 亚洲图片在线综合| 中文在线不卡视频| 亚洲日本欧美中文幕| 91在线免费视频| 久久精品2019中文字幕| 亚洲欧美激情精品一区二区| 欧美激情视频网站| 午夜精品一区二区三区视频免费看| 91黑丝在线观看| 91精品视频免费| 亚洲电影中文字幕| 91免费国产网站| 91社区国产高清| 亚洲成人教育av| 性欧美长视频免费观看不卡| 92看片淫黄大片欧美看国产片| 精品国模在线视频| 日韩在线不卡视频| 色婷婷综合久久久久中文字幕1| 亚洲韩国日本中文字幕| 97国产suv精品一区二区62| 国产综合视频在线观看| 丝袜情趣国产精品| 在线播放国产精品| 精品中文字幕在线| 亚洲三级黄色在线观看| 亚洲跨种族黑人xxx| 最近2019好看的中文字幕免费| 亚洲精品久久久久中文字幕欢迎你| 久久精品免费播放| 国产一级揄自揄精品视频| 国产精品国产三级国产aⅴ浪潮| 在线亚洲午夜片av大片| 97av在线影院| 视频在线一区二区| 日韩电影中文字幕在线观看| 欧洲中文字幕国产精品| 国产91精品青草社区| 2019中文字幕在线| 日韩不卡中文字幕| 久久国产精品亚洲| 亚洲成人黄色在线观看| 成人激情视频在线播放| 成人精品在线视频| 亚洲成成品网站| 亚洲精品国产品国语在线| 日韩成人性视频| 欧美精品久久久久| 黑人巨大精品欧美一区二区一视频| 亚洲精品videossex少妇| 一个人看的www久久| 欧美亚洲激情视频| 欧美视频在线观看 亚洲欧| 日韩中文字幕精品视频| 日韩在线播放一区| 亚洲福利在线播放| 日韩欧美国产成人| 日本一区二三区好的精华液| 一区二区三区四区在线观看视频| 国产婷婷97碰碰久久人人蜜臀| 亚洲高清一二三区| 亚洲成av人影院在线观看| 夜夜嗨av一区二区三区四区| 欧美视频国产精品| 欧美大片大片在线播放| 中文字幕精品国产| 日韩亚洲欧美中文高清在线| 亚洲一区二区三区香蕉| 欧美国产日韩在线| 精品丝袜一区二区三区| 国产精品色午夜在线观看| 欧美精品18videos性欧| 久久精品免费电影| 情事1991在线| 精品香蕉在线观看视频一| 九九精品在线播放| 亚洲国内高清视频| 亚洲女人天堂色在线7777| 国产乱人伦真实精品视频| 精品国产区一区二区三区在线观看| 亚洲欧美国产日韩中文字幕| 日韩亚洲欧美中文在线| 欧美激情久久久久| 国产在线视频一区| 琪琪第一精品导航| 成人免费视频在线观看超级碰| 久久精品久久久久电影| 国模私拍一区二区三区| 欧美整片在线观看| 日产精品99久久久久久| 久久国产精品免费视频| 中文字幕精品久久| 九九热这里只有精品免费看| 久久精品成人欧美大片| 国产成人涩涩涩视频在线观看| 亚洲最大的免费| 久久97久久97精品免视看| 日本精品久久中文字幕佐佐木| 亚洲精品综合精品自拍| 欧美高清视频在线观看| 精品露脸国产偷人在视频| 日韩精品在线免费观看视频| 亚洲欧美精品伊人久久| 国内精品久久久久影院 日本资源| 日韩精品在线免费观看视频| 亚洲成人动漫在线播放| 美日韩在线视频| 亚洲精品乱码久久久久久按摩观| 91欧美日韩一区| 日本sm极度另类视频| 日韩成人av在线| 一区二区在线视频播放| 久久久噜久噜久久综合| 欧美日韩爱爱视频| 国内精品免费午夜毛片| 午夜精品久久久久久久男人的天堂| 国产狼人综合免费视频| 欧美久久精品午夜青青大伊人| 国产视频丨精品|在线观看| 91视频国产一区| 91精品国产自产在线| 久久久精品在线观看| 国产精品美女av| 亚洲国产精品va在线观看黑人| 91在线高清免费观看| 91综合免费在线| 韩国国内大量揄拍精品视频| 久久久精品免费视频| 黑人巨大精品欧美一区二区免费| 亚洲国产另类 国产精品国产免费| 在线看片第一页欧美| 欧美精品免费在线观看| 午夜精品久久久久久99热软件| 亚洲乱码国产乱码精品精| 疯狂蹂躏欧美一区二区精品| 亚洲毛片在线观看.| 欧美精品在线免费播放| 国产高清在线不卡| 国产精品视频资源| 久久av中文字幕| 日韩一级裸体免费视频| 日韩视频在线免费| 欧美亚洲国产日本| 欧美人在线视频|