android - 图像未裁剪

标签 android image bitmap crop

我正在将 background 图像设置为 LinearLayout,如下所示:

1.back_xml:

<?xml version="1.0" encoding="UTF-8"?>
  <layer-list xmlns:android="http://schemas.android.com/apk/res/android">  
       <item android:drawable="@drawable/back" >
        </item>
    <item>
        <shape>
            <solid/>
            <stroke android:width="1dip" android:color="#225786" />
            <corners android:radius="10dip"/>
            <padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" />
        </shape>
    </item> 

<强>2。 tile.xml

    <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/pie_chart_background"
        android:tileMode="repeat">
    </bitmap>

现在我将 back.xml 设置为 backgroundLinearLayout 它工作正常。

我需要一个带有圆角图像和一个边框。但我只有圆角边框和不是图像 我的代码有什么问题是我遗漏了什么吗?

这是我的图片的样子:

enter image description here

最佳答案

在你的问题后面花了几个小时,我终于实现了,希望现在它能给你你想要的结果,请通过下面的代码让我知道它是否有效?

将适当的参数传递给下面的函数以获得带有您想要的颜色边框的圆角。

public static Bitmap getRoundedCornerImage(Bitmap bitmap, int cornerDips, int borderDips, Context context) {
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(),
                Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(output);

        final int borderSizePx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) borderDips,
                context.getResources().getDisplayMetrics());
        final int cornerSizePx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) cornerDips,
                context.getResources().getDisplayMetrics());
        final Paint paint = new Paint();
        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        final RectF rectF = new RectF(rect);


        paint.setAntiAlias(true);
        paint.setColor(0xFFFFFFFF);
        paint.setStyle(Paint.Style.FILL);
        canvas.drawARGB(0, 0, 0, 0);
        canvas.drawRoundRect(rectF, cornerSizePx, cornerSizePx, paint);


        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);


        paint.setColor((Color.RED)); // you can change color of your border here, to other color
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeWidth((float) borderSizePx);
        canvas.drawRoundRect(rectF, cornerSizePx, cornerSizePx, paint);

        return output;
    }

main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"

      />

</RelativeLayout>

OnCreate

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ImageView rl=(ImageView)findViewById(R.id.image);


    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.testing); // your desire drawable image.
    rl.setImageBitmap(getRoundedCornerImage(bitmap, 10, 10, this));

    }

原图

enter image description here

输出

enter image description here

以下链接帮助我实现我的目标:

Border over a bitmap with rounded corners in Android

Creating ImageView with round corners

How to make an ImageView to have rounded corners

How to set paint.setColor(int color)

关于android - 图像未裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14476261/

相关文章:

opencv - 如何在 OpenCV 中捕获桌面(即将位图转换为 Mat)?

android - 添加原始资源时遇到问题

android - 使用新的 MotionLayout 模仿 Snackbar + CoordinatorLayout + FAB

jquery - 使图像成为放大和缩小按钮

php - 如何在上传到 MySQL 数据库之前减小/压缩图像的大小

java - 将可绘制对象作为字节数组发送到android的jni部分

c++ - 在 StaticBitmap wxWidgets 上更改图像

android - 添加目标jvm后build.gradle android出现错误

Android 始终处于最活跃状态

javascript - 在 React 中更改 <img> 标签上的 src 时图像加载滞后