mainActivity:

package com.sxt.day07_09;

import java.util.ArrayList;
import java.util.HashMap; import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.provider.MediaStore.Video;
import android.provider.MediaStore.Video.Thumbnails;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.VideoView; public class MainActivity extends Activity {
ArrayList<HashMap<String, Object>> mVideos;//M
Gallery mGallery;//V
VideoAdapter mAdapter;//C,用于列表显示
VideoView mVideoView;//预览视频控件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getVideoInfo();
initView();
setListener();
} private void setListener() {
mGallery.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, Object> video=mVideos.get(position);
String path=video.get(Video.Media.DATA).toString();
mVideoView.setVideoPath(path);//设置视频路径
mVideoView.start();//播放
}
});
} private void initView() {
mVideoView=(VideoView) findViewById(R.id.vv);
mGallery=(Gallery) findViewById(R.id.gallery);
mAdapter=new VideoAdapter(mVideos, this);//M添加到
mGallery.setAdapter(mAdapter);
} private void getVideoInfo() {
ContentResolver resolver = getContentResolver();
String[] projection={
Video.Media._ID,//拿到略缩图
Video.Media.DATA,//sd卡路径
Video.Media.TITLE
};
mVideos=new ArrayList<HashMap<String,Object>>();
//查询的是安卓数据库,数据库存的是多媒体文件的信息
Cursor c = resolver.query(Video.Media.EXTERNAL_CONTENT_URI, projection, null, null, null);
while(c.moveToNext()){
HashMap<String, Object> video=new HashMap<String, Object>();
video.put(Video.Media._ID, c.getInt(c.getColumnIndex(Video.Media._ID)));
video.put(Video.Media.DATA, c.getString(c.getColumnIndex(Video.Media.DATA)));
video.put(Video.Media.TITLE, c.getString(c.getColumnIndex(Video.Media.TITLE)));
mVideos.add(video);
}
} //适配器,用于列表显示
class VideoAdapter extends BaseAdapter{
ArrayList<HashMap<String, Object>> videos;
Context context; public VideoAdapter(ArrayList<HashMap<String, Object>> videos,
Context context) {
super();
this.videos = videos;
this.context = context;
} @Override
public int getCount() {
return videos.size();
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
} @Override
//没有用缓存做优化
public View getView(int position, View layout, ViewGroup parent) {
layout=View.inflate(context, R.layout.item_video, null);
ImageView ivThumb=(ImageView) layout.findViewById(R.id.ivThumb);//显示视频略缩图
TextView tvTitle=(TextView) layout.findViewById(R.id.tvTitle);//视频标题
HashMap<String, Object> video=videos.get(position);
tvTitle.setText(video.get(Video.Media.TITLE).toString());
int id=(Integer) video.get(Video.Media._ID);
//Thumbnails类用于获取视频或者图片的略缩图,
Bitmap bm=Thumbnails.getThumbnail(getContentResolver(), id, Thumbnails.MICRO_KIND, null);
ivThumb.setImageBitmap(bm);
return layout;
}
}
}

主页面:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" > <Gallery 水平滚动
android:id="@+id/gallery"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<VideoView 预览播放视频控件
android:id="@+id/vv"
android:layout_below="@id/gallery"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout> item_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" > <ImageView 每一项布局
android:id="@+id/ivThumb"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/ic_launcher"/>
<TextView
android:id="@+id/tvTitle"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="安卓"
android:gravity="center_horizontal"/>
</LinearLayout>

最新文章

  1. asp.net微信jsapi支付
  2. ApiResponse 在 Swagger 1 和Swagger 2中的不同
  3. iOS—网络实用技术OC篇&amp;网络爬虫-使用java语言抓取网络数据
  4. vuejs切换视图同时保持状态
  5. 关于Jedis连接redis出现问题
  6. Eclipse_调试技巧
  7. 监听TelephonyManager的通话状态来监听手机的所有的来电
  8. android中ListView_SimpleAdapter
  9. HDU 2669 Romantic(扩展欧几里德, 数学题)
  10. 点滴积累【JS】---JS小功能(createElement和insertBefore添加div下面的节点)
  11. Codeforces Round #337 (Div. 2) A. Pasha and Stick 数学
  12. log4Net 简单配置实用
  13. PC/UVa 题号: 110104/706 LC-Display (液晶显示屏)题解
  14. Oracle监听静态注册和动态注册
  15. 子PID namespace中获取父namespace中pid的方法
  16. 14.MySQL(二)
  17. webstorm你不知道的秘密
  18. 源码推荐:移动端商城(微信小程序源代码) WebView离线缓存
  19. session,cookie,sessionStorage,localStorage的区别及应用场景
  20. 关于vue的基础概念

热门文章

  1. Apache 支持PHP
  2. QSslError 类
  3. 实用lsof常用命令行
  4. mac+eclipse+svn+maven经验总结(转)
  5. WPF之Treeview控件简单用法
  6. 2013Java最新面试题
  7. iOS:处理XML文件
  8. GetSystemMetrics() 函数的用法
  9. Matlab读取cifar10 train_quick.sh输出txt中信息
  10. SQL server 变量、运算符