Android 如何缩放位图?
如果我将不同分辨率的图片放在不同的可绘制文件夹中,它将不会拉伸,并且会从其中一个可绘制文件夹中选择图片。然而,照片还是被拍下来了 如果我只将图片放在一个可绘制文件夹中,由于某些原因,图片将被拉伸到比实际手机尺寸大得多的位置。好像我只能看到照片的中间部分 我还注意到帧被跳过 有人能给我一些建议吗 谢谢你,我非常感谢你的帮助 主要类别:Android 如何缩放位图?,android,live-wallpaper,image-scaling,bitmapfactory,android-bitmap,Android,Live Wallpaper,Image Scaling,Bitmapfactory,Android Bitmap,如果我将不同分辨率的图片放在不同的可绘制文件夹中,它将不会拉伸,并且会从其中一个可绘制文件夹中选择图片。然而,照片还是被拍下来了 如果我只将图片放在一个可绘制文件夹中,由于某些原因,图片将被拉伸到比实际手机尺寸大得多的位置。好像我只能看到照片的中间部分 我还注意到帧被跳过 有人能给我一些建议吗 谢谢你,我非常感谢你的帮助 主要类别: public class main_activity extends WallpaperService { @Override public
public class main_activity extends WallpaperService {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public Engine onCreateEngine() {
eturn new wallpaperEngine();
}
class wallpaperEngine extends Engine implements
SharedPreferences.OnSharedPreferenceChangeListener{
private final Handler mhandler = new Handler();
private final Runnable drawrunnable = new Runnable()
{
public void run() {
drawFrame();
}
};
private boolean mVisible;
private SharedPreferences mPrefs;
private int i = 0;
int[] pirates = {
};
wallpaperEngine()
{
mPrefs = main_activity.this.getSharedPreferences(SHARED_PREFS_NAME, 0);
mPrefs.registerOnSharedPreferenceChangeListener(this);
onSharedPreferenceChanged(mPrefs, null);
}
public void onSharedPreferenceChanged(SharedPreferences mPrefs2, String key) {
}
@Override
public void onCreate(SurfaceHolder holder){
super.onCreate(holder);
}
@Override
public void onDestroy() {
super.onDestroy();
mhandler.removeCallbacks(drawrunnable);
}
@Override
public void onVisibilityChanged(boolean visible) {
mVisible = visible;
if (visible) {
drawFrame();
} else {
mhandler.removeCallbacks(drawrunnable);
}
}
@Override
public void onSurfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
super.onSurfaceChanged(holder, format, width, height);
drawFrame();
}
@Override
public void onSurfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
super.onSurfaceCreated(holder);
}
@Override
public void onSurfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
super.onSurfaceDestroyed(holder);
mVisible = false;
mhandler.removeCallbacks(drawrunnable);
}
@Override
public void onOffsetsChanged(float xOffset, float yOffset, float xStep,float yStep, int xPixels, int yPixels) {
drawFrame();
}
@Override
public void onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
}
private void drawFrame() {
// TODO Auto-generated method stub
final SurfaceHolder holder = getSurfaceHolder();
Canvas c = null;
try {
c = holder.lockCanvas();
if (c != null) {
drawPirate(c);
}
} finally {
if (c != null)
holder.unlockCanvasAndPost(c);
}
mhandler.removeCallbacks(drawrunnable);
if (mVisible) {
mhandler.postDelayed(drawrunnable);
}
}
private void drawPirate(Canvas c) {
// TODO Auto-generated method stub
Bitmap icon;
c.drawBitmap(icon, matrix, null);
icon.recycle();
}
}
}
编辑:固定标题
编辑:我去掉了黑色的油漆。它不应该在那里您可以使用以下方法给出具有所需亮度的rect:
public void drawBitmap (Bitmap bitmap, Rect src, RectF dst, Paint paint)
位图将自动转换为矩形尺寸。
或者用大小值填充刚刚创建的矩阵,使其缩放。我假设您可以从屏幕或插入的视图中获取大小值
如果你不具体说明你想做什么,就很难再提供帮助了
更多信息:非常感谢您的回复。我想做的就是以幻灯片的形式显示图片,我希望所有的图片都能在所有Android手机上拉伸到正确的尺寸/大小。这意味着它应该得到手机的大小,然后相应地拉伸图片。嗯,有什么原因让你特别在画布上画画,而不仅仅是加载图像视图?这些允许你设置某些布局格式,如fitXY等,可以将图像缩放到你给它们的布局大小。老实说,我在网上得到了一些代码,所以我仍然在尝试理解它们,因为我还是一个新手。你能告诉我怎么修吗?谢谢你,你打算如何更改幻灯片上的图像?