上次我們講了將圖片匯入,以及將圖片分成了9份,并對應其圖片索引,今天講一下圖片的亂序設定,以及相關界面設定

我們先來看一下界面圖

上面這個圖就是我們今天的目標
每個圖中間和四周的間隙需要我們設定
整個游戲的畫面寬度也需要我們設定
此外,亂的圖片也是需要我們設定的
(原圖為下)

我們先看幾個變數:

1. 關于margin和padding的區別,推薦大家看一下:
http://www.cnblogs.com/kissazi2/p/3309109.html
這里面講的還是很清楚的,

上面是初始化內容
其中,
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,3,
getResources().getDisplayMetrics());
這個方法是轉化為標準尺寸的一個函式,這里COMPLEX_UNIT_DIP是單位,3是數值,指的就是3sp,我們這樣初始化是因為要適應不同的手機,如果不設定的話,可能效果不一樣,
第二個初始化內容是找到上下左右padding的最小值,作為我們的padding,
2. t 布局中有很多特殊的屬性,通常在載入布局之前,在相關的xml檔案中進行靜態設定即可, 但是,在有些情況下,我們需要動態設定布局的屬性,在不同的條件下設定不同的布局排列方式,這時候就需要用到RelativeLayout.LayoutParams.addRule() 方法,該方法有兩種多載方式: addRule(int verb) :用此方法時,所設定節點的屬性不能與其它兄弟節點相關聯或者屬性值為布林值(布林值的屬性,設定時表示該屬性為 true,不設定就默認為 false),比如:addRule(RelativeLayout.CENTER_VERTICAL) 就表示在 RelativeLayout 中的相應節點是垂直居中的, addRule(int verb, int anchor) :該方法所設定節點的屬性必須關聯其它的兄弟節點或者屬性為布林值( 屬性為布林值時,anchor 為 RelativeLayout.TRUE 表示 true,anchor 為0表示 false),比如:addRule(RelativeLayout.ALIGN_LEFT, R.id.date) 就表示 RelativeLayout 中的相應節點放置在一個 id 值為 date 的兄弟節點的左邊,
3. 在編程的時候很多時候需要動態顯示一些內容,在動態添加View的時候,主要使用addView方法,
查閱到了相關知識,選擇一個講解的不錯的給大家
addView方法簡介
例子如下:
Activity代碼:
public class helloWorld extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView( R.layout.main ); // 取得LinearLayout 物件 LinearLayout ll = (LinearLayout)findViewById(R.id.viewObj); // 將TextView 加入到LinearLayout 中 TextView tv = new TextView(this); tv.setText(Hello World); ll. addView ( tv ); // 將Button 1 加入到LinearLayout 中 Button b1 = new Button(this); b1.setText(取消); ll. addView ( b1 ); // 將Button 2 加入到LinearLayout 中 Button b2 = new Button(this); b2.setText(確定); ll. addView ( b2 ); // 從LinearLayout 中移除Button 1 ll. removeView ( b1 ); } }
4.

這個是加載圖片,
BitmapFactory.decodeResource(?,?)這個帶兩個引數的方法:第一個引數是包含你要加載的位圖資源檔案的物件(一般寫成 getResources()就ok了);第二個時你需要加載的位圖資源的Id,
BitmapFactory.decodeResource(?,?,?)帶三個引數的方法:前兩個和上面的方法一樣,第三個引數應該是對你要加載的位圖是否需要完整顯示,如果你只需要部分,可以在這里定制,
5.

Comparator是個介面,可重寫compare()及equals()這兩個方法,用于比較功能;如果是null的話,就是使用元素的默認順序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f,g這樣,當然數字也是這樣的,
compare(a,b)方法:根據第一個引數小于、等于或大于第二個引數分別回傳負整數、零或正整數,
equals(obj)方法:僅當指定的物件也是一個 Comparator,并且強行實施與此 Comparator 相同的排序時才回傳 true,
Collections.sort(list, new PriceComparator());的第二個引數回傳一個int型的值,就相當于一個標志,告訴sort方法按什么順序來對list進行排序,
我們上面采用的是亂數,所以排的序是亂序,
到這里就完成了上面的目標
END
原創不易,請多多支持與關注~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/263355.html
標籤:其他
