如果我将具有不同分辨率的图片放入不同的可绘制文件夹中,它将不会拉伸,它将从其中一个可绘制文件夹中选择图片。但是,图片仍然没有出现。
如果我将图片放入1个可绘制文件夹中,由于某些原因,图片将比实际手机尺寸拉伸得更大。这就像我只能看到图片的中间部分。
我还注意到跳过了框架。
有人可以给我一些建议吗?
谢谢,非常感谢您的帮助。
主要课程:
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();
}
}
}
修改:固定标题
编辑:我删除了Paint in Black。它不应该在那里
答案 0 :(得分:1)
您可以使用以下方法为矩形提供所需的dimmensions:
public void drawBitmap (Bitmap bitmap, Rect src, RectF dst, Paint paint)
位图将自动转换为矩形尺寸。 或者实际用尺寸值填充刚创建的矩阵,使其缩放。大小值我会假设您可以从屏幕或插入的视图中获取。
如果你没有指明你想要做什么,那么很难再帮助你了。
更多信息:http://developer.android.com/reference/android/graphics/Canvas.html