首先,我已经在网站上查看了类似的问题并且他们没有帮助。我正在使用FrameLayout并尝试点击自定义ImageView,以便图像视图变得不可见并且视频开始播放但是当我点击ImageView时,只会出现一个空白屏幕而没有播放视频/音频。
feedImageView.setOnClickListener(new OnClickListener() {
String substrr=item.getURL();
@Override
public void onClick(View v) {
feedImageView.setVisibility(View.INVISIBLE);
vid.setVisibility(View.VISIBLE);
Uri vidUri = Uri.parse(substrr);
vid.setVideoURI(vidUri);
MediaController vidControl = new MediaController(getActivity());
vidControl.setAnchorView(vid);
vid.setMediaController(vidControl);
vid.start();
});
它们的完整布局如下 -
<?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:background="@color/feed_bg"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="@dimen/feed_item_margin"
android:layout_marginRight="@dimen/feed_item_margin"
android:layout_marginTop="@dimen/feed_item_margin"
android:background="@drawable/bg_parent_rounded_corner"
android:orientation="vertical"
android:paddingBottom="@dimen/feed_item_padding_top_bottom"
android:paddingTop="@dimen/feed_item_padding_top_bottom" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="@dimen/feed_item_padding_left_right"
android:paddingRight="@dimen/feed_item_padding_left_right" >
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/profilePic"
android:layout_width="@dimen/feed_item_profile_pic"
android:layout_height="@dimen/feed_item_profile_pic"
android:scaleType="fitCenter" >
</com.android.volley.toolbox.NetworkImageView>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
android:gravity="center"
android:paddingLeft="@dimen/feed_item_profile_info_padd" >
<TextView
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/feed_item_profile_name"
android:textColor="#0f84cc"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<-- THIS IS THE FRAME LAYOUT CONCERNED WITH THE QUESTION-->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<com.example.android.FeedImageView
android:id="@+id/feedImage1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:layout_marginTop="10dp"
android:scaleType="fitXY"
android:visibility="visible" />
<VideoView
android:id="@+id/vid12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="invisible"
/>
</FrameLayout>
<TextView
android:id="@+id/txtStatusMsg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/feed_item_status_pad_left_right"
android:paddingRight="@dimen/feed_item_status_pad_left_right"
android:paddingTop="@dimen/feed_item_status_pad_top" />
<Button
android:id="@+id/downloadbtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Download"
android:textColor="#ffffff"
android:gravity="center"
android:padding="10dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:background="#0f84cc"
/>
</LinearLayout>
</LinearLayout>
如果我使用具有以下布局的java代码 -
,现在视频可以正常工作<FrameLayout
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="com.example.android.videoplayer.MainActivity">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/myPic"
android:src="@drawable/icon"
/>
<VideoView
android:id="@+id/myVideo"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true"
android:visibility="invisible"/>
</FrameLayout>
请帮忙。
答案 0 :(得分:0)
你需要从下面的XML中删除android:visibility =“invisible”..
<VideoView
android:id="@+id/myVideo"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true"
android:visibility="invisible"/>
答案 1 :(得分:0)
请尝试在单独的帖子中播放视频 -
在runOnUiThread
。
feedImageView.setOnClickListener(new OnClickListener() {
String substrr=item.getURL();
@Override
public void onClick(View v) {
feedImageView.setVisibility(View.INVISIBLE);
vid.setVisibility(View.VISIBLE);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Uri vidUri = Uri.parse(substrr);
vid.setVideoURI(vidUri);
MediaController vidControl = new MediaController(getActivity());
vidControl.setAnchorView(vid);
vid.setMediaController(vidControl);
vid.start();
}
});
});