我正在使用导航抽屉和tablayout.我的标签中有一个视频,一开始看不到,但我能听到声音.一旦我设定
video_view.setZOrderOnTop(true);
Run Code Online (Sandbox Code Playgroud)
我也可以看到视频,但这会导致导航抽屉出现问题.
当我滑动它时,视频不会像所有其他元素一样隐藏在导航抽屉后面.
如果我不使用
video_view.setZOrderOnTop(true);
Run Code Online (Sandbox Code Playgroud)
然后我的抽屉工作正常.
main_activity.xml
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Framelayout to display Fragments -->
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/menuwhite2"
android:id="@+id/custom_home"
android:gravity="center"
android:layout_gravity="right"
android:layout_marginRight="10dp"/>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabGravity="fill"
/>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
<!-- Listview to display slider menu -->
<ListView
android:id="@+id/list_slidermenu"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="end"
android:choiceMode="singleChoice"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"
android:background="@color/list_background"/>
Run Code Online (Sandbox Code Playgroud)
tab_fragment.xml
<?xml …Run Code Online (Sandbox Code Playgroud) android navigation-drawer android-videoview android-tablayout
我有一个VideoView,我想用它来播放一个movieclip.我像这样使用它来播放它并且它有效.
VideoView vv = new VideoView(this);
vv.setVideoURI(Uri.parse("android.resource://cortex2.hcbj/raw/intro"));
setContentView(vv);
vv.start();
Run Code Online (Sandbox Code Playgroud)
但是我在影片剪辑之前和之后看到了黑色闪光.闪光本身不是一个大问题,但它的黑暗是.背景是白色的,所以如果闪光灯是白色的,或者如果它消失了就可以了.
我有一个视频文件,我想获得视频的宽度和高度.我不想玩它,只是为了获得尺寸.我试过使用MediaPlayer:
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(uriString);
mp.prepare();
int width = mp.getVideoWidth();
int height = mp.getVideoHeight();
Run Code Online (Sandbox Code Playgroud)
但它的宽度和高度返回0,因为VideoSizeChangedEvent尚未触发.如何获得视频的宽度和高度?
UPD:我需要API版本7
据我了解,目前UHD视频内容主要是通过4k电视直播HEVC codec.
我想了解具有UHD图像内容的应用如何以原生方式显示其图像内容4K?
我正在寻找的是渲染4k(3840*2060)jpeg图像.我的显示器支持4k渲染,SOC甚至可以输出4k.我正在寻找框架中的修改,以便所有具有4k图像的应用程序可以在我的设备上呈现它们而不降低缩放.
实际上我正在努力想出API其他人可以使用的套装.但我的主要困惑是:对于jpeg图像,我创建了一个4k表面,但它们也是其他表面(按钮等).它们由表面抛油环渲染而成1280*720.
现在用这些其他表面组合我的4k表面的最佳方法是什么?我应该在哪里升级这些表面以及在哪里组合它们?
有谁知道是否有可能检测到VideoView何时缓冲?
我想在视频缓冲时显示ProgressDialog.
到目前为止,我尝试使用OnPreparedListener,但这仅在首次加载视频时才有效.如果正在播放视频并且用户将擦洗条移动到不同的点,则视频仍然"准备好",即使它正在缓冲.
我也试过(我知道这很糟糕)AsyncThread只是忙等待isPlaying():
private class BufferTask extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void...voids) {
final VideoView videoView = (VideoView)findViewById(R.id.video);
while (!videoView.isPlaying()) { }
return null;
}
protected void onPostExecute(Void v) {
// Hide the dialog here...
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为只要你调用start(),即使它正在缓冲,VideoView似乎也被认为是在播放.
我能想到的唯一解决方案是构建一个自定义的VideoView类型类,以便我可以访问它的MediaPlayer实例.
有任何想法吗?谢谢阅读.
我目前正在尝试实施一个视频视频,该视频将显示特定位置的视频.我可以毫无问题地显示全屏视频.但是每当我试图在一个帧内显示该视频时(例如一个小矩形),我只能在该视图中显示一部分视频.我无法将视频放入该视图中.
我已经在android中查找了很多关于缩放视频的链接,但是我无法找到任何方法来做到这一点.有关该问题的任何帮助都会有所帮助.
我正在使用的是我有2个不同的课程.其中一个是我的视频活动类,另一个是帮助类:
public class VideoViewCustom extends VideoView {
private int mForceHeight = 0;
private int mForceWidth = 0;
public VideoViewCustom(Context context) {
super(context);
}
public VideoViewCustom(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public VideoViewCustom(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void setDimensions(int w, int h) {
this.mForceHeight = h;
this.mForceWidth = w;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(mForceWidth, mForceHeight);
}
}
Run Code Online (Sandbox Code Playgroud)
该课程帮助我正确设置videoview的尺寸,但我无法使视频适合该区域.我的意思是我无法缩放视频以适应该区域.我不知道android是否自动缩放到给定的尺寸但我不能这样做.
在Android的VideoView中,有没有办法实现与ImageView.ScaleType.CENTER_CROP相同的效果?
也就是说,我希望我的VideoView能够播放视频,使其在不失真的情况下填满整个屏幕.如果视频宽高比不完全适合屏幕,则应裁剪而不是扭曲.
以下解决方案将填满屏幕,但不保持视频的宽高比:https: //stackoverflow.com/a/6927300/1068656
此解决方案保持视频的宽高比,但不会填满整个屏幕(视频会缩放,直到较长的一侧到达屏幕边缘,从而在侧面引入条形图):https: //stackoverflow.com/a/4855315/1068656
我的mediacontroller有一个问题,它隐藏在导航栏后面(ICS上的软导航键).首先是OK(第一张图片),但是当第一次隐藏导航栏时,mediacontroller被调整大小以适应屏幕(正确),但是当再次出现导航栏时(第二张图片)不会调整大小.广告也被移到后面(隐藏屏幕截图).
如果我理解文档正确,fitSystemWindows应该负责调整大小.但它不起作用.
我怎样才能做到这一点?谢谢你的帮助.
我正在Galaxy Nexus上测试这个.
XML布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/playerLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:animateLayoutChanges="true"
android:background="@color/black" >
<mynamespace.BKDVideoView
android:id="@+id/videoview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
<mynamespace.SubtitleTextView
android:id="@+id/subtitleText"
style="@style/SubtitleOverlayText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="30dp"
android:gravity="center"
android:visibility="gone"
android:fitsSystemWindows="true"
android:animateLayoutChanges="true"/>
<FrameLayout
android:id="@+id/adLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:fitsSystemWindows="true"
android:animateLayoutChanges="true"/>
<FrameLayout
android:id="@+id/videoMediaControllerHolder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:animateLayoutChanges="true"/>
Run Code Online (Sandbox Code Playgroud)
BKDVideoView是来自VideoView的GrepCode的副本,带有一些自定义.我为MediaController做了同样的事情.在MediaController中,我正在调用这样的隐藏:
int newVis = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | SYSTEM_UI_FLAG_LAYOUT_STABLE;
if (!visible)
{
newVis |= SYSTEM_UI_FLAG_LOW_PROFILE | SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
// mSystemUiHolder -> FrameLayout (playerLayout)
mSystemUiHolder.setSystemUiVisibility(newVis);
Run Code Online (Sandbox Code Playgroud)

更新:如果您遇到同样的问题,请在接受的答案中查看评论.对于需要全屏使用sammyboy代码的视图.感谢两者.对不起,我需要太多时间搞清楚这一点并且无法给你积分:(
我们的应用程序播放一组视频,有时我们无法播放此视频提醒消息.
如果该视频尚未下载,我们要么是从SD卡播放视频,要么是流式传输.大多数情况下,错误的互联网连接流式传输时出现错误.
我从阅读一些帖子和博客中了解到这个错误的原因很少.
但是,现在我想在发生错误时播放下一个视频而不显示该错误消息.
我使用了下面的监听器,
video.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.d("video", "setOnErrorListener ");
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
错误发生时调用方法,但无法停止显示该警报消息.
有没有办法停止显示该警报消息?
提前致谢.
android ×10
video ×4
media-player ×2
alert ×1
android-ndk ×1
ffmpeg ×1
fullscreen ×1
google-tv ×1
java ×1
smart-tv ×1