Если я поместил изображения с разным разрешением в разные папки с возможностью рисования, он не растянется, и он отобразит изображения из одной из выпадающих папок. Тем не менее, фотографии все же погасли.Как масштабировать растровые изображения?
Если я поместил фотографии только в одну папку с возможностью копирования, по некоторым причинам картинки будут растянуты намного больше, чем фактический размер телефона. Это похоже на среднюю часть фотографий.
Я также заметил, что рамки пропускаются.
Может кто-нибудь, пожалуйста, дайте мне несколько советов?
Спасибо, и я очень благодарен вам за помощь.
главный класс:
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();
}
}
}
Edit: фиксированный заголовок
Edit: я удалил лак черного цвета. Это не должно быть там
Большое спасибо за ответ. Все, что я хочу сделать, это показать изображения в виде слайд-шоу, и мне нравится, чтобы все изображения были растянуты до правильного размера/размера на всех телефонах Android. Это означает, что предполагается получить размер телефона, а затем растянуть изображения соответственно. –
Хм, есть ли причина, по которой вы конкретно рисуете на холсте, а не просто загружаете ImageViews? Это позволяет вам устанавливать определенные форматы макетов, такие как fitXY и т. Д., Которые масштабируют ваши изображения до размера макета, который вы им даете. – user2881881
Честно говоря, я получил некоторые мои коды в Интернете, поэтому я все еще пытаюсь понять их, так как я все еще новичок. Не могли бы вы показать мне, как это исправить? Спасибо –