以下代码能让背景图片不被拉伸吗 Bitmap backgroundImage = BitmapFactory.decodeResource(getResources(), R.drawable.background_image); drawingView.setBackground(new BitmapDrawable(getResources(), backgroundImage)); // 设置 DrawingView 为当前 Activity 的内容视图 setContentView(drawingView);
时间: 2024-03-04 07:49:30 浏览: 198
是的,你可以在设置背景时设置 `scaleType` 属性来保持背景图片不被拉伸。以下是一个示例代码,你可以将其添加到你的 Activity 中以保持背景图片的原样:
```java
Bitmap backgroundImage = BitmapFactory.decodeResource(getResources(), R.drawable.background_image);
BitmapDrawable drawable = new BitmapDrawable(getResources(), backgroundImage);
drawable.setGravity(Gravity.CENTER);
drawingView.setBackground(drawable);
```
这里的 `setGravity` 方法将图片的对齐方式设置为居中,从而使图片保持原始大小和比例。这将覆盖默认设置,即将图片拉伸以填充整个视图。请注意,这里的 `Gravity.CENTER` 是一个枚举值,表示将图片放置在视图的中心。你可以根据需要更改此值。
相关问题
android png图片转为bitmap设置给imageView后,从imageView中作为drawable取出,再调用Drawable.draw(Canvas canvas)将其绘制,透明部分全变成了黑色,如何保留透明度?
在 Android 中,PNG 图片是支持透明度的,因此在将 PNG 图片转为 Bitmap 时,透明部分也应该被正确地保留下来。如果透明部分变成了黑色,可能是由于以下原因导致的:
1. ImageView 的背景色设置为了黑色,导致透明部分变成了黑色。可以尝试将 ImageView 的背景色设置为透明色,即 android:background="@android:color/transparent"。
2. 在将 Bitmap 转为 Drawable 时,使用了错误的方法。正确的方法是使用 BitmapDrawable,而不是使用普通的 Drawable。BitmapDrawable 会正确地处理 Bitmap 中的透明部分。示例代码如下:
```
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
BitmapDrawable drawable = new BitmapDrawable(getResources(), bitmap);
imageView.setImageDrawable(drawable);
```
3. 在调用 Drawable.draw(Canvas) 绘制时,使用了错误的透明度设置。正确的方法是在绘制前调用 Canvas.saveLayerAlpha() 方法保存透明度,绘制完成后再调用 Canvas.restore() 方法恢复透明度。示例代码如下:
```
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
BitmapDrawable drawable = new BitmapDrawable(getResources(), bitmap);
Canvas canvas = new Canvas();
canvas.saveLayerAlpha(0, 0, canvas.getWidth(), canvas.getHeight(), 255, Canvas.ALL_SAVE_FLAG);
drawable.draw(canvas);
canvas.restore();
```
以上是可能导致 PNG 图片透明部分变成黑色的原因和解决方法,可以根据具体情况进行调试和处理。
请给出代码 onCreate 方法中,创建一个 DrawingView 对象,并将其设置为当前 Activity 的内容视图。加载一个图片作为固定背景,不被拖动
好的,根据您的要求,我理解您需要在 onCreate 方法中创建一个 DrawingView 对象,并将其设置为当前 Activity 的内容视图。同时,您需要在该视图上加载一张图片作为固定背景,不被拖动。以下是可能的实现方式:
```java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 创建 DrawingView 对象
DrawingView drawingView = new DrawingView(this);
// 加载图片作为固定背景
Bitmap backgroundImage = BitmapFactory.decodeResource(getResources(), R.drawable.background_image);
drawingView.setBackground(new BitmapDrawable(getResources(), backgroundImage));
// 设置 DrawingView 为当前 Activity 的内容视图
setContentView(drawingView);
}
}
```
在上述代码中,我们首先创建了一个 DrawingView 对象,并将其传入 setContentView 方法中,以设置其为当前 Activity 的内容视图。接着,我们使用 BitmapFactory 类的 decodeResource 方法加载了一张图片资源,并将其转化为 Bitmap 对象。最后,我们将该 Bitmap 对象包装成一个 BitmapDrawable 对象,并将其设置为 DrawingView 的背景,以实现固定背景不被拖动的效果。
阅读全文