Android 如何使视频视图中的视频旋转90度并全屏显示
我正试图得到一个视频作为背景播放。但我只能让它占据半个屏幕。因此,我需要将视频拉伸到16:9,并将其旋转90度,使其全屏显示 我现在正在一个测试项目中工作 主要活动Android 如何使视频视图中的视频旋转90度并全屏显示,android,video,android-videoview,Android,Video,Android Videoview,我正试图得到一个视频作为背景播放。但我只能让它占据半个屏幕。因此,我需要将视频拉伸到16:9,并将其旋转90度,使其全屏显示 我现在正在一个测试项目中工作 主要活动 public class MainActivity extends AppCompatActivity implements GestureOverlayView.OnGesturePerformedListener{ GestureLibrary gestureLib; VideoView vvRick; private But
public class MainActivity extends AppCompatActivity implements GestureOverlayView.OnGesturePerformedListener{
GestureLibrary gestureLib;
VideoView vvRick;
private Button btnTest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gestureLib = GestureLibraries.fromRawResource(this, R.raw.gestures);
if (!gestureLib.load()) {
finish();
}
GestureOverlayView gOverlay =
(GestureOverlayView) findViewById(R.id.gOverlay);
gOverlay.addOnGesturePerformedListener(this);
vvRick = (VideoView)findViewById(R.id.vvRick);
btnTest = (Button)findViewById(R.id.btnTest);
btnTest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Workss!!",
Toast.LENGTH_LONG).show();
}
});
}
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
ArrayList<Prediction> predictions = gestureLib.recognize(gesture);
if (predictions.size() > 0 && predictions.get(0).score > 3.0) {
String result = predictions.get(0).name;
if ("turn".equalsIgnoreCase(result)) {
Toast.makeText(this, "Reverse", Toast.LENGTH_LONG).show();
} else if ("easteregg".equalsIgnoreCase(result)) {
Toast.makeText(this, "EasterEgg", Toast.LENGTH_LONG).show();
vvRick.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.rickroll));
vvRick.start();
} else{
Toast.makeText(this, "FOUT", Toast.LENGTH_LONG).show();
}
}
}
}
公共类MainActivity扩展AppCompatActivity实现GestureOverlayView.OnTesturePerformedListener{
手势库手势库;
视频视图;
私人按钮测试;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gestureLib=GestureLibraries.fromRawResource(this,R.raw.bities);
如果(!gestureLib.load()){
完成();
}
俯视gOverlay的手势=
(手势覆盖视图)findViewById(R.id.gOverlay);
gOverlay.addOnGesturePerformedListener(此);
vvRick=(VideoView)findviewbyd(R.id.vvRick);
btnTest=(按钮)findViewById(R.id.btnTest);
btnTest.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(getApplicationContext(),“works!!”,
Toast.LENGTH_LONG).show();
}
});
}
已执行的检测的公共无效(手势覆盖视图覆盖、手势){
ArrayList predictions=gestureLib.recognize(手势);
if(predictions.size()>0&&predictions.get(0).score>3.0){
字符串结果=predictions.get(0).name;
如果(“转向”。相等信号情况(结果)){
Toast.makeText(此“反向”,Toast.LENGTH_LONG).show();
}else if(“easteregg.”等信号情况(结果)){
Toast.makeText(这是“EasterEgg”,Toast.LENGTH_LONG).show();
setVideoURI(Uri.parse(“android.resource://”+getPackageName()+“/”+R.raw.rickroll));
vvRick.start();
}否则{
Toast.makeText(这个“FOUT”,Toast.LENGTH_LONG).show();
}
}
}
}
布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/rlMain">
<VideoView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/vvRick"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:background="@android:color/transparent" />
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/home_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button Test"
android:id="@+id/btnTest"
android:layout_gravity="center" />
</FrameLayout>
<android.gesture.GestureOverlayView
android:layout_width="fill_parent"
android:layout_height="200dp"
android:id="@+id/gOverlay"
android:minHeight="200dp"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:background="@android:color/transparent"></android.gesture.GestureOverlayView>
即使正确设置了合成矩阵并使用了旋转属性,VideoView也不支持视频旋转
您可以使用TextureView并设置其属性rotation=“90”(例如)。然后它将旋转帧,但纵横比是您需要自行处理的。为此,您可以使用textTureView.setScaleX((屏幕高度*1.0f)/screenWidth)
请阅读以下内容以了解更多信息:
最简单的方法是旋转
视频视图。否则,你需要提取每一帧,旋转它,然后将它们放在一起,创建一个视频。我曾经尝试过,但现在它根本不显示。不过我能听到视频的声音。