dintaifung


table td, table th {padding: 6px; border:1px solid #000000;}


silverwind1982 發表在 痞客邦 留言(0) 人氣()

trigonometry_001


table td, table th {padding: 6px; border:1px solid #000000;}


silverwind1982 發表在 痞客邦 留言(2) 人氣()




table td, table th {padding: 6px; border:1px solid #000000;}


silverwind1982 發表在 痞客邦 留言(0) 人氣()

Puzzle_Lena_orig



完成一個 Android App - Puzzle,類似拼圖,但是不太像。



一開始先載入 Lena 的圖片~




再對圖片作切割~




一格一格的格子可以弄亂~ 可以手動點選,也可以點選按鈕,以亂數自動弄亂~




再弄亂~




完成這個遊戲的目標,就是移動格子,把圖片恢復成未弄亂之前的狀態。





以下介紹在寫這個 App 會需要的技巧及面臨到的問題。




如何載入 Bitmap 圖片?

利用 BitmapFactory.decodeResource() 來 decode .bmp 圖片,接著再呼 Canvas.drawBitmap(),將此 bmp 畫到 Canvas 上,最後呼叫 ImageView.setImageDrawable()。



Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.lena);

Bitmap puzzleBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.RGB_565);

Canvas canvas = new Canvas(puzzleBitmap);

canvas.drawBitmap(bitmap, 0, 0, null);

imageView.setImageDrawable(new BitmapDrawable(getResources(), bitmap));




如何取得亂數?

利用 Random class。




Random rand = new Random();

int x = rand.nextInt(n); // x 為 0 ~ n-1 的亂數





如何讓 app 固定為直立模式,不會跟著手機旋轉?

在 AndroidManifest.xml 中,為該 Activity 加入 "portrait" 的屬性。




&ltactivity

...

android:screenOrientation="portrait"&gt




getLocationOnScreen() 或 getLocationInWindow() 無法成功?

程度不夠好,所以花了很久的時間作白工,才搞清楚,UI 相關的位置,不能在 onCreate() 或 onResume() 中呼叫,因為此時 layout 尚未真得被放置。



解決方式是不要在 onCreate() 或 onResume() 中呼叫,在其它 function 中呼叫,就會回傳正確的值。



自行定義了一個 class,以 array 的方式宣告變數後,發生 error: on a null object reference ?

這是因為 Object 在物件宣告後,尚未實體化,只有得到三個位址空間而已,所以不能直接使用。



解決方式是加上實體化的程式碼,完整如下:

MyClass[] myClass = new MyClass[3]
for(int i=0;i<3;i++) {
myClass [i] = new MyClass();
}






這邊插播,如果是 C++ 的話,程式碼是長這樣子的:

AClass *classArrayPointer = new AClass[7]; // 宣告,且實體化

delete [] classArrayPointer; // 需手動釋放記憶體



讀取 /sdcard 檔案,過到 System.err: java.io.FileNotFoundException: /storage/emulated/0/xxx.txt: open failed: EACCES (Permission denied)

Permission denied,權限不足。



在 AndroidManifest.xml 增加讀取外部儲存裝置(sdcard)的權限:


&ltuses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/&gt



silverwind1982 發表在 痞客邦 留言(0) 人氣()

Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。