如何显示响应中的视频或图像?

how to display either video or image from response?

我收到来自 JSON API 的回复,其中“视频”标签包含视频或图像名称及其扩展名,如下所示。如果该标签包含视频,我想显示视频(我正在 Web 视图中加载视频)然后隐藏图像视图,或者如果它包含图像则显示图像然后隐藏 Web 视图。

问题是如果响应位置有 .mp4 并且图像视图可见但响应图像未在 Picasso 中显示,则 webview 可见性消失。

回复:

    [
{
  
    "Video": "8100931.mp4"
},
{
    
    "Video": "218519.jpeg",
   
}]

布局:

<androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/llVideoPost"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:visibility="visible">

        <WebView
            android:id="@+id/wvPostVideo"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:focusable="false"
            android:screenReaderFocusable="false"
            android:visibility="visible"
            app:layout_constraintDimensionRatio="1:1"
            tools:ignore="MissingConstraints" />

        <ImageView
            android:id="@+id/imgPostImage"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:contentDescription="@string/todo"
            android:scaleType="fitXY"
            android:visibility="gone"
            app:layout_constraintDimensionRatio="1:1"
            tools:ignore="MissingConstraints" />

    </androidx.constraintlayout.widget.ConstraintLayout>

我试过这段代码 调用响应代码:

String videoTag= businessList.get(position).getVideo();
   
 
    if (businessList.get(position).getVideo().endsWith(".mp4")) {
        holder.wvPostVideo.setVisibility(View.VISIBLE);
        holder.imgPostImage.setVisibility(View.GONE);
        holder.wvPostVideo.loadUrl("https://smakerspace.s3.ap-south-1.amazonaws.com/Video/" + videoTag);
    } else if (businessList.get(position).getVideo().endsWith(".jpeg")) {

        holder.wvPostVideo.setVisibility(View.GONE);
        holder.imgPostImage.setVisibility(View.VISIBLE);
        Picasso.get()
                .load("https://smakerspace.s3.ap-south-1.amazonaws.com/upload/"+videoTag)
                .rotate(90)
                .into(holder.imgPostImage);
    }
replace  https://smakerspace.s3.ap-south-1.amazonaws.com/upload/ with https://smakerspace.s3.ap-south-1.amazonaws.com/Video/

因为你把这些图片和视频文件存到一个db文件夹里了 并且请使用 Videoview 作为视频播放器它可以很容易地将视频播放到 android

不要将 url 传递给 picasso,您能否先尝试以编程方式下载图像,然后尝试设置为任何 ImageView。

或者您可以使用任何其他客户端来验证 API 是否正常工作并返回有效图像。

一旦上述被验证并发现工作正常,下一步是检查我们是否得到正确的 imgPostImage 实例