0

我有Android側邊欄導航抽屜佈局的應用程序,我正在實現一個簡單的短信應用程序的功能。使用具有活動或碎片的導航抽屜?

我的問題是,如何在活動之間重用導航代碼。每個示例都使用在導航抽屜菜單中的項單擊後在某個主視圖中顯示的碎片。如果我推出新的活動並希望擁有與原始活動相同的側邊菜單,該怎麼辦?

Google有沒有官方的建議如何實現?

我的問題是,爲了成爲Android上的默認SMS應用程序,您必須有一些特殊的活動來處理某些意圖。

我應該完全轉儲活動並使用碎片實現一切嗎?

感謝

回答

4

谷歌的Android應用程序有它由以下的架構:

  • 有往往只是一個Activity在整個應用程序,如果需要更多的活動,那麼他們都延伸相同BaseActivity
  • 不同的屏幕顯示爲單個Fragment s。通過片段交易發生的屏幕轉換都在相同的BaseActivity之內。

對於這樣的例子,沒有進一步看比Google I/O app的源代碼:

抽屜用不同的屏幕集成的方式在這個項目中說明,並進一步闡述了在下面的文章:

Guide to App Architecture

Android App Structure

2.Planning Screens and Their Relationships

3.Providing Descendant and Lateral Navigation

4.Providing Ancestral and Temporal Navigation

5.Patterns – Navigation

6.Best Practices for User Interface。應用程序的


更多的例子採用這些(和其他)的指導方針:

0

這是一個小問題,所以讓我們着重於重用抽屜。 抽屜的內容只不過是一個視圖,所以讓它可重用的最好方法是通過擴展FrameLayout(或其他適用於您特定設計的其他東西)來創建自定義視圖。在非常基本的形式中,您所要做的就是像(以下初始塊語法):

DrawerView extends FrameLayout 
{ 
    { 
    LayoutInflater.from(getContext()).inflate(R.layout.my_drawer_layout, this, true); 
    } 
} 

當然,你可能想要把邏輯的其餘部分額外的方法或在init塊本身(例如處理點擊,初始化適配器等) 然後簡單建立這個代碼,你準備在你想要的每個地方使用你的新的自定義控件。

0

public class Tab2Fragment extends Fragment {

public int currentimageindex=0; 
// Timer timer; 

// TimerTask task; ImageView slidingimage;

private int[] IMAGE_IDS = { 
     R.drawable.splash0, R.drawable.splash1, R.drawable.splash2, 
     R.drawable.splash3, R.drawable.splash4, R.drawable.splash5 
}; 


@Override 
public View onCreateView(LayoutInflater inflater, 
         @Nullable ViewGroup container, 
         @Nullable Bundle savedInstanceState) { 

    View v = inflater.inflate(R.layout.tab2fragment, container, false); 


    final Handler mHandler = new Handler(); 

    // Create runnable for posting 
    final Runnable mUpdateResults = new Runnable() { 
     public void run() { 

      AnimateandSlideShow(); 

     } 
    }; 

    int delay = 1000; // delay for 1 sec. 

    int period = 5000; // repeat every 4 sec. 

    Timer timer = new Timer(); 

    timer.scheduleAtFixedRate(new TimerTask() { 

     public void run() { 

      mHandler.post(mUpdateResults); 

     } 

    }, delay, period); 




    return v; 
} 





/** 
* Helper method to start the animation on the splash screen 
*/ 
private void AnimateandSlideShow() { 


    slidingimage = (ImageView) slidingimage.findViewById(R.id.ImageView3_Left); 
    slidingimage.setImageResource(IMAGE_IDS[currentimageindex%IMAGE_IDS.length]); 

    currentimageindex++; 

    Animation rotateimage = AnimationUtils.loadAnimation(getActivity(), R.anim.fade_in); 


    slidingimage.startAnimation(rotateimage); 



} 
+1

最好在代碼中包含一些上下文/解釋,因爲這會使答案對於OP和未來的讀者更有用。 – EJoshuaS