如何在android中调整位图元素的大小

时间:2017-03-05 19:58:09

标签: android bitmap

我有一个像这样的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边距)?

enter image description here

2 个答案:

答案 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;
}