PS:資源文件名字不能為大寫
webView ?加載網頁 ? ??ListView ?顯示列表 ? ?GridView ?顯示表格式列表 ? ?ScrollView 內容可滾動視圖SufaceView ?非常重要的繪圖容器
五大布局
1.Linearlayout ?線性布局* ?orientation 排列方向 ? ?子控件有weight——比重(10為基準)
2.RelativeLayout ?相對布局* ?子控件有alignParent——控制控件位置(左右頂部底部等) ??
根據控件id利用layout_above(top、toLeftOf等)將控件移位在id控件周圍/alignleft表示與id控件左側平行 ?
?marginLeft(top、right)——上邊距和下邊距 ? ? ? ?padding——內邊距
3.FrameLayout ?幀布局* ? ?相較于立體,相互疊加,但不覆蓋
4.AbsoluteLayout 絕對布局 ?絕對坐標,不適用與Android
5.TableLayout ?表格布局 ? TableRow——每一行中存在很多列
有關布局
1.疊加 LinearLayout 布局
2.如何減少布局層次(最好不超過10層)——利用相對布局來減少線性布局的層數
3.學會利用控件組合
4.布局如何引用相同部分
? ? ? ? ? ?<include/>引用相同布局文件? 如:<include layout="@layout/activity"/>
? ? ? ? ? ? <merge/>減少視圖層級
? ? ? ? ? ?<ViewStub/>需要時才加載
5如何優化布局?
? ? ? ? 減少層次
? ? ? ? 刪除無用布局
? ? ? ? 布局結構要清晰
? ? ? ? 選擇合適的布局
PS:小技巧
? ? ?不要嵌套多個使用layout_weight屬性的Linearlayout
? ? ?Android lint ? 刪除無用布局、工具等
? ? ?HierarchyViewer 分析所有層級
ListView(容器、數據、視圖)
快捷鍵:shift+F6 重置相關代碼
? ? ? ? ? ? ?重構 Refactor—Extract—Field?
? ? mPhoneBookListView.setAdapter ?適配器進行綁定
? ? getCount 有多少條數據
? ? getItem ?返回某一條數據對象
? ? getItemId
? ? getView 返回一個視圖(位置、這個視圖、屬于誰)
android:listSelector="@android:color/transparent"
item被點擊時的背景顏色
android:scrollingCache="false"
android:cacheColorHint="#00000000"
滾動緩存
利用一個列表來改造ListView
private List<UserInfo> mUserInfos=new ArrayList<>();
userInfos.add(new UserInfo("XXX",21));——塞入數據
點擊事件(長按)
通知數據更新
phoneBookAdapter.notifyDataSetChanged();
創建一個點擊事件——重新建立一組新數據來替換老的數據并刷新界面。
常用屬性及方法
listSelector 選中時的背景 ?scrollingCache 滑動時緩存的顏色 cacheColorHint 緩存顏色值 fastScrollEnabled是否允許快速滾動
addHeaderView ?addFooterView 添加頭尾視圖
GridView與ScrollView
1.與ListView的相似和區別
——相似:GridView extends AbsListView
? ? ? ? ? ? ? ? ListView extends AbsListView
adapter、數據、點擊事件、刷新都一樣
——區別:樣式(宮格式)
2.visibility 可見性——gone隱藏 ? ? visible可見 ? invisible不可見
columnWidth 寬度 ? ?horizontalSpacing 橫向空間?
3.scrollview 內容區滾動