我有一个片段,在30%的屏幕上显示一些图像。如果image.height大于image.width,我想将图像旋转90度。但是,在该操作之后,图像并没有完全填充碎片-旋转后的“新”宽度与之前的高度匹配,因此图像仅占据碎片中间的部分。我怎样才能使它成为一个匹配的片段?我做错了什么或错过了什么?
这是没有旋转时的样子:
这是在旋转之后:
这就是我想要的:
代码如下:
@Override
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setImageFittedToDisplay(view);
}
public void setImageFittedToDisplay(View view) {
int height = getDisplayMetrics().heightPixels;
ViewGroup.LayoutParams params = view.getLayoutParams();
params.height = ((Double) (height * 0.3)).intValue();
view.setLayoutParams(params);
ImageView image = view.findViewById(R.id.picture);
image.setDrawingCacheEnabled(true);
int w = image.getDrawable().getIntrinsicWidth();
int h = image.getDrawable().getIntrinsicHeight();
if(h > w) {
image.setRotation(90f);
}
ViewGroup.LayoutParams imageParams = image.getLayoutParams();
imageParams.height = ActionBar.LayoutParams.WRAP_CONTENT;
imageParams.width = ActionBar.LayoutParams.WRAP_CONTENT;
image.setLayoutParams(imageParams);
}
下面是片段的.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/APOD_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
xmlns:app="http://schemas.android.com/apk/res-auto">
<ImageView
android:id="@+id/picture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/cool_pic"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/separator"
android:layout_width="match_parent"
android:layout_height="10dp"
android:background="@color/colorSeparator"
app:layout_constraintBottom_toBottomOf="@+id/picture"
app:layout_constraintTop_toBottomOf="@+id/picture" />
</androidx.constraintlayout.widget.ConstraintLayout>
暂无答案!
目前还没有任何答案,快来回答吧!