我为每个方向制作了两个样式文件,如下图所示,
但是问题是,当我翻转手机(例如,将方向更改为横向)时,我什么都没改变,我尝试在setContentView()
方法内使用onConfigurationChanged
方法,但没有达到我想要的
这是我的布局:
1-默认样式:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="ExoMediaButton">
<item name="android:scaleType">centerCrop</item>
</style>
<style name="ExoMediaButton.Previous">
<item name="android:visibility">gone</item>
</style>
<style name="ExoMediaButton.Next">
<item name="android:visibility">gone</item>
</style>
<style name="ExoMediaButton.Play">
<item name="android:src">@drawable/ic_play_button</item>
</style>
<style name="ExoMediaButton.Pause">
<item name="android:src">@drawable/ic_pause</item>
</style>
<style name="ExoMediaButton.FastForward">
<item name="android:src">@drawable/ic_fast_forward</item>
</style>
<style name="ExoMediaButton.Rewind">
<item name="android:src">@drawable/ic_fast_forward_back</item>
</style>
</resources>
2-纵向样式:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="listStyle">
<item name="android:layout_height">221dp</item>
<item name="android:layout_width">match_parent</item>
</style>
<style name="videoPlayerStyle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">216dp</item>
<item name="android:layout_marginStart">8dp</item>
<item name="android:layout_marginEnd">8dp</item>
<item name="android:layout_marginTop">8dp</item>
</style>
</resources>
3-代表风景:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="listStyle">
<item name="android:layout_height">0dp</item>
<item name="android:visibility">gone</item>
</style>
<style name="adsStyle">
<item name="android:visibility">gone</item>
</style>
<style name="videoPlayerStyle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
<item name="android:layout_marginStart">0dp</item>
<item name="android:layout_marginEnd">0dp</item>
<item name="android:layout_marginTop">0dp</item>
</style>
</resources>
有人可以给我们一些建议或帮助我吗?
答案 0 :(得分:0)
检查清单文件中的活动是否已指定configChanges =“ orientation”。
<activity android:name=".MyActivity"
android:configChanges="orientation"
android:label="@string/app_name">
答案 1 :(得分:0)
尝试这样的事情:
步骤1:添加一个宽度设置为guideline
的{{1}}并为其指定一个match_parent
,然后:
id
说明::此代码写在按钮 binding.btnFullScreen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (binding.imgFullScreen.getVisibility() == View.VISIBLE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
...
ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams)
binding.guideline6.getLayoutParams();
lp.guidePercent = 1;
...
}
}, 300);
}
else if (binding.imgNormalScreen.getVisibility() == View.VISIBLE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
....
ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams)
binding.guideline6.getLayoutParams();
lp.guidePercent = 0.4f;
....
}
}, 300);
}
}
});
内。我将视频播放器的宽度和高度设置为match_parent,直到达到我的指导原则。因此,代码onClick()
意味着该准则将到达屏幕的末尾,从而使视频播放器进入全屏状态,而类似的lp.guidePercent = 1;
则意味着该准则将到达屏幕的40%,从而使其变得更小,如您在代码中所见,因此,我正在设置方向。
我不知道这是否对您有用,但这就是我的做法。