新闻客户端
来源:互联网 发布:vslam 算法公司 编辑:程序博客网 时间:2024/06/06 00:28
1.创建程序:
创建一个名为”ImageBrowser”的应用程序,设计用户交互界面:
布局文件(activity_main.xml):
<?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:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:orientation="vertical"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/loading" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" android:visibility="invisible"> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正在加载信息..." /> </LinearLayout> <ListView android:id="@+id/lv_news" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="5dp"/> </FrameLayout></LinearLayout>
2.创建ListView Item的布局
因为使用了ListView控件,需要为ListView的item创建一个布局。ListView Item布局文件news_item.xml:
<?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="65dp"> <com.loopj.android.image.SmartImageView android:id="@+id/siv_icon" android:layout_width="80dp" android:layout_height="60dp" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:scaleType="centerCrop" android:src="@mipmap/ic_launcher"></com.loopj.android.image.SmartImageView> <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginTop="10dp" android:layout_toRightOf="@id/siv_icon" android:ellipsize="end" android:maxLength="20" android:singleLine="true" android:text="我是标题" android:textColor="#000000" android:textSize="18sp" /> <TextView android:id="@+id/tv_description" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tv_title" android:layout_marginLeft="5dp" android:layout_marginTop="5dp" android:layout_toRightOf="@id/siv_icon" android:ellipsize="end" android:maxLength="16" android:maxLines="1" android:text="我是描述" android:textColor="#99000000" android:textSize="14sp" /> <TextView android:id="@+id/tv_type" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginBottom="5dp" android:layout_marginRight="10dp" android:text="评论" android:textColor="#99000000" android:textSize="12sp" /></RelativeLayout>
3.编写界面交互代码(MainActivity):
<?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="65dp"> <com.loopj.android.image.SmartImageView android:id="@+id/siv_icon" android:layout_width="80dp" android:layout_height="60dp" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:scaleType="centerCrop" android:src="@mipmap/ic_launcher"></com.loopj.android.image.SmartImageView> <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginTop="10dp" android:layout_toRightOf="@id/siv_icon" android:ellipsize="end" android:maxLength="20" android:singleLine="true" android:text="我是标题" android:textColor="#000000" android:textSize="18sp" /> <TextView android:id="@+id/tv_description" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tv_title" android:layout_marginLeft="5dp" android:layout_marginTop="5dp" android:layout_toRightOf="@id/siv_icon" android:ellipsize="end" android:maxLength="16" android:maxLines="1" android:text="我是描述" android:textColor="#99000000" android:textSize="14sp" /> <TextView android:id="@+id/tv_type" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginBottom="5dp" android:layout_marginRight="10dp" android:text="评论" android:textColor="#99000000" android:textSize="12sp" /></RelativeLayout>
4.创建适配器MyAdapter类:
package bzu.edu.cn.imagebrowser.adapter;import android.content.Context;import android.graphics.Color;import android.support.annotation.NonNull;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.TextView;import com.loopj.android.image.SmartImageView;import org.w3c.dom.Text;import java.util.List;import bzu.edu.cn.imagebrowser.R;import bzu.edu.cn.imagebrowser.entity.NewsInfo;public class MyAdapter extends ArrayAdapter<NewsInfo>{ public MyAdapter(Context context, List<NewsInfo> objects) { super(context, R.layout.news_item, objects); } @NonNull @Override public View getView(int position, View convertView, ViewGroup parent) { NewsInfo newsInfo=getItem(position); View view; ViewHolder viewHolder; if(convertView==null){ view= LayoutInflater.from(getContext()).inflate(R.layout.news_item, null); viewHolder=new ViewHolder(); viewHolder.siv_icon=(SmartImageView)view.findViewById(R.id.siv_icon); viewHolder.tv_title=(TextView)view.findViewById(R.id.tv_title); viewHolder.tv_description=(TextView)view.findViewById(R.id.tv_description); viewHolder.tv_type=(TextView)view.findViewById(R.id.tv_type); view.setTag(viewHolder); } else{ view=convertView; viewHolder=(ViewHolder)view.getTag(); } viewHolder.siv_icon.setImageUrl(newsInfo.getIcon()); viewHolder.tv_title.setText(newsInfo.getTitle()); viewHolder.tv_description.setText(newsInfo.getContent()); int type=newsInfo.getType(); switch (type){ case 1: viewHolder.tv_type.setText("评论:"+newsInfo.getComment()); break; case 2: viewHolder.tv_type.setTextColor(Color.RED); viewHolder.tv_type.setText("专题"); break; case 3: viewHolder.tv_type.setTextColor(Color.BLUE); viewHolder.tv_type.setText("LIVE"); break; } return view; } class ViewHolder{ SmartImageView siv_icon; TextView tv_title; TextView tv_description; TextView tv_type; }}
创建JsonParse;
public class JsonParse { public static List<NewsInfo> getNewsInfo(String json) { Gson gson=new Gson(); Type listType=new TypeToken<List<NewsInfo>>(){ }.getType(); List<NewsInfo> newsInfos=gson.fromJson(json,listType); return newsInfos; }}
5:创建NewsInfo类:
public class NewsInfo { private String icon;//图片路径 private String title;//新闻标题 private String content;//新闻内容 private int type;//新闻类型 private long comment;//新闻评论数 public long getComment() { return comment; } public void setComment(long comment) { this.comment = comment; } public int getType() { return type; } public void setType(int type) { this.type = type; } public String getContent() { return content; } public void setContent(String description) { this.content = content; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; }}
6配置服务器
由于需要从服务器上下载一个XML,因此需要开启tomcat 服务器,在tomcat根目录下找pin文件夹,运行该文件夹下的startup.bat文件即可开启tomcat 服务器,然后再tomcat的安装目录打开webapps文件夹,将NewsInfo.xml文件放置在ROOT文件夹下,NewsInfo.xml代码:
{ "icon": "http://192.168.1.109:8080/images/a.jpg", "title": "科技温暖世界", "content": "进入一个更有爱的领域", "type": "1", "comment": "69" }, { "icon": "http://192.168.1.109:8080/images/b.jpg", "title": "《神武》", "content": "新美术资源盘点,视觉新体验", "type": "2", "comment": "35" }, { "icon": "http://192.168.1.109:8080/images/c.jpg", "title": "南北车正式公布合并", "content": "南北车将于今日正式公布合并", "type": "3", "comment": "2" }, { "icon": "http://192.168.1.109:8080/images/d.jpg", "title": "萌呆了!汪星人抱玩偶酣睡", "content": "汪星人抱玩偶酣睡,萌翻网友", "type": "1", "comment": "25" }, { "icon": "http://192.168.1.109:8080/images/e.jpg", "title": "风力发电进校园", "content": "风力发电普进校园", "type": "2", "comment": "26" }, { "icon": "http://192.168.1.109:8080/images/f.jpg", "title": "地球一小时", "content": "地球熄灯一小时", "type": "1", "comment": "23" }, { "icon": "http://192.168.1.109:8080/images/g.jpg", "title": "最美公路", "content": "最美公路,难以想象", "type": "1", "comment": "23" }]
7.清单文件添加权限(AndroidMainfest.xml):
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="bzu.edu.cn.imagebrowser"> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="ImageBrowser" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> </activity> <activity android:name=".Main2Activity" android:label="News"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
阅读全文
0 0
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 前端路由设置
- Android常用控件2
- Android简单的BroadcastReceive
- OFFICE 无法创建控件,因为它未经正确授权
- IOS Swift3.1 手动页面跳转
- 新闻客户端
- 产品经理必须知道的三种经典逻辑思考方式
- Flask在windows下安装及在eclipse下开发的环境配置
- Android聊天客户端Demo,开源了.基本功能都有,数据库,服务器都Ok
- 点9图
- 详解Android权限机制
- LeetCode 9. Palindrome Number
- ACM:C: 稳定排序
- Linux系统调用实现文件复制