您可以在網格項目佈局上一起使用ImageView和VideoView。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="@dimen/post_image_size">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="@dimen/post_image_size"/>
<VideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="@dimen/post_image_size" />
</FrameLayout>
在適配器#getView(),你應該檢查你的網址類型,並設置其中的一個,並設置爲不可見另一個。
if (!isVideo(url)) {
videoView.setVisibility(View.GONE);
Picasso.with(this).load(imageUrl)
.into(imageView);
} else {
Uri uri = Uri.parse(url);
videoView.setVideoURI(uri);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
imageView.setVisibility(View.GONE);
videoView.setBackgroundColor(Color.TRANSPARENT);
videoView.requestFocus();
videoView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// start your new activity to play video
return false;
}
});
}
});
}
PS1:我用Picasso來設置ImageView。
PS2:在Instagram中,我們可以使用Instagram API獲取視頻文章的圖像。我們還有mediaType標誌來確定它是一個視頻或圖像。您可以從here.查看Instagram API我開發了一個instagram轉發應用程序。在gridView中,我使用來自視頻帖子的API的圖像。點擊視頻項目時,我也會開始一個新的活動來播放視頻。但是,如果你確實需要拍攝一段視頻,你可以看到這個entry.