跳到主要內容

發表文章

目前顯示的是 2017的文章

[Android] 在Navigation View(側選單)框架下加入Tab View

如果要在Navigation View下加入Tab View,就需要以Fragment的架構加入Tablayout和ViewPager 1.先建立一個layout,fragment_layout.xml,設定Tablayout和ViewPager的佈局 2.新增要切換的分頁layout及Fragment(Fragment1.java、Fragment2.java) 3.新增一個TabsPagerAdapter.java 這邊如果是extands FragmentPagerAdapter的話,要切換的View就不適合為像ListView這種動態的View(第二次點擊後畫面會無法顯示),但只要改成extends FragmentStatePagerAdapter就可以了 4.新增FragmentLayout.java,使用fragment_layout.xml的佈局,並設定PagerAdapter 執行結果:

[Android] 讓圖片跟著SeekBar一起移動

先新增一個class:需要定義一個可以隨SeekBar移動的元件 新增ImgMoveLayout.java的class,並繼承ViewGroup 設定版面編排: 在activity_main.xml中,新增SeekBar元件,及剛剛定義的ImgMoveLayout元件 在MainActivity.java中,設定隨SeekBar移動的View樣式,並設定SeekBarChange的監聽器 執行結果: 參考來源: 无懈可击之小鱼的博客

[Android] 錯誤訊息-Unable to inflate view tag without class attribute

在預覽layout時,出現了"Unable to inflate view tag without class attribute"的錯誤訊息 如下圖: 後來發現是因為view的標籤打錯了, view標籤的開頭要為大寫 !!! 原本錯誤的: 只要把原本的"view"改為"View"就可以了~ 修改後: 錯誤訊息就消失了~~

[Android] 自訂元件樣式-Switch

Switch Switch結構說明 Step1 設計Switch樣式,並放入drawable資料夾裡 thumb樣式 switch on樣式(switch_thumb_activated.9.png) switch off樣式(switch_thumb_off.9.png) switch disable樣式(switch_thumb_disabled.9.png) switch pressed樣式(switch_thumb_pressed.9.png) track背景樣式 track default樣式(switch_bg.9.png) track disable樣式(switch_bg_disabled.9.png) track focused樣式(switch_bg_focused.9.png) Step2 在drawable資料夾中新增switch_thumb.xml及switch_track.xml switch_thumb.xml switch_track.xml Step3 在activity_main.xml中增加switch元件 android:layout_width是整個Switch元件的寬度 (上圖整個background的部分) android:switchMinWidth才是更改Switch外觀的寬度 如果要更改Switch內的字體顏色: 1,在Style.xml裡新增字體的樣式,顏色、字體大小等 2,在activity_main.xml中Switch元件的標籤內增加字體樣式- android :switchTextAppearance= "@style/switch_text" 執行結果: 註:此範例為 線上元件製作網站 所產出的樣式(此網站目前 無法使用 ---2017/11/21更新)

[Android] 頁面切換的方式-ViewPager

ViewPager可讓使用者透過滑動方式切換當前畫面,通常搭配Fragment一起使用。 (1)ViewPager 繼承了ViewGroup,是一個容器,裡面可新增要顯示的畫面。 (2)ViewPager 需要PagerAdapter來提供資料。 Step1 在activity_main.xml中加入ViewPager標籤 Step2 新增要切換的layout Step3 將layout加至ArrayList裡 Step4 宣告繼承PagerAdapter的類別 Srep5 在onCreate中,將Pager指定到剛剛自訂的pager class 完整MainActivity.java程式碼

[Android] 使用shape自訂形狀及陰影

