Android之Fragment實現介面互動小例項1
阿新 • • 發佈:2019-02-05
先看一下效果圖:
左右各是一個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