android app development

Post on 03-Jan-2016

36 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Layout, Widget, Fragment. Android App Development. 今日目標 - List, Detail. 一個 Activity ,兩個 Fragment 一個 Fragment 顯示 List 點選 List 裡的 item 開啟另一個 Fragment 顯示 Detail 按返回鍵回到 List. XML. 可延伸標記式語 言 value tag 元素的名稱。 attr 屬性,前者是屬性名稱,後者是屬性的值,一個元素可以有多個屬性。 - PowerPoint PPT Presentation

TRANSCRIPT

ANDROID APP DEVELOPMENT

Layout, Widget, Fragment

今日目標 - List, Detail

一個 Activity ,兩個 Fragment 一個 Fragment 顯示 List 點選 List 裡的 item 開啟另一個 Fragment 顯示 Detail 按返回鍵回到 List

XML

可延伸標記式語言 <tag attr="attr">value</tag> tag 元素的名稱。 attr 屬性,前者是屬性名稱,後者是屬性

的值,一個元素可以有多個屬性。 value 內容,經常包覆其他元素 <tag attr="attr" />

XML 常見通用屬性 android:id android:layout_width (android:layout_height)

match_parent 、 wrap_content 、或是精確的值 android:layout_margin

與其他元素之間的距離Left 、 Right 、 Top 、 Bottom

android:layout_padding 自己的邊界往內的留白Left 、 Right 、 Top 、 Bottom

XML 常見通用屬性 android:layout_weight

自動分配高度及寬度的權重 android:layout_gravity

自己的對齊方向center 、 left 、 right 、 top 、 bottom

android:gravity內容的對齊方向center 、 left 、 right 、 top 、 bottom

android:background#AARRGGBB or #RRGGBB@drawble/[resourceId]

Layout

FrameLayout 最單純的排版 會將子元素全部疊起來顯示 類似 PS 的圖層

Layout

LinearLayout 最常用的排版之一 依序排列 android:orientation

horizontal or vertical 搭配 ScrollView

Layout

GridLayout 表格狀的排版 android:layout_row 第幾列 android:layout_column 第幾行

Layout

RelativeLayout 最複雜的排版 屬性描述元素之間的關係 用滑鼠拉吧

Widget

TextView顯示文字可用 html

○ Html.fromHtml([html])getText 、 setText

EditText輸入文字存取方式同上

Widget

Button按鈕setOnClickListenersetOnLongClickListenersetOnTouchListener

Widget

DatePicker日期選擇器getYear 、 getMonth 、 getDayOfMonth

TimePicker時間選擇器(小時、分鐘)getCurrentHour 、 getCurrentMinute

AnalogClock & DigitalClock顯示時間

Widget

ProgressBar進度條setMax 、 setProgress

SeekBar可讓使用者拖動的進度條setMax 、 getProgress

Widget

ScrollView垂直捲動

HorizontalScrollView水平捲動

ListView

清單 用於重複結構 No ScrollView

ListView

開新專案 Blank Activity with Fragment 在 fragment_my.xml 加入 ListView 打開 MyActivity.java

ListView

ListView listView = (ListView) rootView.findViewById(R.id.listView);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, data);

listView.setAdapter(adapter);

ListView

必須透過 Adapter 顯示資料 ArrayAdapter 建構子參數:

Activity 、樣式、資料 setAdapter

Fragment

小型 Activity LifeCycle

新增 Fragment

New -> Fragment -> Fragment (Blank) DetailFragment 取消 include interface callbacks fragment_detail.xml 新增 Large Text

Fragment

DetailFragment.java 處理 TODO Title 、 Detail 善用 shift+F6

開啟 Fragment

讓 MyActivity implements AdapterView.OnItemClickListener

listView.setOnItemClickListener( (AdapterView.OnItemClickListener) getActivity());

當有項目被點選時,會去呼叫 MyActivity的 onItemClick

開啟 Fragment@Override

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

FragmentManager fragmentManager = getFragmentManager();

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

DetailFragment detailFragment = DetailFragment.newInstance(data[position], detail[position]);

fragmentTransaction.replace(R.id.container, detailFragment);

fragmentTransaction.addToBackStack(null);

fragmentTransaction.commit();

}

DetailFragment - 顯示 在 onCreateView

getActivity().getActionBar().setTitle(title);

View rootView = inflater.inflate(R.layout.fragment_detail,

container, false);

TextView textView = (TextView) rootView.findViewById(R.id.detail);

textView.setText(detail);

return rootView;

DetailFragment

關閉時將標題設定回去@Override

public void onPause() {

super.onPause();

getActivity().getActionBar(). setTitle(R.string.app_name);

}

Navigation Back

@Override

public void onActivityCreated(Bundle savedInstanceState) {

super.onActivityCreated( savedInstanceState);

getActivity().getActionBar(). setDisplayHomeAsUpEnabled(true);

setHasOptionsMenu(true);

}

關閉 Fragment

@Override

public boolean onOptionsItemSelected( MenuItem item) {

switch (item.getItemId()) {

case android.R.id.home:

getActivity().getFragmentManager(). popBackStack();

return true;

}

return super.onOptionsItemSelected(item);

}

DetailFragment

在 onPause

getActivity().getActionBar().setDisplayHomeAsUpEnabled(false);

成果

下集預告 Menu Dialog Toast Notification

top related