編輯:關於Android編程
從而根據可用的屏幕空間優化用戶體驗。
例如,在手機設備上,由於采用單窗格用戶界面,因此可能更適合一次只顯示一個fragment。 相反,由於平板電腦屏幕尺寸較大,可以為用戶顯示更多信息,因此最好將片段設計為並排顯示。
圖 以不同配置在不同屏幕尺寸的設備上為同一 Activity 顯示的兩個片段。在較大的屏幕上,兩個片段同屏並排顯示,但在手機設備上,同屏僅顯示一個片段,因此用戶必須通過切換屏幕進行浏覽。
提供的方法讓您可以在運行時為 Activity 添加、移除和替換片段,從而營造出動態的用戶體驗。
除了在布局文件中為 Activity 定義片段(利用 元素進行定義)之外,您還可以在 Activity 運行時為 Activity 添加片段。如果您計劃在 Activity 的生命周期內更改片段,就需要采用這種方法。
後者將提供添加、移除、替換片段以及執行其他片段事務所需的 API。
如果您的 Activity 允許移除和替換片段,應在 Activity 的 onCreate() 方法執行期間為 Activity 添加初始片段。
在處理片段(尤其是在運行時添加片段的情況下)時,請謹記以下重要准則:您的 Activity 布局必須包含一個可以插入片段的容器 View。
以下是布局的替代布局,一次只顯示一個片段。若要替換片段,Activity 的布局包含一個用來充當片段容器的空 FrameLayout。
布局目錄沒有 large 限定符,因此該布局只能在設備屏幕尺寸小於 large 時使用,因為這種尺寸的屏幕無法同時容納兩個片段。
<framelayout android:id="@+id/fragment_container" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"></framelayout>
在您的 Activity 內,使用 Support Library API 調用 getSupportFragmentManager() 以獲取 FragmentManager。然後,調用 beginTransaction() 創建一個 FragmentTransaction,並調用 add() 添加一個片段。
您可以使用同一 FragmentTransaction 為 Activity 執行多片段事務。做好更改准備時,您必須調用 commit()。
import android.os.Bundle; import android.support.v4.app.FragmentActivity; public class MainActivity extends FragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.news_articles); // Check that the activity is using the layout version with // the fragment_container FrameLayout if (findViewById(R.id.fragment_container) != null) { // However, if we're being restored from a previous state, // then we don't need to do anything and should return or else // we could end up with overlapping fragments. if (savedInstanceState != null) { return; } // Create a new Fragment to be placed in the activity layout HeadlinesFragment firstFragment = new HeadlinesFragment(); // In case this activity was started with special instructions from an // Intent, pass the Intent's extras to the fragment as arguments firstFragment.setArguments(getIntent().getExtras()); // Add the fragment to the 'fragment_container' FrameLayout getSupportFragmentManager().beginTransaction() .add(R.id.fragment_container, firstFragment).commit(); } } }
由於該片段已在運行時被添加到 FrameLayout 容器(而不是利用 元素在 Activity 布局中進行定義),所以,可以從該 Activity 中移除該片段,並將其替換為其他片段。
替換片段的步驟與添加片段類似,只不過調用的方法從 add() 改為 replace()。
當您執行替換或移除片段等片段事務時,通常最好讓用戶能夠回退並“撤消”更改。 要讓用戶回退所執行的片段事務,您必須先調用 addToBackStack(),然後再提交 FragmentTransaction。
注:當您移除或替換一個片段並向返回棧添加事務時,系統會停止(而非銷毀)移除的片段。 如果用戶執行回退操作進行片段恢復,該片段將重新啟動。 如果您不向返回棧添加事務,則系統會在您移除或替換片段時將其銷毀。
片段替換示例:
// Create fragment and give it an argument specifying the article it should show ArticleFragment newFragment = new ArticleFragment(); Bundle args = new Bundle(); args.putInt(ArticleFragment.ARG_POSITION, position); newFragment.setArguments(args); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); // Replace whatever is in the fragment_container view with this fragment, // and add the transaction to the back stack so the user can navigate back transaction.replace(R.id.fragment_container, newFragment); transaction.addToBackStack(null); // Commit the transaction transaction.commit();
android調試橋: adb命令使用需要在系統環境遍歷中path中追加adb.exe的完整路徑D:\IDE\adt-bundle-windows-x86-2013072
本文實例講述了Android canvas畫圖操作之切割畫布實現方法。分享給大家供大家參考,具體如下:android切割畫布的歷程不算很難,可是理解起來也比較麻煩,這裡寫
0、基礎回顧PropertyAnimation,屬性動畫,顧名思義就是利用對象的屬性變化形成動畫的效果。屬性動畫的類可以用Animator這個抽象類來表示,通常使用它的子
SwipeRefreshLayout下拉刷新布局SwipeRefreshLayout是Android又一與時俱進的控件,顧名思義它隨著用戶手勢向下滑動就會觸發刷新操作。從