问题描述
我收到来自 JSON API 的响应,其中“视频”标签包含视频或图像名称及其扩展名,如下所示。如果该标签包含视频,我想显示视频(我正在 Web 视图中加载视频)然后隐藏图像视图,或者如果它包含图像则显示图像然后隐藏 Web 视图。
即将出现的问题是,如果响应位置具有 .mp4 并且图像视图可见但响应图像未在 Picasso 中显示,则 web 视图可见性消失。
回复:
[
{
"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);
}
解决方法
Laravel
因为您已将这些图像和视频文件存储在一个 db 文件夹中 并且请使用 Videoview 作为视频播放器,它可以轻松地将视频播放到 android 中
,您可以先尝试以编程方式下载图像,然后尝试设置为任何 ImageView,而不是将 url 传递给 picasso。
或者您可以使用任何其他客户端来验证 API 是否工作正常并返回有效图像。
一旦上述经过验证并发现工作正常,下一步是检查我们是否获得了正确的 imgPostImage 实例