android live墙纸重新缩放
我正在学习如何制作现场壁纸,但我有一个两难的选择,我相信所有刚开始的人都有 有这么多分辨率的屏幕尺寸,我怎么能只制作一套艺术品,在代码中对所有版本进行重新缩放?我知道这已经完成了,因为我在很多照片上看到了apk中的图像,它们被重新缩放 如果只是一个图像,不需要任何定位,这将很容易,但我的问题是,我必须重新缩放背景图像,以适应所有设备,我也有动画,适合在该背景图像上的某个x和y位置,以适应在适当的位置,所以看起来整个背景是动画,但只有部分是(我远离300张逐帧实时壁纸图片的方式) 因此,背景图像需要重新缩放,动画需要重新缩放到与背景图像相同的准确百分比,并且它们需要位于特定的x和y位置 如果有任何帮助,我将不胜感激,这样我就可以继续下去了android live墙纸重新缩放,android,screen-resolution,live-wallpaper,Android,Screen Resolution,Live Wallpaper,我正在学习如何制作现场壁纸,但我有一个两难的选择,我相信所有刚开始的人都有 有这么多分辨率的屏幕尺寸,我怎么能只制作一套艺术品,在代码中对所有版本进行重新缩放?我知道这已经完成了,因为我在很多照片上看到了apk中的图像,它们被重新缩放 如果只是一个图像,不需要任何定位,这将很容易,但我的问题是,我必须重新缩放背景图像,以适应所有设备,我也有动画,适合在该背景图像上的某个x和y位置,以适应在适当的位置,所以看起来整个背景是动画,但只有部分是(我远离300张逐帧实时壁纸图片的方式) 因此,背景图像需
我厌倦了一些事情,我想我会为所有东西制作一个缩放器例如:int scaler;然后在onSurfaceChanged scaler=width/1024;//如果更大的图像是1024。这将给我一个在任何地方都可以使用的比率。然后使用scaleBitmap将缩放器乘以图像的高度和宽度进行相应的缩放,并使用相同的缩放器r定位示例图像x假设为50,使用相同的东西x=scaler*50进行缩放;这应该考虑缩放和定位,如何将所有这些转换为java是下一课,因为我是java新手,我曾经为flash和php编程,但这有很大不同,需要一些时间来适应。下一件事是如何平移宽度,当你把屏幕从一边移到另一边时,如何使图像显示是我要解决的下一个难题。现在它只显示相同的宽度,不管是什么,即使宽度是表面显示的两倍。如果你有答案或在什么地方,我可以找到关于这一点的信息,我将不胜感激。嗯,嗯,我所能说的就是“欢迎来到现实世界”。你可以通过onSurfaceChanged将屏幕尺寸传递给你,是的,你的工作是找出如何根据这些数据扩展所有内容。这就是为什么他们给我们大笔钱的原因。:-) 您需要确保您的资源足够大,以适合您打算支持的最大显示,因此您将始终缩小内容(其扭曲程度远小于扩展内容) 建议从“屏幕独立性最佳实践”开始: 更多帮助请求中的其他评论
mContext = getApplicationContext();
mWM = WallpaperManager.getInstance(mContext);
mDW = mWM.getDesiredMinimumWidth();
我的设备有320像素宽;我得到mDW=640;当我从一个屏幕滚动到另一个屏幕时,Xpixel每次变化80…因为四个滚动(跨越五个屏幕)被认为是显示艺术品数量的两倍(这种效果称为“视差滚动”)。最右边的部分的Xpixel等于0;中间(共五个)部分有xPixels=-160等等。嗯,我只能说“欢迎来到现实世界”。你可以通过onsurfacechange将屏幕尺寸传递给你,是的,你的工作是找出如何根据这些数据缩放所有内容。这就是为什么他们付给我们一大笔钱的原因。:-) 您需要确保您的资源足够大,以适合您打算支持的最大显示,因此您将始终缩小内容(其扭曲程度远小于扩展内容) 建议从“屏幕独立性最佳实践”开始: 更多帮助请求中的其他评论
Bitmap image1, pic1;
image1 = BitmapFactory.decodeResource(getResources(), R.drawable.image1);
float xScale = (float) canvas.getWidth() / image1.getWidth();
float yScale = (float) canvas.getHeight() / image1.getHeight();
float scale = Math.max(xScale, yScale); //selects the larger size to grow the images by
//scale = (float) (scale*1.1); //this allows for ensuring the image covers the whole screen.
scaledWidth = scale * image1.getWidth();
scaledHeight = scale * image1.getHeight();
pic1 = Bitmap.createScaledBitmap(image1, (int)scaledWidth, (int)scaledHeight, true);