模拟QQ布局+侧滑以及联动
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="vertical" >
<android.support.v4.widget.DrawerLayout
android:id="@+id/ch"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- 1.修改布局为线性布局 -->
<!-- 2.写一个帧布局 -->
<FrameLayout
android:id="@+id/frag"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<!-- 3写 RadioGroup布局 -->
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<!-- android:button="@null"去掉单选框的框 -->
<RadioButton
android:id="@+id/radio0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/sel_r"
android:gravity="center"
android:text="首页" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/sel_r"
android:gravity="center"
android:text="分类" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/sel_r"
android:gravity="center"
android:text="发现" />
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="320dp"
android:layout_gravity="left"
android:background="#fff"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:src="@mipmap/cxl"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是XXX"
>
</TextView>
<ListView
android:layout_width="match_parent"
android:layout_height="80dp">
</ListView>
</LinearLayout>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
//点击切换图片(sel_l0)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<!--如果单选框被选中 就展示选中图片 -->
<item android:state_checked="true" android:drawable="@mipmap/message_true"/>
<!-- 默认情况下展示 -->
<item android:drawable="@mipmap/message_false"/>
</selector>
java代码:
布局控制及侧滑监听
package com.bawei.guo.xiangmu;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.widget.RadioGroup;
import android.widget.Toast;
import com.bawei.guo.xiangmu.frag.Frag_01;
import com.bawei.guo.xiangmu.frag.Frag_02;
import com.bawei.guo.xiangmu.frag.Frag_03;
public class MainActivity extends BaseActivity {
private FragmentManager manager;
private RadioGroup radioGroup;
private Frag_01 frag_01;
private Frag_02 frag_02;
private Frag_03 frag_03;
private DrawerLayout drawerLayout;
//布局
@Override
protected int bindLayout() {
return R.layout.activity_main;
}
@Override
protected void initView() {
radioGroup =bindView(R.id.radioGroup1);
manager = getSupportFragmentManager();
drawerLayout = bindView(R.id.ch);
}
@Override
protected void initData() {
drawerLayout.openDrawer(Gravity.LEFT);
drawerLayout.closeDrawer(Gravity.LEFT);
// 开启事务
FragmentTransaction transaction = manager.beginTransaction();
// 创建FRagment对象
frag_01 = new Frag_01();
frag_02 = new Frag_02();
frag_03 = new Frag_03();
// 添加fragment
transaction.add(R.id.frag, frag_01);
transaction.add(R.id.frag, frag_02);
transaction.add(R.id.frag, frag_03);
// 隐藏展示fragment
radioGroup.check(radioGroup.getChildAt(0).getId());
transaction.show(frag_01).hide(frag_02).hide(frag_03);
// 提交事务
transaction.commit();
}
@Override
protected void bindEvent() {
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
FragmentTransaction shiwu = manager.beginTransaction();
switch (checkedId) {
case R.id.radio0:
shiwu.show(frag_01).hide(frag_02).hide(frag_03);
break;
case R.id.radio1:
shiwu.show(frag_02).hide(frag_01).hide(frag_03);
break;
case R.id.radio2:
shiwu.show(frag_03).hide(frag_02).hide(frag_01);
break;
}
shiwu.commit();
}
});
drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(@NonNull View view, float v) {
}
@Override
public void onDrawerOpened(@NonNull View view) {
Toast.makeText(MainActivity.this, "侧滑滑开了", Toast.LENGTH_SHORT).show();
}
@Override
public void onDrawerClosed(@NonNull View view) {
Toast.makeText(MainActivity.this, "侧滑关闭了", Toast.LENGTH_SHORT).show();
}
@Override
public void onDrawerStateChanged(int i) {
Toast.makeText(MainActivity.this, "侧滑发生改变了", Toast.LENGTH_SHORT).show();
}
});
}
}