做了一个桌面的模型:剩下的就是填充,来实现桌面的具体操作的实现,但是存在一些问题:对于fragment的嵌套不知道是fragmen还是activity,另外,不知道切换是否可以换fragment,通过目录应该是可以。
Mune.activity:
public class Menu extends AppCompatActivity {
private ViewPager mViewPager;
private ImageView ivHome,ivMine;
private TextView tvHome,tvMine;
private LinearLayout llHome,llMine;
private Adapter adapter;
private List<Fragment> fragments;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
initView();//绑定事件
initData();//初始数据
adapter = new Adapter(getSupportFragmentManager(),fragments);//添加适配器
mViewPager.setAdapter(adapter);
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
Toast.makeText(Menu.this, "页面" + position, Toast.LENGTH_SHORT).show();
OnViewPagerSelected(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
//默认选择首页
OnViewPagerSelected(0);
llHome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//view pager为第一页
mViewPager.setCurrentItem(0);
}
});
llMine.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mViewPager.setCurrentItem(1);
}
});
}
private void OnViewPagerSelected(int position) {
reset();
switch (position)
{
case 0:
{
ivHome.setSelected(true);
break;
}
case 1:
{ ivMine.setSelected(true);
break;
}
default:
break;
}
}
private void reset() {
ivHome.setSelected(false);
ivMine.setSelected(false);
}
private void initData() {
fragments = new ArrayList<>();
Fragment1 fragmentHome = Fragment1.newInstance("首页","");
Fragment1 fragmentMine = Fragment1.newInstance("我的","");
fragments.add(fragmentHome);
fragments.add(fragmentMine);
}
private void initView() {
mViewPager = findViewById(R.id.vp);
ivHome = findViewById(R.id.iv_home);
ivMine = findViewById(R.id.iv_mine);
tvHome = findViewById(R.id.tv_home);
tvMine = findViewById(R.id.tv_mine);
llHome = findViewById(R.id.Home);
llMine = findViewById(R.id.Mine);
}
}
activity布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Menu"
android:orientation="vertical"
>
<androidx.viewpager.widget.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/black"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="5dp">
<LinearLayout
android:id="@+id/Home"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center_horizontal"
>
<ImageView
android:id="@+id/iv_home"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/home_selector" />
<TextView
android:id="@+id/tv_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="主页"
android:textSize="20dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/Mine"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center_horizontal">
<ImageView
android:id="@+id/iv_mine"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/mine_seletor" />
<TextView
android:id="@+id/tv_mine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我的"
android:textSize="20dp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
Adapeter
public class Adapter extends FragmentPagerAdapter {
private List<Fragment> list;
public Adapter(@NonNull FragmentManager fm,List<Fragment> fragment) {
super(fm);
this.list = fragment;
}
@NonNull
@Override
public Fragment getItem(int position) {
return list == null ? null : list.get(position);
}
@Override
public int getCount() {
return list == null ? 0 : list.size();
}
}
fragment
public class Fragment1 extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
public Fragment1() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment Fragment1.
*/
// TODO: Rename and change types and number of parameters
public static Fragment1 newInstance(String param1, String param2) {
Fragment1 fragment = new Fragment1();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
private TextView mTextView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_1, container, false);
}
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mTextView = view.findViewById(R.id.tv_content);
mTextView.setText(mParam1);
}
}
布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"
tools:context=".fragment.Fragment1">
<!-- TODO: Update blank fragment layout -->
<TextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment"
android:gravity="center"
android:textSize="20dp"/>
</FrameLayout>
浙公网安备 33010602011771号