Tôi đang cố gắng thay đổi neo động của MediaController
theo các thay đổi định hướng. Và sau tất cả những nỗ lực của tôi, điều này không hoạt động khi cần thiết.Thay đổi vị trí MediaController khi xoay
Có lẽ bạn có thể chỉ ra sai lầm của mình.
Trong một vài từ:
chế độ Portrait:
- weightSum = 1.
SurfaceView
trọng lượng: 0,4MediaController
vàHorizontalScrollView
trọng lượng: 0,6MediaController
luôn luôn vis ible và không hề giấu giếm
Chế độ phong cảnh:
SurfaceView
trọng lượng: 0.0 (toàn màn hình)MediaControlls
=View.Gone
(tôi cần phải thay đổi neo của nó đểSurfaceView
. Và bật lên trênTouch. Nhưng làm thế nào ??)
MÃ Mã sản phẩm:
player.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true"
tools:context="tenkol.design.com.imbrecords.ActivityExoPlayer"
android:weightSum="1"
android:orientation="vertical">
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/surface_wrapper"
android:layout_weight="0.4">
<com.google.android.exoplayer.VideoSurfaceView
android:id="@+id/surface_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" />
<View
android:id="@+id/shutter"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black" />
</FrameLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.6"
android:orientation="vertical">
<FrameLayout
android:id="@+id/controls_wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp">
</FrameLayout>
<HorizontalScrollView
android:id="@+id/myGallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="0dp">
<LinearLayout
android:id="@+id/channelsScrollView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingTop="5dp"
/>
</HorizontalScrollView>
</LinearLayout>
</LinearLayout>
mã với biến đổi:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (Global.getScreenOrientation(this) == Configuration.ORIENTATION_LANDSCAPE) {
//hide action bar
getSupportActionBar().hide();
if (myGallery != null) {
//hide HorizontalScrollView
myGallery.setVisibility(View.GONE);
}
//make surface fullscreen
surfaceWrapper.setLayoutParams(new LinearLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT, 0f));
controlsWrapper.setLayoutParams(new LinearLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT, 0f));
//hide mediaController
mc.hide();
controlsWrapper.setVisibility(View.GONE);
}
if (Global.getScreenOrientation(this) == Configuration.ORIENTATION_PORTRAIT) {
//and here restore everything
getSupportActionBar().show();
if (myGallery != null) {
myGallery.setVisibility(View.VISIBLE);
}
surfaceWrapper.setLayoutParams(new LinearLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.FILL_PARENT, 0.4f));
controlsWrapper.setLayoutParams(new LinearLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT, 0.6f));
controlsWrapper.setVisibility(View.VISIBLE);
}
}
gì tôi đã cố gắng:
1) Khi Cảnh: tạo một mediaController và ràng buộc để xem gốc (không hoạt động):
mediaController.setAnchorView(root);
mediaController.setMediaPlayer(player.getPlayerControl());
mediaController.setEnabled(true);
mediaController.show(3);
2) Khi Cảnh: thay đổi neo của trước MediaController
(Nah).
mc.setAnchorView(surfaceWrapper);
mc.show(3);
3) giao diện surfaceChanged
(vẫn không có):
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
if (Global.getScreenOrientation(this) == Configuration.ORIENTATION_LANDSCAPE) {
mc.setAnchorView(surfaceWrapper);
mc.setMediaPlayer(player.getPlayerControl());
mc.setVisibility(View.VISIBLE);
mc.show(3);
}
}
Vì vậy, làm thế nào tôi có thể thay đổi neo 's MediaController
-SurfaceView
động trong chế độ LANDSCAPE
?
P.S. Cho biết có cần thêm mã hay không.
Tôi đang đối mặt với cùng một vấn đề, bạn đã tìm ra cách thực hiện? – Prudhvi
@prudhvi, Rất tiếc là không. Nhưng tôi đã giải quyết vấn đề này một cách khó khăn. Tôi đã tạo 2 'MediaControllers' hoạt động như một và thiết lập các neo khác nhau cho chúng. Và bí quyết là giấu một trong số họ khi định hướng thay đổi. Vì vậy, trong chế độ phong cảnh tôi đã kiểm soát liên kết với 'VideoSurface' và trong bộ điều khiển chế độ chân dung được neo vào' LinearLayout' với các nút và nội dung. – AnZ
Bạn có đang thực hiện việc này cùng với MediaPlayer Android chuẩn không? –