我有一个像这样的Android布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView1"
android:text="00:00"
android:textSize="100dp"
android:fontFamily="sans-serif-thin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" />
<TextView
android:id="@+id/hangRest"
android:text=""
android:textSize="45dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/floating_shape"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="15dp"
android:layout_marginBottom="15dp"
android:background="@drawable/start_button"
android:elevation="30dp"
android:layout_gravity="bottom|right" />
<ImageView
android:id="@+id/reset_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginBottom="15dp"
android:src="@drawable/reset_button"
android:elevation="30dp"
android:layout_gravity="bottom|left" />
</FrameLayout>
</LinearLayout>
这是&#34; start_button&#34;资源:
<?xml version="1.0" encoding="UTF-8" ?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<size android:width="65dp" android:height="65dp"/>
<solid android:color="#009525"/>
</shape>
</item>
<item android:top="15dp" android:right="15dp" android:bottom="15dp" android:left="15dp">
<bitmap android:src="@drawable/triangle"/>
</item>
</layer-list>
问题在于我希望我的按钮大小设置为椭圆设置的65dp x 65dp,但是位图似乎没有与我想要放入的边距配合(见下图) )。如何强制位图允许自身调整大小(捕捉到65dp x 65dp,减去15dp边距)?
答案 0 :(得分:1)
那不是xml drawables的用途。 Drawable的想法是它可以扩展到任何尺寸。如果需要精确尺寸的图像,请使用ImageView并设置宽度。如果您想要具有背景的精确尺寸图像,请使用带有背景设置的ImageView并使用填充来设置其周围的填充。如果需要,请设置适当的比例类型,如centerInside。
答案 1 :(得分:0)
public Bitmap getBitmap(Bitmap bitmap, int newHeight, int newWidth) {
int height = bitmap.getHeight();
int width = bitmap.getWidth();
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
Matrix matrix = new Matrix();
// here we do resize the bitmap
matrix.postScale(scaleWidth, scaleHeight);
// and create new one
Bitmap newBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false);
return newBitmap;
}