2013-10-07 45 views

回答

2

有幾種方法如何可以做到這一點。您可以創建不同背景的視圖,然後使用動畫獲得所需的效果。但是,既然你提到了ViewPager,並且如果那是你需要的。一個更簡單的解決方案是使用Relative佈局,並在視圖頁面上覆蓋其他視圖。

到這裏看看:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v4.view.ViewPager 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/viewpager" 
     android:layout_alignParentRight="false"/> 
    <!-- other views go here --> 
    <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/imageView" 
      android:layout_centerVertical="true" 
      android:layout_centerHorizontal="true" 
      android:src="@drawable/ic_launcher"/> 
</RelativeLayout> 

然後分配的觀點與不同的背景顏色的觀點尋呼機。 (注:寫的代碼在較短的時間來解釋溶液)

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     colors = new ArrayList<Integer>(); 
     colors.add(Color.RED); 
     colors.add(Color.BLACK); 
     colors.add(Color.BLUE); 
     colors.add(Color.GREEN); 
     colors.add(Color.YELLOW); 

     mViewPager = (ViewPager)findViewById(R.id.viewpager); 
     mPageAdapter = new MyPageAdapter(); 
     mViewPager.setAdapter(mPageAdapter); 
     mPageAdapter.notifyDataSetChanged(); 
    } 

    private MyPageAdapter mPageAdapter; 
    private ViewPager mViewPager; 
    private List<Integer> colors; 

    class MyPageAdapter extends PagerAdapter { 


     @Override 
     public int getCount() { 
      return colors.size(); 
     } 

     @Override 
     public Object instantiateItem(ViewGroup container, int position) { 
      RelativeLayout view = new RelativeLayout(getApplicationContext()); 
      view.setBackgroundColor(colors.get(position)); 
      ((ViewPager) mViewPager).addView(view, 0); 
      return view; 
     } 

     @Override 
     public void destroyItem(ViewGroup container, int position, Object view) { 
      ((ViewPager) mViewPager).removeView((RelativeLayout) view); 
     } 

     @Override 
     public boolean isViewFromObject(View view, Object o) { 
      return view == ((RelativeLayout) o); 
     } 

    } 

} 

所以這種方式就可以實現視圖尋呼機的所有屬性,而無需編寫任何額外的代碼(手勢滑動效果等))。

+0

Thx很多,它按預期工作! – DoruAdryan