今日头条
来源:互联网 发布:新媒体运营网络课程 编辑:程序博客网 时间:2024/04/28 02:12
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.Settings;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import com.example.a02_httpurlconnnection_newstop_03.adapter.MyAdapter;
import com.example.a02_httpurlconnnection_newstop_03.bean.DataBean;
import com.example.a02_httpurlconnnection_newstop_03.bean.DataResultBean;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ListView listView;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
//接收数据...设置适配器
if (msg.what == 0){
DataBean dataBean = (DataBean) msg.obj;
list = dataBean.getResult().getData();
//设置适配器
MyAdapter myAdapter = new MyAdapter(list, MainActivity.this);
listView.setAdapter(myAdapter);
}
}
};
private List<DataResultBean> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.list_view);
//条目的点击事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//传值过去...url路径
if (list != null){
Intent intent = new Intent(MainActivity.this,WebActivity.class);
intent.putExtra("url",list.get(i).getUrl());
startActivity(intent);
}
}
});
}
public void getTop(View view){
//点击获取网络数据之前,判断一下网络是否可用...不可用,设置
if (isNetConnected()){
getNetData();
}else {
//对话框
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("警告");
builder.setMessage("网络不可用,是否设置?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//Settings.ACTION_WIRELESS_SETTINGS
//Settings.ACTION_WIFI_SETTINGS
Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
startActivity(intent);
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
builder.show();
}
}
/**
* 判断网络是否可用
*
* boolean
*/
private boolean isNetConnected(){
//1.获取一个连接管理对象
ConnectivityManager manager = (ConnectivityManager) MainActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE);
//2.获取网络连接的信息
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if (networkInfo != null){
//返回值就代表网络是否可用
return networkInfo.isAvailable();
}
return false;
}
/**
* 获取头条的数据
*/
private void getNetData() {
new Thread(){
@Override
public void run() {
//头条服务器地址
String path = "http://v.juhe.cn/toutiao/index";
try {
URL url = new URL(path);
//打开连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置
connection.setRequestMethod("POST");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
//post方式要提交参数给服务器...以流的方式提交给服务器
connection.setDoOutput(true);
//设置请求参数的类型
connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
String params = "type=top&key=597b4f9dcb50e051fd725a9ec54d6653";
//参数以流的形式写给服务器...字节数组的形式写出去
connection.getOutputStream().write(params.getBytes());
//响应
int responseCode = connection.getResponseCode();
if (responseCode == 200){
//获取输入字节流
InputStream inputStream = connection.getInputStream();
String json = streamToString(inputStream,"utf-8");
Log.i("json",json);
//解析...解析完成之后发送到主线程,设置适配器
Gson gson = new Gson();
DataBean dataBean = gson.fromJson(json, DataBean.class);
//发送出去
Message message = Message.obtain();
message.what = 0;
message.obj = dataBean;
handler.sendMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
private String streamToString(InputStream inputStream,String charset) {
try {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String s = null;
StringBuilder builder = new StringBuilder();
while ((s = bufferedReader.readLine()) != null){
builder.append(s);
}
bufferedReader.close();
return builder.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
package com.example.a02_httpurlconnnection_newstop_03;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_layout);
WebView webView = (WebView) findViewById(R.id.web_view);
Intent intent = getIntent();
String url = intent.getStringExtra("url");
//加载
webView.loadUrl(url);
//设置
webView.setWebViewClient(new WebViewClient());
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
}
}
package com.example.a02_httpurlconnnection_newstop_03.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.a02_httpurlconnnection_newstop_03.R;
import com.example.a02_httpurlconnnection_newstop_03.bean.DataResultBean;
import com.example.a02_httpurlconnnection_newstop_03.util.ImageUtil;
import java.util.List;
public class MyAdapter extends BaseAdapter {
List<DataResultBean> list;
Context context;
public MyAdapter(List<DataResultBean> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder;
if (view == null){
view = View.inflate(context, R.layout.item_layout,null);
holder = new ViewHolder();
holder.img_01 = view.findViewById(R.id.img_01);
holder.img_02 = view.findViewById(R.id.img_02);
holder.img_03 = view.findViewById(R.id.img_03);
holder.text_author = view.findViewById(R.id.text_author);
holder.text_title = view.findViewById(R.id.text_title);
holder.text_time = view.findViewById(R.id.text_time);
view.setTag(holder);
}else {
holder = (ViewHolder) view.getTag();
}
//赋值
holder.text_author.setText(list.get(i).getAuthor_name());
holder.text_title.setText(list.get(i).getTitle());
holder.text_time.setText(list.get(i).getDate());
//图片去加载
new ImageUtil().getImage(list.get(i).getThumbnail_pic_s(),holder.img_01);
new ImageUtil().getImage(list.get(i).getThumbnail_pic_s02(),holder.img_02);
new ImageUtil().getImage(list.get(i).getThumbnail_pic_s03(),holder.img_03);
return view;
}
class ViewHolder{
TextView text_title;
TextView text_author;
TextView text_time;
ImageView img_01;
ImageView img_02;
ImageView img_03;
}
}
package com.example.a02_httpurlconnnection_newstop_03.bean;
public class DataBean {
private int error_code;
private String reason;
private ResultBean result;
public DataBean(int error_code, String reason, ResultBean result) {
this.error_code = error_code;
this.reason = reason;
this.result = result;
}
public int getError_code() {
return error_code;
}
public void setError_code(int error_code) {
this.error_code = error_code;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public ResultBean getResult() {
return result;
}
public void setResult(ResultBean result) {
this.result = result;
}
}
package com.example.a02_httpurlconnnection_newstop_03.bean;
public class DataResultBean {
/**
* "author_name": "高峰军事观察",
"category": "头条",
"date": "2017-08-30 15:00",
"thumbnail_pic_s": "http://00.imgmini.eastday.com/mobile/20170830/20170830_129326f50ef4abd54e97536902dac076_mwpm_03200403.png",
"thumbnail_pic_s02": "http://00.imgmini.eastday.com/mobile/20170830/20170830_94ba2573292b44b48757f573e792afcb_mwpm_03200403.png",
"thumbnail_pic_s03": "http://00.imgmini.eastday.com/mobile/20170830/20170830_059bf1a9ed8ae27bed032e3648f169d1_mwpm_03200403.png",
"title": "土耳其还真翻脸向美联军开火了,报了被美军临阵羞辱的一箭之仇",
"uniquekey": "25c083ff2c73bbb51beec89a37f138ea",
"url": "http://mini.eastday.com/mobile/170830150031866.html"
*/
private String author_name;
private String category;
private String date;
private String thumbnail_pic_s;
private String thumbnail_pic_s02;
private String thumbnail_pic_s03;
private String title;
private String uniquekey;
private String url;
public DataResultBean(String author_name, String category, String date, String thumbnail_pic_s, String thumbnail_pic_s02, String title, String thumbnail_pic_s03, String uniquekey, String url) {
this.author_name = author_name;
this.category = category;
this.date = date;
this.thumbnail_pic_s = thumbnail_pic_s;
this.thumbnail_pic_s02 = thumbnail_pic_s02;
this.title = title;
this.thumbnail_pic_s03 = thumbnail_pic_s03;
this.uniquekey = uniquekey;
this.url = url;
}
public String getAuthor_name() {
return author_name;
}
public void setAuthor_name(String author_name) {
this.author_name = author_name;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getThumbnail_pic_s() {
return thumbnail_pic_s;
}
public void setThumbnail_pic_s(String thumbnail_pic_s) {
this.thumbnail_pic_s = thumbnail_pic_s;
}
public String getThumbnail_pic_s02() {
return thumbnail_pic_s02;
}
public void setThumbnail_pic_s02(String thumbnail_pic_s02) {
this.thumbnail_pic_s02 = thumbnail_pic_s02;
}
public String getThumbnail_pic_s03() {
return thumbnail_pic_s03;
}
public void setThumbnail_pic_s03(String thumbnail_pic_s03) {
this.thumbnail_pic_s03 = thumbnail_pic_s03;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getUniquekey() {
return uniquekey;
}
public void setUniquekey(String uniquekey) {
this.uniquekey = uniquekey;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
package com.example.a02_httpurlconnnection_newstop_03.bean;
import java.util.List;
public class ResultBean {
private List<DataResultBean> data;
public List<DataResultBean> getData() {
return data;
}
public void setData(List<DataResultBean> data) {
this.data = data;
}
public ResultBean(List<DataResultBean> data) {
this.data = data;
}
}
package com.example.a02_httpurlconnnection_newstop_03.util;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.widget.ImageView;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class ImageUtil {
ImageView imageView;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what == 0){
Bitmap bitmap = (Bitmap) msg.obj;
imageView.setImageBitmap(bitmap);
}
}
};
/**
* 给imageView控件加载图片
*/
public void getImage(final String path, ImageView imageView){
this.imageView = imageView;
new Thread(){
@Override
public void run() {
try {
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
//响应的状态码
int responseCode = connection.getResponseCode();
if (responseCode == 200){
InputStream inputStream = connection.getInputStream();
//转为bitmap
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
Message message = Message.obtain();
message.what = 0;
message.obj = bitmap;
handler.sendMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:onClick="getTop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="获取新闻头条" />
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"></ListView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/text_title"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/img_01"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="100dp" />
<ImageView
android:id="@+id/img_02"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="100dp" />
<ImageView
android:id="@+id/img_03"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="100dp" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text_author"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text_time"
/>
</LinearLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.a02_httpurlconnnection_newstop_03">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".WebActivity"/>
</application>
</manifest>
- 今日头条算法
- 面试-今日头条
- 今日头条
- 今日头条
- 今日头条
- 今日头条面试
- 今日头条导航
- 仿今日头条
- 今日头条笔试
- 今日头条面试
- 今日头条效果
- 模拟今日头条
- 今日头条模拟
- 今日头条
- 今日头条
- 今日头条--笔试
- 今日头条笔试
- 仿今日头条
- python安装包超时问题
- 数据融合学习入门
- a标签的字体颜色继承问题
- Java里的堆(heap)栈(stack)和方法区(method)(精华帖,多读读)
- 1066: 字符分类统计
- 今日头条
- mysql语句大全
- WOJ1110-Frame Stacking
- 设计模式-策略模式
- 集成学习(Ensemble Learning)-bagging-boosting-stacking
- 运用AsyncTask在主线程更新图片UI
- 欢迎使用CSDN-markdown编辑器
- Qt 之 QSqlQueryModel Class
- Android malware样本SLocker Mobile Ransomware