다른 해상도의 사진을 다른 드로어 블 폴더에두면 펼쳐지지 않고 드로어 블 폴더 중 하나의 픽처가 선택됩니다. 그러나 그림은 여전히 나옵니다.비트 맵을 스케일하는 방법?
그림을 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();
}
}
}
편집 : 고정 제목
편집 : 나는 블랙으로 페인트를 제거했습니다. 비트 맵이 자동으로 직사각형 크기로 변환됩니다
public void drawBitmap (Bitmap bitmap, Rect src, RectF dst, Paint paint)
: 당신이 사용하여 원하는 dimmensions와 RECT을 줄 수있다
감사 답장을 많이. 내가하고 싶은 것은 그림을 슬라이드 쇼로 표시하는 것 뿐이며 모든 사진이 모든 Android 휴대 전화에서 올바른 크기/크기로 늘어나는 것을 좋아합니다. 그것이 의미하는 바는 전화의 크기를 알아 내고 그에 따라 그림을 늘려야한다는 것입니다. –
흠, 이미지 뷰를로드하는 것뿐만 아니라 캔버스에 특별히 드로잉하는 이유가 있습니까? 이것들을 사용하면 fitXY와 같은 특정 레이아웃 형식을 설정할 수 있습니다. 이렇게하면 레이아웃 크기로 이미지를 확대 할 수 있습니다. – user2881881
솔직히, 나는 온라인에서 일부 코드를 가지고 있으므로, 아직 초보자이기 때문에 이해하려고 노력 중이다. 그걸 고칠 방법을 보여 주시겠습니까? 감사합니다. –