我想旋转按钮/ TextViews /等.在屏幕方向改变,但我想保持布局不变.怎么做到呢?我正在使用LinearLayouts.
这就是我的意思:

在导航栏下添加了 UISearch 栏。我用
[videoSearchBar setFrame:CGRectMake(0, 64, 320, 44)];
Run Code Online (Sandbox Code Playgroud)
对于 ios 7。
在横向模式下,导航栏和搜索栏之间存在间隙。在早期版本中,它在没有 setFrame 的情况下正确显示。
在搜索栏下方有一个表格视图。
我看到在这个文件中:“dimens.xml”有两个属性:
<dimen name="activity_horizontal_margin">5dp</dimen>
<dimen name="activity_vertical_margin">10dp</dimen>
Run Code Online (Sandbox Code Playgroud)
有没有办法根据使用此文件的屏幕方向自动更改视图的边距?
或者这两个属性就像一个属性一样存在,每次方向更改时我都必须手动检查并将该属性设置为布局边距???
提前致谢!
我的应用程序与音乐有关,我使用的是 Android 4.2.2。通过在我的每个活动中指定以下行,我已将我的应用程序锁定为横向模式:
android:screenOrientation="landscape"
Run Code Online (Sandbox Code Playgroud)
现在,当我在横向模式下打开我的音乐应用程序时,用按键锁定设备的屏幕,在纵向模式下旋转设备,然后解锁设备的屏幕会导致我的音乐应用程序抛出异常。
我尝试了多种解决方案,例如在清单中设置 configChanges
android:configChanges="keyboardHidden|orientation|screenSize"
Run Code Online (Sandbox Code Playgroud)
但似乎没有任何效果。我在这里发布异常的堆栈跟踪。请帮我解决这个问题。
注意:保持音乐应用程序处于横向模式、锁定设备和解锁它不会对应用程序产生任何影响。应用程序像以前一样工作,还显示锁定设备之前打开的活动。
我想要做什么:我想将我的应用程序(只是我的应用程序而不是整个设备)锁定为横向模式,同时不监听设备的任何方向变化。
谢谢!
堆栈跟踪:
E/AndroidRuntime(17468): FATAL EXCEPTION: main
E/AndroidRuntime(17468): java.lang.RuntimeException: Unable to start activity ComponentInfo com.android.music/com.android.music.MediaPlaybackActivity}: java.lang.NullPointerException
E/AndroidRuntime(17468): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
E/AndroidRuntime(17468): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
E/AndroidRuntime(17468): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3692)
E/AndroidRuntime(17468): at android.app.ActivityThread.access$700(ActivityThread.java:141)
E/AndroidRuntime(17468): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1240)
E/AndroidRuntime(17468): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(17468): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(17468): at android.app.ActivityThread.main(ActivityThread.java:5041)
E/AndroidRuntime(17468): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(17468): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(17468): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
E/AndroidRuntime(17468): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
E/AndroidRuntime(17468): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(17468): Caused by: java.lang.NullPointerException
E/AndroidRuntime(17468): at com.android.music.MediaPlaybackActivity.onCreate(MediaPlaybackActivity.java:232)
E/AndroidRuntime(17468): at android.app.Activity.performCreate(Activity.java:5104)
E/AndroidRuntime(17468): …Run Code Online (Sandbox Code Playgroud) 我的应用 onConfigurationChanged 不再被调用。我已将我的 SDK API 更新为 Lollipop,并将 SDK 级别 im AndroidManifest 设置如下:
<uses-sdk android:minSdkVersion="12" android:targetSdkVersion="22"/>
Run Code Online (Sandbox Code Playgroud)
我不知道我的更改是否是它不再工作的原因(现在工作了大约 2 年没有问题)。
在我的代码中覆盖“onConfigurationChanged”:
@Override
public void onConfigurationChanged(Configuration newConfig) {
Log.v("Debug orientchange", "in onConfigurationChanged"); // <-- is never called !
Run Code Online (Sandbox Code Playgroud)
在我的 AndroidManifest 中,我声明:
<activity android:name=".ChronicBrowser" android:configChanges="orientation|keyboardHidden" android:label="@string/app_name">
Run Code Online (Sandbox Code Playgroud)
当我用我的设备改变方向时,Activity 会重新启动。过去,我通过已经提到的配置/编码来防止这种情况发生。
有谁知道发生了什么变化或我做错了什么/错过了什么?
谢谢
我的活动已锁定在 LANDSCAPE 上。但我仍然需要知道设备的方向。所以我选择使用传感器。我有以下代码
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_NORMAL);
...
@Override
public void onSensorChanged(SensorEvent event) {
float[] values = event.values;
// Movement
float azimuth = values[0];
float pitch = values[1];
float roll = values[2];
if ((-110 <= pitch && pitch <= -70) || (70 <= pitch && pitch <= 110)) {
//PORTRAIT MODE
portraitPitch = true;
landscapePitch = false;
Log.d(TAG, "portrait mode: pitch = " + pitch);
} else if ((-20 <= pitch && pitch <= 20) || (-200 …Run Code Online (Sandbox Code Playgroud) android orientation screen-orientation android-sensors android-orientation
来自瑞典的海吉,
我正在尝试参考帖子中的代码:Powershell script to change screen Orientation
该脚本有效。目标是确保旋转为横向(默认)或纵向顺时针 90 度。
我需要将当前代码更改为仅允许 2 个值,或者确保脚本仅运行一次。
不管怎样,我需要知道 CDS_UPDATEREGISTRY 的注册表项存储在哪里。尽管我无法弄清楚每次轮换的值更改存储在注册表中的哪个位置?
有谁知道这些值存储在哪里?
代码:
Function Set-ScreenResolutionAndOrientation {
<#
.Synopsis
Sets the Screen Resolution of the primary monitor
.Description
Uses Pinvoke and ChangeDisplaySettings Win32API to make the change
.Example
Set-ScreenResolutionAndOrientation
#>
$pinvokeCode = @"
using System;
using System.Runtime.InteropServices;
namespace Resolution
{
[StructLayout(LayoutKind.Sequential)]
public struct DEVMODE
{
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]
public string dmDeviceName;
public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public int dmFields;
public …Run Code Online (Sandbox Code Playgroud) 我正在使用下面的方法设置背景图像.当我旋转设备时,背景重复,这是有意义的,因为它不是图像.如果这是我设置背景图像的方式,如何处理方向更改?
- (void)viewDidLoad {
[super viewDidLoad];
UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]];
self.view.backgroundColor = background;
[background release];
}
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,它使用AsyncTask从服务器获取json文件,因此显示进度条.但在显示进度条和方向更改时,应用程序崩溃显示VIEW NOT ATTACHED错误或HAS LEAKED WINDOW错误.
如何摆脱这些错误?否则,应用程序在AsyncTask上运行正常.
我有2个视图控制器,VC1和VC2.
VC1目前以模态方式呈现VC2.
VC1唯一的方向应该是纵向,但VC2可以具有所有方向.
问题是当我在VC2中并且我旋转到横向模式然后解雇时,VC1也处于横向模式!那应该永远不会发生!
注意:没有导航控制器或UITabbarcontroller
我正在添加我的代码.
Appdelagate:
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
if let rootViewController = self.topViewControllerWithRootViewController(rootViewController: window?.rootViewController) {
if (rootViewController.responds(to: Selector(("canRotate")))) {
// Unlock landscape view orientations for this view controller
return .allButUpsideDown
}
}
// Only allow portrait (standard behaviour)
return .portrait;
}
private func topViewControllerWithRootViewController(rootViewController: UIViewController!) -> UIViewController? {
if (rootViewController == nil) { return nil }
if (rootViewController.isKind(of: (UITabBarController).self)) {
return topViewControllerWithRootViewController(rootViewController: (rootViewController as! UITabBarController).selectedViewController)
} else if (rootViewController.isKind(of:(UINavigationController).self)) …Run Code Online (Sandbox Code Playgroud) android ×6
ios ×3
iphone ×2
layout ×2
crash ×1
dev-mode ×1
java ×1
objective-c ×1
orientation ×1
rotation ×1
swift ×1
uisearchbar ×1