onOffsetsChanged: move Bitmap

拈花ヽ惹草 提交于 2019-12-01 07:57:04

问题


i want my Bitmap that has the height of the screen and has a bigger width than the screen to be moved a little bit to the right or left if the user changes the desktop so he can see the entire image.

Here is my code that just works partially:

        int x = -1*(int)((xOffset*bmp.getWidth()));
        canvas.drawBitmap(bmp, x, 0, null);

thank you!


回答1:


You get exact pixel values via the variables xPixels and yPixels in onOffsetsChanged(). See my answer here: android live wallpaper rescaling

For example, in onOffsetsChanged(), you can set a private class variable

mPixels = xPixels;

Then, in your draw routine

holder = getSurfaceHolder();
c = holder.lockCanvas();
c.translate(mPixels, 0f);
// c.drawBitmap ... goes here :-)

Typically, you will want a bitmap twice the width of your screen, with your artwork centered in the middle. For example: 320 pixel width screen -> 640 pixel width bitmap with "center" from 160 to 480. mPixels will be 0 at the left most launcher screen (of 5), -160 at the center, and -320 at the rightmost screen.



来源:https://stackoverflow.com/questions/6573451/onoffsetschanged-move-bitmap

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!