- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 CardView 的 RecyclerView 中有一个 ex0player。 exoplayer 的高度需要根据包含的视频的高度以编程方式更改。此高度值以 像素 的形式从 API 调用返回。这是 ViewHolder 的布局:
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
app:cardCornerRadius="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/communityPlayableCl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/toroPlayerView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/transparent"
android:visibility="invisible"
app:controller_layout_id="@layout/v_player_controls"
app:keep_content_on_player_reset="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/communityPlayableIv"
app:player_layout_id="@layout/toro_exo_player_view"
app:resize_mode="zoom"
app:show_buffering="when_playing"
app:shutter_background_color="@android:color/transparent"
app:surface_type="texture_view"
app:use_controller="false" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/communityPlayableIv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:background="@color/black"
android:scaleType="centerCrop"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
tools:layout_editor_absoluteY="0dp"
tools:src="@color/alpha_grey" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/volumeIv"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="bottom|end"
android:padding="15dp"
android:src="@drawable/ic_volume_off"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
这是我调整高度和纵横比的方法:
if (model.mediaHeight != 0 && model.mediaHeight != null ) {
communityPlayableCl.requestLayout()
communityPlayableCl.layoutParams.height = model.mediaHeight
}
val constraintSet = ConstraintSet()
constraintSet.clone(communityPlayableCl)
constraintSet.setDimensionRatio(itemView.id,model.mediaAspectRatio)
constraintSet.applyTo(communityPlayableCl)
这会裁剪 640x640 视频的顶部和底部
最佳答案
您可以使用类似这样的方法从视频中获取尺寸。我还会在 Uri.parse
周围添加一个 try/catch,如果无法解析文件,它将失败。
Pair<Integer, Integer> getMediaDimensions(File file, Context context) {
if (!file.exists()) return null;
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(context, Uri.parse(file.getAbsolutePath()));
int width = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
int height = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
retriever.release();
return new Pair<>(width, height);
}
从那里,您可以在计算比率后手动计算和设置新的高度/宽度。或者,使用 ConstraintLayout 作为播放器的容器并将其 layout_constraintDimensionRatio
设置为类似 H,1:1
的内容,并将每个 1 替换为您的宽度/高度。
如果你使用的是 Kotlin,可以关注 this post进行相应调整,并添加可重用的扩展。
关于android - 将卡片 View 高度扩展到包含的 exoplayer 的高度,仅裁剪 exoplayer 的左右两侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61799777/
我设法检查一个整数是否是从右到左排序的,但我如何检查从左到右的顺序?也许我应该做 2 个功能,一个从左到右检查,另一个从右到左检查?例如,我将 return 0; 替换为第二个函数,该函数检查它是否从
我想在两侧“剪切”我的页面,如下所示: http://i.stack.imgur.com/ngZrp.jpg 演示:https://jsfiddle.net/r2g0eyxf/3/ #left {
我很难在页面的两边都获得背景: 风格 .left { background: url(wax.png); width: 15%; position: absolute; lef
我需要逐步证明:7 + O(n) = O(n) 当两边都有大O的时候,我不知道该怎么做。 我想我理解大 O 符号的概念,但为什么两边都有大 O? 最佳答案 这种表示法的使用不符合大 O 表示法的正式定
我的目标是使 slider 宽度为 1280 像素并位于页面中央。我希望内容的边缘在两侧都有隐藏的溢出。例如,我希望内容的中心始终位于页面的中心,随着浏览器的大小调整,每一边都被切断,并且没有出现水平
我在做什么:在悬停按钮时,我添加了一个 5px 的底部边框。 JS fiddle : http://jsfiddle.net/mUCNB/ 问题: 问题是边框底部在左侧和右侧都延伸了 1px。 问题:
我是一名优秀的程序员,十分优秀!