服务器端:

<?xml version="1.0" encoding="UTF-8"?>
<channels><channel id="1"><name>一个人</name><time>2012-02-02</time><count>12</count><icon>http://172.16.40.157:8080/web/a.jpg</icon></channel><channel id="2"><name>2个人</name><time>2012-02-02</time><count>112</count><icon>http://172.16.40.157:8080/web/b.jpg</icon></channel>
</channels>

优酷:

channel.java:

package cn.itcast.youku.domain;public class Channel {private String id;private String name;private String time;private int count;private String icon;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getTime() {return time;}public void setTime(String time) {this.time = time;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}public String getIcon() {return icon;}public void setIcon(String icon) {this.icon = icon;}
}

ChannelService.ajva:

package cn.itcast.youku.service;import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;import org.xmlpull.v1.XmlPullParser;import android.util.Xml;import cn.itcast.youku.domain.Channel;public class ChannelService {public static List<Channel> getChannels (InputStream is ) throws Exception{XmlPullParser parser = Xml.newPullParser();parser.setInput(is, "utf-8");List<Channel> channels = new ArrayList<Channel>();int type = parser.getEventType();Channel channel = null;while(type!=XmlPullParser.END_DOCUMENT){switch (type) {case XmlPullParser.START_TAG:if("channel".equals(parser.getName())){channel = new Channel();String id = parser.getAttributeValue(0);channel.setId(id);}else if("name".equals(parser.getName())){String name = parser.nextText();channel.setName(name);}else if("time".equals(parser.getName())){String time = parser.nextText();channel.setTime(time);}else if("count".equals(parser.getName())){String count = parser.nextText();channel.setCount(Integer.parseInt( count));}else if("icon".equals(parser.getName())){String icon = parser.nextText();channel.setIcon(icon);}break;case XmlPullParser.END_TAG:if("channel".equals(parser.getName())){channels.add(channel);channel = null;}break;}type = parser.next();}return channels;}
}

ImageUtil.java:

