1. 程式人生 > >Android之Fragment實現介面互動小例項1

Android之Fragment實現介面互動小例項1

先看一下效果圖:

        左右各是一個Fragment,左邊的三個按鈕可以控制右邊的背景色,右邊的mood按鈕,可以控制左邊最上面的ImageView,這樣就簡單的實現了Fragment的介面互動。

        在MainActivity的佈局中新增Fragment有兩種方式,不同新增Fragment的方法,要實現兩個Fragment的互動的差異是很大的,本文講比較簡單的一種,下一節講另一種方式。

看MainActivity的佈局檔案mian.xml檔案就明瞭了。

main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <fragment
        android:id="@+id/tag"
        android:name="com.aaron.LeftFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <fragment
        android:id="@+id/details"
        android:name="com.aaron.RightFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3.5" />
   
</LinearLayout>

       也就是直接在MainActivity的佈局中新增兩個Fragment的標籤,這種情況下,在MainActivity中是可以直接findViewById拿到LeftFragment、RightFragment的佈局檔案中定義的元件的,看MainActivity類的程式碼

MainActivity.java

public class MainActivity extends FragmentActivity {

	private Button mood_btn, red_btn, green_btn, blue_btn;
	private ImageView iv;
	private int count = 0;
	private LinearLayout ll;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.main);
		
		mood_btn = (Button)findViewById(R.id.mood);
		
		iv = (ImageView)findViewById(R.id.image);
		
		mood_btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				count ++;
				switch(count){
				case 1:
					iv.setImageResource(R.drawable.draw);
					break;
				case 2:
					iv.setImageResource(R.drawable.lose);
					break;
				case 3:
					iv.setImageResource(R.drawable.win);
					count = 0;
					break;
				}
			}
		});
		
		red_btn = (Button)findViewById(R.id.back_red);
		green_btn = (Button)findViewById(R.id.back_green);
		blue_btn = (Button)findViewById(R.id.back_blue);
		ll = (LinearLayout)findViewById(R.id.back);
		
		ButtonListener bl = new ButtonListener();
		red_btn.setOnClickListener(bl);
		green_btn.setOnClickListener(bl);
		blue_btn.setOnClickListener(bl);
		
	}
	
	class ButtonListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			Button btn = (Button)v;
			switch(btn.getId()){
			case R.id.back_red:
				ll.setBackgroundResource(R.drawable.red);
				break;
			case R.id.back_green:
				ll.setBackgroundResource(R.drawable.green);
				break;
			case R.id.back_blue:
				ll.setBackgroundResource(R.drawable.blue);
				break;
			}
		}
	}

}

 LeftFragment、RightFragment類的程式碼就很簡單了,兩者是相似的,先貼出LeftFragment的程式碼。

LeftFragment.java

public class LeftFragment extends Fragment {
	
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		
		View view = inflater.inflate(R.layout.left, container, false);
		return view;
	}
}

左右Fragment的佈局檔案根據截圖就很好寫了,現附上原始碼。

http://download.csdn.net/detail/oyty892968/5978635