shape可以定義下面四種類型的形狀:     rectangle- 矩形(直角矩形、圓角矩形),默認的形狀     oval- 橢圓形、圓形     line- 線形(實線、虛線)     ring- 環形、環形進度條 rectangle 執行結果: 如果填色要填入漸層色的話,需要將solid標籤改成gradient標籤,用法如下: 執行結果: oval 執行結果: oval和ring的漸層有三種類型(android:type):linear(線性)、radial(放射性)、sweep(掃描) 如果漸層效果為radial(放射性)的話,必須加上android:gradientRadius屬性(指定漸層的半徑)。 執行結果: line 線的高度是透過stroke的android:width屬性設置,而size的android:height是定義整個形狀區域的高度,所以 size的height必須大於stroke的width 。 執行結果: ring 屬於ring的屬性:     android:innerRadius 內環的半徑     android:thickness 環的厚度     android:useLevel 一般設為false,要不然環可能會無法顯示 執行結果: 將環設計成環狀進度條的樣式: 1,在shape標籤外再加上rotate標籤 rotate屬性:     android:fromDegrees:開始旋轉的角度位置     android:toDegrees:結束時轉到的角度位置     android:pivotX:旋轉起點的X軸座標位置,可以是數值、百分比、百分比p     android:pivotY:旋轉起點的Y軸座標位置,可以是數值、百分比、百分比p 2,在style.xml裡加上style樣式 3,在activity_main.xml裡加上progressBar標籤...

[隋堂筆記] Android 訊息通知(Notification)

Android Notification主要用來提醒新訊息、提示訊息等 一般訊息通知不需要存取權限,但如果要 震動 的話,就 需要在Manifest允許存取android.permission.VIBRATE這個權限 執行結果:

[Android] 頁面切換的方式-ViewFlipper

利用ViewFlipper來實現頁面左右滑動切換的效果很簡單, 只要使用ViewFlipper將View裝在一起,再用GestureDetector做手勢辨別就可以了。 Step1 在layout加上ViewFlipper元件 Step2 在anim資料夾中新增左右滑動動畫的XML 新增anim資料夾,並且將Resource Type 選擇 anim 新增四個anim檔案,分別為左進、左出、右進、右出 左進 (push_left_in.xml):手勢往左滑的進場動作 左出(push_left_out.xml):手勢往左滑的出場動作 右進(push_right_in.xml):手勢往右滑的進場動作 右出(push_right_out.xml):手勢往右滑的出場動作 translate標籤(位置移動)屬性介紹:     fromXDelta:X軸方向的起始位置     toXDelta:X軸方向的結束位置     fromYDelta:Y軸方向的起始位置     toYDelta:Y軸方向的結束位置     以上屬性的值可以填入         (1) 數值 → 如果數值為50,代表在目前View的左上角加上50px後做為起點         (2) % → 如果為50%,代表在目前View的左上角加上自己寬度的50%後做為起點         (3) %p → 如果為50%p,代表在目前View的左上角加上父元件寬度的50%後做為起點 Step3 設定MainActivity.java檔 宣告ViewFlipper並新增addImgView、addMyView的方法,再將要可切換的view新增到ViewFlipper中 手勢的判斷要繼承OnGestureListener方法。 (出現錯誤按下Alt+Enter,並匯入Method) ...

[Android] 簡介-頁面左右滑動切換的方式

頁面左右滑動切換的三種方式: ViewPager、ViewFlipper、ViewFlow ViewPager 繼承自android-support-v4.jar,所以3.0以前的版本需要導入此jar檔 比ViewFlipper更適合複雜的View切換 詳細ViewPager的實作方法 ViewFlipper 使用上比ViewPager簡單,但是缺點是必須等到gesture結束才會翻頁,在操作上就少了一些流暢性 如果是在同一個Activity要作滑動效果,使用ViewFlipper會比較省事 適合有限的少數頁面切換,並且能自訂每一個切換動畫 詳細ViewFlipper的實作方法 ViewFlow 和ViewPager比較像 不是google官網的API,為GitHub上的開源項目 如果為不確定數目的View,可以考慮使用ViewFlow 參考資料: 風傾清凌 、 狂奔的蝸牛 、 值得嗎?

[隋堂筆記] 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 最終執行結果:

[隋堂筆記] Android Studio 新增多國語言的方法

先打開strings.xml(路徑:APP → res → values → strings.xml) 可以在string.xml裡先建好要需要的string 例如: 其中string name=" ",雙引號中間填入的值就類似ID,不可以重複 而在string標籤中填入的值就是使用者看到的值。 像上面的例子就是string name為tx_off的值顯示為CLOSE 其他以此類推 然後按下string.xml右上方 Open Editor的按鈕 開啟Translations Editor後,上方有個 地球的按鈕 ,按下後就可以找需要增加的語系 選擇需要的語系後就可以填入相對應的值了 或者也可以在新增的strings.xml直接填入對應的值