package cn.itcast.youku.service;import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;import cn.itcast.youku.util.StreamTool;import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;public class ImageUtil {
/*** 获取网络address地址对应的图片* @param address* @return bitmap的类型 */public static Bitmap getImage(String address) throws Exception{//通过代码 模拟器浏览器访问图片的流程 // http://xxx.xxx/a.jpgint start = address.lastIndexOf("/");String iconname = address.substring(start+1, address.length());File file = new File(Environment.getExternalStorageDirectory(),iconname);FileOutputStream fos = new FileOutputStream(file);URL url = new URL(address);HttpURLConnection conn =  (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setConnectTimeout(5000);//获取服务器返回回来的流 InputStream is = conn.getInputStream();byte[] result = StreamTool.getBytes(is);//把图片信息 保存到sd卡fos.write(result);fos.flush();fos.close();Bitmap bitmap = BitmapFactory.decodeByteArray(result, 0, result.length);return bitmap;}
}

NetUtil.java:

package cn.itcast.youku.service;import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;public class NetUtil {/*** 获取服务器频道信息返回回来的输入流* * @param address*            频道信息的jsp或者servlet的地址* @return inputstream*/public static InputStream getChannelStream(String address) throws Exception {URL url = new URL(address);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(5000);conn.setRequestMethod("GET");int code = conn.getResponseCode();if (code == 200) {return conn.getInputStream();}return null;}
}

StreamTool.java:

package cn.itcast.youku.util;import java.io.ByteArrayOutputStream;
import java.io.InputStream;public class StreamTool {/*** 把一个inputstream里面的内容转化成一个byte[] */public static byte[] getBytes(InputStream is) throws Exception{ByteArrayOutputStream bos = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while((len = is.read(buffer))!=-1){bos.write(buffer, 0, len);}is.close();bos.flush();byte[] result = bos.toByteArray();System.out.println(new String(result));return  result;}
}

DemoActivity.java:

package cn.itcast.youku;import java.io.File;
import java.io.InputStream;
import java.util.List;import cn.itcast.youku.domain.Channel;
import cn.itcast.youku.service.ChannelService;
import cn.itcast.youku.service.ImageUtil;
import cn.itcast.youku.service.NetUtil;
import android.app.Activity;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;public class DemoActivity extends Activity {private ListView lv;private List<Channel> channels;private LayoutInflater inflater;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// inflater = (LayoutInflater)// getSystemService(LAYOUT_INFLATER_SERVICE);inflater = LayoutInflater.from(this);lv = (ListView) this.findViewById(R.id.lv);String address = getResources().getString(R.string.serverurl);try {InputStream is = NetUtil.getChannelStream(address);channels = ChannelService.getChannels(is);} catch (Exception e) {Toast.makeText(this, "获取数据失败", 0).show();e.printStackTrace();}// 填充listview的数据lv.setAdapter(new MyAdapter());lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {Channel chanel = (Channel) lv.getItemAtPosition(position);String channelid = chanel.getId();Toast.makeText(DemoActivity.this, "提交 " + channelid + "到服务器", 0).show();}});}private class MyAdapter extends BaseAdapter {@Overridepublic int getCount() {// TODO Auto-generated method stubreturn channels.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn channels.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view = inflater.inflate(R.layout.item, null);Channel channel = channels.get(position);ImageView iv_item = (ImageView) view.findViewById(R.id.iv_item);TextView tv_count = (TextView) view.findViewById(R.id.tv_count);TextView tv_name = (TextView) view.findViewById(R.id.tv_name);TextView tv_time = (TextView) view.findViewById(R.id.tv_time);// 这句代码会产生问题么?tv_count.setText("点播次数 " + channel.getCount());tv_name.setText(channel.getName());tv_time.setText("播放时间 " + channel.getTime());String address = channel.getIcon();int start = address.lastIndexOf("/");String iconname = address.substring(start + 1, address.length());File file = new File(Environment.getExternalStorageDirectory(),iconname);if (file.exists() && file.length() > 0) {// 如果存在 就直接使用 sd卡的文件iv_item.setImageURI(Uri.fromFile(file));System.out.println("使用缓存");} else {// 如果不存在 才去下载网络上的图片try {Bitmap bitmap = ImageUtil.getImage(address);iv_item.setImageBitmap(bitmap);System.out.println("下载新的图片");} catch (Exception e) {e.printStackTrace();iv_item.setImageResource(R.drawable.default_icon);}}return view;}}
}

item.xml:

<?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="wrap_content"android:background="@drawable/background"android:orientation="horizontal" ><ImageViewandroid:id="@+id/iv_item"android:layout_width="80px"android:layout_height="60px"android:src="@drawable/ic_launcher" /><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical" ><TextViewandroid:id="@+id/tv_name"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="标题"android:textColor="@android:color/black"android:textSize="16sp" /><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:id="@+id/tv_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="播放时间"android:textColor="@android:color/darker_gray"android:textSize="10sp" /><TextViewandroid:layout_marginLeft="30dip"android:id="@+id/tv_count"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="播放次数 "android:textColor="@android:color/darker_gray"android:textSize="10sp" /></LinearLayout></LinearLayout></LinearLayout>

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="@android:color/white"android:gravity="center_horizontal"android:orientation="vertical" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/summary"android:textColor="@android:color/darker_gray"android:textSize="25sp" /><ListViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:id="@+id/lv" ></ListView></LinearLayout>

Android 优酷相关推荐

  1. Android优酷播放器SDK——Eclipse工程迁移Android Studio遇到问题

    Android优酷播放器SDK--Eclipse工程迁移Android Studio遇到问题 希望大家看完本文章能解决遇到的问题,如果没有表明清楚问题所在,还望指点一二: 下载优酷视频播放器SDK 导 ...

  2. android 优酷 自动全屏播放,Android如何实现仿优酷视频的悬浮窗播放效果

    Android如何实现仿优酷视频的悬浮窗播放效果 发布时间:2020-07-11 10:24:43 来源:亿速云 阅读:228 作者:清晨 这篇文章主要介绍Android如何实现仿优酷视频的悬浮窗播放 ...

  3. android 优酷 自动全屏播放,Android用Webview播放优酷视频全屏问题

    在播放优酷视频, 点击全屏的时候, 会黑屏, 而不显示需要全屏的view 试过各种方法, 发现有一些细节需要注意: 1. demo的Manifest Activity需要设置为: 全屏, 横屏 and ...

  4. Android优酷菜单组件自定义

    主要做的就是模仿优酷手机客户端的底部菜单控件的实现.先来几张图片,点击中间的home,显示二级菜单,点击二级菜单的menu,显示三级菜单. 这是实现起来最简单的一个布局,但是从中学会了自定义动画和一些 ...

  5. android优酷视频黑屏,优酷视频打不开播放变黑屏的原因以及解决方法介绍

    今天打开优酷看视频,但是打开几个视频都打不开,只显示一个黑屏.我开始以为视频被删除了,但是看到有人还在评论,所以比较肯定的认为视频并没有删除,而是其他的原因所致. 优酷视频打不开 经验告诉我,这可能是 ...

  6. android加载优酷视频播放器,使用android优酷视频云一些问题

    最近项目迭代需要添加视频播放功能,由于若干原因就选择了优酷视频,本来挺简单的一个功能在做的时候居然碰到了若干意想不到的问题,果然还是优酷视频提供的demo最稳定啊,啥问题木有~~o(>_ 好了, ...

  7. android优酷旧版本,优酷2016旧版本安卓

    优酷2016旧版本安卓版是一款影视高清.资源丰富的手机客户端,自上线以来十年间为持续为用户提供更优质的视频播放服务,在探索与创新中不断地创造出更加卓越的观影体验,优酷2016旧版本为用户回忆往昔经典版 ...

  8. android优酷开放平台,优酷

    一.Andriod SDK 1.客户端运行sdk上传视频到云点播平台 2.普通用户通过client_id.client_secret.access_token 3.进度条显示上传进度 4.上传视频建议 ...

  9. android浮窗播放器,Android仿优酷视频的悬浮窗播放效果

    之前接了需求要让视频播放时可以像优酷视频那样在悬浮窗里播放,并且悬浮窗和主播放页面之间要实现无缝切换,项目中使用的是自封装的ijkplayer 这个要求就代表不能在悬浮窗中新建视频控件,所以需要在悬浮 ...

最新文章

  1. Android 录音功能直接拿去用
  2. More than one file was found with OS independent path
  3. python培训班时间 费用-深圳python培训班大概多少费用
  4. 【Matlab 图像】HSV 空间图片分离器
  5. viewpager 自定义翻页效果_Android RecyclerView自定义LayoutManager
  6. sdut 最长公共子序列问题
  7. MySQL——JSON_REPLACE()函数修改JSON属性值
  8. Python3 模块相关及输入输出模式
  9. 一个有钱人儿子写的作文!
  10. 一步步实现SDDC-Edge负载均衡
  11. 数据:以太坊上借贷协议资金规模年内增长幅度超300%
  12. java成员方法tostring_Java 工具类-toString
  13. Linux修改文件编码格式
  14. C#导入.dll Please make sure that the file is accessible and that it is a valid assembly or COM compone
  15. 条件运算符 c语言,C语言 —— 条件运算符
  16. 高盛为什么认为中国AI领域将超越美国?
  17. python+opencv将图片转换成视频
  18. nbiot和2g_浅谈NBIOT
  19. 如何才能让你的网店生意好到爆?
  20. Anaconda安装并配置

热门文章

  1. pikachuxss之herf、js输出
  2. Apache郭炜:开源社区最核心的还是产品力
  3. 《深入线出MFC》读书笔记(一):必备的Win32程序设计原理
  4. 为大家推荐4款对日常工作很有帮助的PC软件
  5. 【NMI 2021】从生物学角度看进化计算(6个生物进化特征)
  6. 全媒体运营 之 平台策略PS
  7. linux下判断文件是否存在,文件夹是否存在,是否有访问权限的方法
  8. 艾瑞报告:预计2023年家用智能照明市场规模过百亿,Yeelight易来引领行业发展
  9. linux常见文件夹名称及作用
  10. C++中iomanip用法