[英]android live wallpaper rescaling
我正在學習如何制作動態壁紙,但是我有一個困境,我敢肯定所有剛開始的人也都有。
分辨率屏幕的尺寸太多了,如何僅用一套代碼就所有版本的代碼進行縮放? 我知道它已經完成了,因為我在很多APK中看到了APK中的圖像,並且它們被重新縮放。
如果只是一幅圖像,不需要任何簡單的定位,但是我的問題是我必須重新調整背景圖像的大小以適合所有設備,那么我的動畫也適合該背景上某個x和y位置圖像可以放到合適的位置,因此看起來整個背景都在動畫中,但是只有一部分是動態的(我的方式是遠離300張逐幀動態壁紙的圖像)。
因此,背景圖像需要重新縮放,動畫也需要重新縮放到與背景圖像完全相同的百分比,並且它們必須位於特定的x和y位置。
任何幫助將不勝感激,所以我可以做到這一點。
我累了幾件事,以為我可以為所有示例做一個潔牙機:int scaler; 然后在onSurfaceChanged scaler = width / 1024; //如果較大的圖片是1024,那么我可以在任何地方使用它。 然后通過使用scaleBitmap通過將縮放器乘以圖像的高度和寬度來相應地縮放,並且還使用相同的縮放器來定位示例圖像x假設其為50,使用相同的東西對其進行縮放x =縮放器* 50; 下一個課程是應該注意的縮放和定位,只是如何將所有這些內容轉換成java,因為我是java的新手,我曾經為Flash和php編程,但這有很多不同,需要一些時間來適應。 接下來的事情是如何平移寬度,當您左右移動屏幕時,如何顯示圖像是我想出的下一個難題。 現在,即使寬度是表面顯示的兩倍,它也將顯示相同的寬度。 如果您有答案或在某個地方,我可以找到有關該信息的信息,將不勝感激。
好吧,嗯,我只能說“歡迎來到現實世界”。 您可以通過onSurfaceChanged將屏幕尺寸傳遞給您,是的,確定如何根據此數據縮放所有內容是您的工作。 這就是為什么他們付給我們大筆錢的原因。 :-)您將要確保您的資源足夠大以適合您打算支持的最大顯示,因此您將始終在縮小內容(失真比擴展內容要小得多)。
建議從此處“屏幕獨立性最佳做法”開始: http : //developer.android.com/guide/practices/screens_support.html
您有其他評論以尋求更多幫助...
祝你好運...喬治
PS我將再介紹一件事:您可能想檢索啟動器所需牆紙的“所需最小寬度”,因此您可以顯式理解xPixels中隱含的虛擬化。 例如,在我的引擎構造函數中
mContext = getApplicationContext();
mWM = WallpaperManager.getInstance(mContext);
mDW = mWM.getDesiredMinimumWidth();
我的設備有320像素寬度; 我得到mDW = 640; 當我從一個屏幕滾動到另一個屏幕時,xPixels每次更改80 ...因為四個滾動(跨越五個屏幕)應該使所顯示的圖稿數量翻倍(這種效果稱為“視差滾動”)。 最右邊的部分的xPixels等於0; (五個)中心部分的xPixels = -160,依此類推。
我已使用此代碼段縮放一個圖像以適合不同的屏幕尺寸。
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);
確保邊緣不包含重要信息,因為在某些屏幕比例下它將被縮小到圖片之外。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.