如何显示响应中的视频或图像?
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 实例
我收到来自 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 实例