跳到主要內容

發表文章

目前顯示的是 5月, 2017的文章

[隋堂筆記] Android 利用BaseAdapter來自訂ListView

BaseAdapter 可以讓使用者自己定義許多種 View ,像是 Spinner, ListView, GridView等,而且 可以重用View來節省資源 :使用setTag將View存起來,之後就可以利用getTag將數據取出來 Step1  在activity_main.xml中新增ListView 例如: Step2 在layout中新增list_content.xml,並排好想要的ListView item佈局 Step3 在MainActivity.java 新增一個類別BA並繼承BaseAdapter 透過繼承 BaseAdapter,我們可以重新覆寫4個方法:     public int getCount();     取得 ListView 列表 Item 的數量。通常數量就是從建構子傳入的陣列或是集合大小。     public Object getItem(int position);     取得 ListView 列表於 position 位置上的 Item。position 通常是資料在陣列或是集合上的位置。     public long getItemId(int position);     取得 ListView 列表於 position 位置上的 Item 的 ID,一般用 position 的值即可。     public View getView(int position, View view, ViewGroup viewGroup);     通常會設定與回傳View 作為顯示在這個 position 位置的 Item 的 View。 基本上只要處理兩個方法 getCount跟getView即可。 getCount回傳我所宣告的String陣列st1的長度。 在getView之前,要先取得LayoutInflater 再來要先宣告一個類別viewHolder,用來存放list_content.xml內所有元件的內容 接著判斷view是否為空,如果為空就要...

[隋堂筆記] SeekBar共用監聽器

目標:利用SeekBar來控制背景RGB的顏色 在 activity_main.xml中:     1,新增三個SeekBar     2,SeekBar的最大值要設為255     3,設定Layout及SeekBar的id 在MainActivity.java中:     1,宣告元件layout、SeekBar,並將元件指向為剛剛在XML中設定的元件     2,宣告OnSeekBarChangeListener,並將這個監聽器命名     3,在監聽器中的onProgressChanged方法內設定LinearLayout的BackgroundColor,其中R、G、B的數值是分別從seekbar-sbR、sbG、sbB中取得值     4,將sbR、sbG、sbB這三個監聽器都指向為剛剛建立的監聽器

[iOS] Objective-C 自訂UITableViewCell樣式

Step1 在Storyboard中拉出TableView和按下TableView Cell後要切換的View,並設定對應的class檔 TableView連結至ListController類別,並設定Storyboard ID為ListController 要切換的View連結至ViewController類別,並設定Storyboard ID為viewController Step2 新增CustomCell.xib 新增File(File → New → File...),選擇View,並將檔案命名為CustomCell 開啟CustomCell.xib,把預設的View元件刪掉,然後從元件庫拖曳Table View Cell,並拉好想要的Cell內容排版 Step3 新增自訂Objective-C class給這個NIB檔 新增File(File → New → File...),選擇Cocoa Touch class 需要繼承UITableViewCell Step4 回到CustomCell.xib,將Class連結到CustomTableViewCell Step5 在CustomTableViewCell.h檔中,設定元件變數 Step6 在ListController.h中設定TableView的元件變數,且宣告一個陣列,負責儲存表格上要呈現的資料 Step7 在ListController.m  的viewDidLoad方法中設定TableView的兩個輸出口:dataSource、delegate,並初始化陣列資料 dataSource所連結到的View Controller用來提供表格上Cell的內容 delegate為指定哪一個View Controller需要處理使用者在表格上的操作 Step8 在ListController.m中,實作tableView:numberOfRowsInSection:方法 -通知Table View需要產生多少個Cell(儲存格)來顯示資料 Step9 在ListController.m中,實作tableView:cellForRowAtIndexPat...

[隋堂筆記] Android 長按選單-ContextMenu

ContextMenu可以達到長按某個元件就會出現選單的效果 Step1 建立menu.xml 在res資料夾中 新增menu的資料夾 Resource type選擇menu 在menu資料夾中 新增menu.xml (menu resource file) 在menu.xml中新增item 例如: android:id跟android:title是必要的值 android:orderInCategory為item的排序,值越大,排序就在越下面 ,如果沒有設定這個值,Menu的排序會依照程式碼的排序去排 Step2 在layout設定可以被長按的元件id 如果是要長按文字後會跳出Menu的話,就要設定TextView的id 例如: Step3 在Activity.java裡設定長按方法 1,要在onCreate裡中加上: registerForContextMenu() (註冊可以被長按的元件) 2,覆寫 onCreateContextMenu 方法(顯現Menu時呼叫)           加上 getMenuInflater().inflate(R.menu.menu,menu);           inflate代表灌飽充滿,表示將剛剛建立的menu.xml充進去 3,覆寫 onContextItemSelected 方法(選項被點選時呼叫) 例如: 我設定當按下選項中的Exit選項後,要結束這個app,所以在onContextItemSelected中加上這個行為的程式碼 執行結果:

[Android] 自訂元件樣式-Button

 Step1 設計Button樣式,並將圖片放到drawable資料夾裡  初始樣式(btn_default.png): 按下去的樣式(btn_pressed.png): 將這兩張圖片放到drawable的資料夾裡  Step2 在drawable資料夾裡新增btn.xml 程式碼如下: Step3 在activity_main.xml裡新增Button元件 程式碼如下: android:background要指定為剛剛建立的btn.xml (btn.xml要放在drawable資料夾裡面) 執行時,發現這按鈕太肥大了 可以 把Button的padding設為0 執行起來Button就不會這麼肥大 或者 自己設定Button的高度 但執行時Button的字沒有顯示出來... 不過只要也將Button的padding設為0就可以了 所以 如果將Button設為指定高度,發現Button的字無法顯示,記得也要將padding設為0 最終執行結果: