編輯:關於android開發
在一個商業軟件中,會有很多的界面,如果沒一個界面對應一個activity,那麼activity會非常的多,清單文件也會非常的亂,谷歌在android3.0以後引入了新的概念叫fragment
fragment無需在清單文件中配置,輕量級的activity,在所屬的activity布局文件中進行配置
在布局文件中使用fragment控件
添加<fragment>節點,設置名稱是fragment指向的類全路徑
其他屬性和別的控件一樣
新建一個類Fragment1繼承系統的Fragment類,此時會報錯誤,是因為,我們兼容的android系統最低版本是8,fragment是11版本才引入的,可以先把兼容版本改成11
重寫onCreateView()方法,當fragment被創建的時候回調的方法,返回當前的View對象,傳遞進來一個LayoutInflate對象,
調用LayoutInflate對象的inflate()方法,獲得View對象,參數:資源,ViewGroup對象
fragment最初設計的時候,是為了適應平板的大屏幕,例如,左側一個listview,右邊一個fragment,點擊ListView的不同的條目,右邊fragment的內容隨之變化,用戶體驗更好
動態創建
實現,當用戶豎著拿手機顯示一個界面,當橫著拿時顯示另外一個界面
判斷當前手機的朝向,通過屏幕的寬度和高度的對比來實現
調用getWindowManager().getDefaultDisplay().getWidth()獲取寬度
調用getWindowManager().getDefaultDisplay().getHeight()獲取高度
如果高度大於寬度,是豎屏
如果寬度大於高度,是橫屏
新建Fragment1和Fragment2類,繼承系統的Fragment類
獲取Fragment對象,通過new出來
獲取FragmentManager對象,通過getFragmentManager()方法
調用FragmentManager對象的beginTransaction()方法,開啟事務,獲得FragmentTransaction對象
調用FragmentTransaction對象的replace()方法,用Fragment替換當前界面,參數:containerViewId,Fragment對象
containerViewId是容器的id,可以使用android.R.id.content代表當前界面的id
調用FragmentTransaction對象的commit()方法,提交事務
模擬器ctrl+f11切換橫豎屏
MainActivity.java
package com.tsh.myfragment; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Fragment1 f1 = new Fragment1(); Fragment2 f2 = new Fragment2(); // 判斷橫豎屏 int width = getWindowManager().getDefaultDisplay().getWidth(); int height = getWindowManager().getDefaultDisplay().getHeight(); FragmentManager fm = getFragmentManager(); FragmentTransaction fr = fm.beginTransaction(); if (width < height) {// 豎屏 fr.replace(android.R.id.content, f1); } else {// 橫屏 fr.replace(android.R.id.content, f2); } fr.commit(); } }
Fragment1.java
package com.tsh.myfragment; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment2 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment2, null); } }
ListView之多種類型Item,listviewitem一、概述 一般而言,listview每個item的樣式是一樣的,但也有很多應用場景下不同位置的item需要不同
Android 觸摸及手勢操作GestureDetector 現在的智能手機不敢說百分百的都是觸摸屏,也應該是百分之九九以上為觸摸屏了,觸摸屏為我們操作
Exampleapp窗口大小調節,exampleapp窗口調節 結構圖: 基類: package ch.halcyon.squareprogressbar.exampl
讓ImageView可以使用gif的方法,imageviewgif在自己的包中添加MyGifView.java(直接復制,粘貼),讀取gif資源在MyGifView中第2