【发布时间】:2014-09-13 18:23:10
【问题描述】:
我创建了一个应用程序,它实际上使用洪水填充算法来填充位图中的颜色。我已经创建了一些位图 (200x200),但我不知道我应该创建的位图的确切大小,我希望位图覆盖全屏,当我缩放位图时,它们会变得模糊,并且洪水填充对它们不起作用。我看到一个使用 GridView 显示图像并单击图像启动新活动的应用程序,图像覆盖全屏。我怎样才能做到这一点。附件是我用来显示位图的 CustomImage。任何帮助将不胜感激。 已编辑:我知道 GridView 不会将图像放大到全屏,它使用另一个图像。该应用程序在不同的屏幕尺寸下表现相同,任何尺寸的图像填充屏幕而不影响质量。
公共类 CustomImage 扩展视图 {
public CustomImage(Context context) {
super(context);
} // end constructor
public CustomImage(Context context, int resource_id) {
super(context);
mPaint = new Paint();
mPaint.setColor(Color.WHITE);
mPoint = new Point();
mProgressIndicator = (ProgressIndicator) context;
mBitmap = BitmapFactory.decodeResource(getResources(), resource_id)
.copy(Bitmap.Config.ARGB_8888, true);
} // end constructor
@Override
protected void onDraw(Canvas canvas) {
// draw image
canvas.drawBitmap(mBitmap, 0, 0, mPaint);
} // end onDraw
@Override
public boolean onTouchEvent(MotionEvent event) {
int bWidth = mBitmap.getWidth();
int bHeight = mBitmap.getHeight();
mPoint.x = (int) event.getX();
mPoint.y = (int) event.getY();
mPoint.x = (mPoint.x > bWidth) ? (bWidth - 5) : mPoint.x;
mPoint.y = (mPoint.y > bHeight) ? (bHeight - 5) : mPoint.y;
switch (event.getAction()) {
// called when screen clicked i.e New touch started
case MotionEvent.ACTION_DOWN:
mProgressIndicator.updateProgress(0);
new Filler(mBitmap, mPoint, mPaint.getColor(), mBitmap.getPixel(
mPoint.x, mPoint.y), this).execute();
invalidate();
} // end Case
return true;
} // end onTouchEvent
public void setColor(int color) {
mPaint.setColor(color);
} // end setColor
} // 结束类
【问题讨论】:
标签: android bitmap fullscreen