這四章的內容主要是對android studio的一些核心控件與視圖及基本知識進行敘述。java
1.在res/menu中編寫菜單資源文件android
要在相應的view上按幾秒後才顯示的,用於view,跟某個具體的view
綁定在一塊兒.
▪ 主要須要用到或重寫Activity的如下方法:
▪ registerForContextMenu()爲某個view註冊context menu,通常在onCreate裏面調用。
▪ onCreateContextMenu()建立context menu,context meun每次顯示時都會調用這個函數。
▪ onContextItemSelected()處理選中的菜單項。git
打開res\layout\activity_main.xml,修改根元素爲LinearLayout,同時加上本節要學習的控件。數組
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="com.zrthas.administrator.commoncontrol.MainActivity"> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/listView_fun"> </ListView> </LinearLayout> 打開res\lvalues\strings.xml中,將相對的XML字段修改以下: <resources> <string name="app_name">經常使用組件測試</string> <string name="List_View">ListView演示</string> <string name="commonControl_List">經常使用Android演示</string> </resources>
最後在Java源代碼中添加對ListView的調用android-studio
public class MainActivity extends AppCompatActivity { /* 定義數組來表示listView要顯示,也是咱們學習哪些經常使用的控件 */ private static final String[] commonFunList = new String[]{ "ListView控件演示", "ProgressBar控件演示", "GridView控件演示", "ScrollView控件演示", "DatePicker控件演示" }; //定義listView private ListView listView ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.listView_fun); listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, commonFunList)); } }
在Java代碼中,能夠看到,Android對ListView的調用主要是由方法setAdapter。具體詳細介紹:Android之Adapter用法總結。目前使用只要記得,要裝配這些數據就須要一個鏈接ListView視圖對象和數組數據的適配器來二者的適配工做,ArrayAdapter的構造須要三個參數,依次爲this,佈局文件(注意這裏的佈局文件描述的是列表的每一行的佈局,android.R.layout.simple_list_item_1是系統定義好的佈局文件只顯示一行文字,數據源(一個List集合)。同時用setAdapter完成適配的最後工做。app
在setAdapter中的simple_list_item_1。爲何咱們本身設置的TextView呢?這主要因爲目前咱們所使用的ListView爲系統自帶控件。它裏面包含了simple_list_item_一、simple_list_item_二、two_line_list_item等。如今對這幾個佈局進行詳解。ide
3.1 simple_list_item_1佈局函數
此佈局是最簡單的一種佈局方式。只含有一個TextView。做用於單行展現。就如咱們運行後程序的列表。工具
3.2 simple_list_item_2佈局佈局
這個佈局是雙層佈局,它包含兩個TextView:android.R.id.text1和android.R.id.text2。此佈局是上層爲大字體,下層爲小字體。
3.3 two_line_list_item佈局
與simple_list_item_2佈局一致包含兩個TextView。而跟它不一樣的是,兩層文字的大小都是同樣大小的。
通過幾前章的學習,可能同窗們對生成一個簡單的ListView順手而來。那咱們根據之前所學習的內容,對ListView中的列表內容都建立相應的頁面。同時點擊列表,會跳轉至相應的Activity中。下面分爲兩步:
4.1 判斷點擊哪一個Item
這裏面咱們調用setOnItemClickListener監聽器。
listView.setOnItemClickListener( new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { setTitle("您點擊了第"+position+"個項目"); } } );
onItemClick後面有4個參數,乍看直接暈菜,那麼每一個參數到底是何意義呢.
舉個例子會理解的更快:
X, Y兩個listview,X裏有1,2,3,4這4個item,Y裏有a,b,c,d這4個item。若是你點了b這個item。以下:
arg0至關於listview Y適配器的一個指針,能夠經過它來得到Y裏裝着的一切東西,再通俗點就是說告訴你,你點的是Y,不是X
arg1是你點的b這個view的句柄,就是你能夠用這個view,來得到b裏的控件的id後操做控件
arg2是b在Y適配器裏的位置(生成listview時,適配器一個一個的作item,而後把他們按順序排好隊,在放到listview裏,意思就是這個b是第position號作好的)
arg3是b在listview Y裏的第幾行的位置(很明顯是第2行),大部分時候position和id的值是同樣的,若是須要的話,你能夠本身加個log把position和id都弄出來在logcat裏瞅瞅
而setTitle是將應用的標題改成當前所點擊的行數。
獲取到是點擊哪一個Item後,咱們能夠對這個Item進行跳轉另外一個Activity操做。在此以前,對應每一個界面都生成一個佈局文件與java文件。同時在AndroidManifest.xml添加新增的activity。
首先,在onCreate(Bundle)前加個方法toNewActivity(int)。這個方法是用來判斷用戶點擊哪一個Item,由此跳轉到哪一個Activity。如下是簡單的實現:
/*** 根據Item的position位置來判斷具體跳轉至哪一個Activity */ private void toNewActivity(int position){ Intent i; switch (position){ case 0: i = new Intent(MainActivity.this,ListViewActivity.class); break; case 1: i = new Intent(MainActivity.this,ProgressBarActivity.class); break; case 2: i = new Intent(MainActivity.this,GridViewActivity.class); break; case 3: i = new Intent(MainActivity.this,ScrollViewActivity.class); break; case 4: i = new Intent(MainActivity.this,DatePickerActivity.class); break; default: i = new Intent(MainActivity.this,MainActivity.class); break; } startActivity(i); }
在原來對ListView監聽器中,把setTitle()方法改爲toNewActivity()。
listView.setOnItemClickListener( new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { toNewActivity(position); } } );
最後運行下項目,點擊各個不一樣的Item,會跳轉至不一樣的Activity。
android:gravity 設置此組件中的內容在組件中的位置。可選的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical能夠多選,用「|」分開。
android:horizontalSpacing 兩列之間的間距。
android:numColumns 設置列數。
android:stretchMode 縮放模式。
android:verticalSpacing 兩行之間的間距。
這是Android SDK 版本問題致使的錯誤,更改SDK版本便可
若只有一個可用API,可經過SDK Manager安裝其它版本的SDK(API),點擊工具欄SDK Manager或點擊File->Settings->Appearance & Behavior -> System Settings -> Android SDK 進入SDK安裝選項
安裝新的SDK後,問題解決
Multi-dimensional arrays that contain arrays of different lengths in any one dimension are called _________________.(包括不一樣長度數組的多維數組叫作_______)
A .ragged arrays(鋸齒狀數組)
B .static arrays(靜態數組)
C .two-dimensional arrays(二維數組)
D .constant arrays(常量數組)
E .overloaded arrays(重載數組)
正確答案: A
Ragged arrays are multi-dimensional arrays that contain arrays at the same dimension with differing lengths.
碼雲項目地址
由於從新git了一下,可能周的顯示不是很正常
時間 | 學習時間目標 | 實際進行時間 |
---|---|---|
第一週 | 8 | 8 |
第二週 | 10 | 8.5 |
第三週 | 12 | 10.5 |
第四周 | 12 | 12 |
第五週 | 12 | 11 |
第六週 | 12 | 13 |
第七週 | 12 | 12 |
第八週 | 12 | 12 |
但願可以經過系統地學習,探索一些開源項目並改進功能,養成良好的開發習慣,造成一套完整的android生態知識體系,並能徹底自主開發一款具備必定實用價值的app。