Articles of orientation

如何在onConfigurationChanged中获取根布局的新宽度/高度?

我们的一个视图将ScrollView作为其根布局。 当设备旋转并onConfigurationChanged() ,我们希望能够获得ScrollView的新宽度/高度。 我们的代码如下: @Override public void onConfigurationChanged(Configuration newConfig) { Log.d(TAG, “Width: ‘” + findViewById(R.id.scrollview).getWidth() + “‘”); Log.d(TAG, “Height: ‘” + findViewById(R.id.scrollview).getHeight() + “‘”); super.onConfigurationChanged(newConfig); Log.d(TAG, “Width: ‘” + findViewById(R.id.scrollview).getWidth() + “‘”); Log.d(TAG, “Height: ‘” + findViewById(R.id.scrollview).getHeight() + “‘”); } 我们的AndroidManifest.xml的相关部分如下所示: 最后,我们布局的相关部分如下所示: 在我们的Droid上,我们期望看到ScrollView的宽度在切换到横向时变为854,在切换回纵向时变为480(并且高度执行等效开关,减去菜单栏)。 但是,我们看到了相反的情况。 这是我们的LogCat: // Switching to landscape: 03-26 11:26:16.490: DEBUG/ourtag(17245): Width: ‘480’ // […]

平板电脑的肖像(Android-Layout)

所以我正在为Android制作应用程序,我想强制平板电脑的横向定位和手机的纵向定位。 然而,似乎我只能从我所看到的方向进行定位锁定,这违背了设备需要两个单独方向的目的。 平板电脑:风景手机:人像 更具技术性。 我在“res / layout-xlarge-land”中有一个用于在平板电脑上进行美化的布局,我在“res / layout”中有原始布局,我只想明确地使用layout-xlarge-land作为平板电脑。 没有别的,基本上只使用xlarge设备的横向。 谢谢!

如何在方向更改时保留EditText数据?

我有一个登录屏幕,其中包含2个用于用户名和密码的EditTexts。 我的要求是,在方向更改时,EditText中的输入数据(如果有)应保持原样,并且还应绘制新布局。 我有2个布局xml文件 – 一个在布局文件夹中,另一个在layout-land文件夹中。 我试图实现以下2种方法,但它们都不是完美的: (1)configChanges:keyboardHidden –在这种方法中,我没有在manifest文件中的configChanges中提供“orientation”。 所以我在onCreate()和onConfigurationChanged()方法中都调用了setContentView()方法。 它符合我的要求。 布局已更改,EditTexts中的输入数据也保持不变。 但它有一个很大的问题: 当用户单击“登录”按钮时,将显示ProgressDialog,直到收到服务器响应 。 现在,如果用户在ProgressDialog运行时旋转设备,则应用程序崩溃。 它显示一个exception,说“视图无法附加到窗口”。 我试图使用onSaveInstanceState处理它(它会在方向更改时被调用)但应用程序仍然崩溃。 (2)configChanges:orientation | keyboardHidden –在这种方法中,我在清单中提供“方向”。 所以现在我有两个场景: (a)如果我在onCreate()和onConfigurationChanged()中调用setContentView()方法,则相应地更改Layout,但EditText数据将丢失。 (b)如果我在onCreate()中调用setContentView()方法,而不是onConfigurationChanged(),则EditText数据不会丢失,但布局也不会相应地更改。 在这种方法中,甚至没有调用onSaveInstanceState()。 所以我处在一个非常令人生畏的境地。 有没有解决这个问题的方法? 请帮忙。 提前完成。

当方向发生变化时,会调用哪种活动方法?

当方向发生变化时,会调用生命周期的哪种方法? 我的应用程序执行onResume()方法或者可能重新加载整个活动,因为我设置了一个布尔值来检查它是否是第一次运行。 我已经阅读onConfigurationChanged()在方向发生变化时启动,是真的吗? 怎么办呢?

如何将ExifInterface与stream或URI一起使用

我正在编写一个应用程序,可以从Android的“通过共享”菜单发送照片URI。 你得到的URItypes是content://media/external/images/media/556但是ExifInterface一个标准的文件名。 那么如何读取该文件的Exif数据(我只想定位)呢? 这是我的(非工作)代码: Uri uri = (Uri)extras.getParcelable(Intent.EXTRA_STREAM); ContentResolver cr = getContentResolver(); InputStream is = cr.openInputStream(uri); Bitmap bm = BitmapFactory.decodeStream(is); // This line doesn't work: ExifInterface exif = new ExifInterface(uri.toString()); int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1); 任何帮助(除了“你必须写你自己的ExifInterface类”)赞赏!

如何在onConfigurationChanged中获取新的宽度/高度的根布局?

我们的一个视图有一个ScrollView作为它的根布局。 当设备旋转并onConfigurationChanged() ,我们希望能够获得ScrollView的新宽度/高度。 我们的代码如下所示: @Override public void onConfigurationChanged(Configuration newConfig) { Log.d(TAG, "Width: '" + findViewById(R.id.scrollview).getWidth() + "'"); Log.d(TAG, "Height: '" + findViewById(R.id.scrollview).getHeight() + "'"); super.onConfigurationChanged(newConfig); Log.d(TAG, "Width: '" + findViewById(R.id.scrollview).getWidth() + "'"); Log.d(TAG, "Height: '" + findViewById(R.id.scrollview).getHeight() + "'"); } 我们的AndroidManifest.xml的相关部分如下所示: <activity android:name=".SomeActivity" android:configChanges="keyboardHidden|orientation"> <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> 最后,我们的布局的相关部分如下所示: <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scrollview" android:layout_height="fill_parent" […]