欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

2020-10-10

程序员文章站 2022-03-25 08:21:30
刚学习AndroidStudio,我们先写一个xml界面,然后再实现它的功能现在我们先实现一个点击切换标题的功能在activity_main.xml里面写入以下代码,将按钮以及排版设置好

刚学习AndroidStudio,我们先写一个xml界面,然后再实现它的功能

现在我们先实现一个点击切换标题的功能

在activity_main.xml里面写入以下代码,将按钮以及排版设置好

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_body_bar"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/tv_title"
        android:textSize="36sp"
        android:text="标题"
        android:gravity="center"
        android:textColor="@android:color/white"
        android:background="@color/colorPrimary"
        android:layout_width="match_parent"
        android:layout_height="56dp"/>

    <LinearLayout
        android:id="@+id/main_body"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:orientation="vertical">

    </LinearLayout>


        <LinearLayout
            android:id="@+id/bottom_bar"
            android:layout_alignParentBottom="true"
            android:orientation="horizontal"
            android:background="#F2F2F8"
            android:layout_width="match_parent"
            android:layout_height="50dp">
            <RelativeLayout
                android:id="@+id/bottom_bar_1_btn"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:onClick="onClick"
                android:layout_height="match_parent">
                <TextView
                    android:id="@+id/bottom_bar_text_1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_centerHorizontal="true"
                    android:layout_marginBottom="2dp"
                    android:gravity="center"
                    android:text="课程"
                    android:textColor="#000000"
                    android:textSize="14sp"/>

                <ImageView
                    android:id="@+id/bottom_bar_image_1"
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:layout_above="@+id/bottom_bar_text_1"
                    android:layout_alignParentTop="true"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="0dp"
                    android:layout_marginBottom="2dp"
                    android:src="@mipmap/ic_course" />
            </RelativeLayout>
            <RelativeLayout
                android:id="@+id/bottom_bar_2_btn"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:onClick="onClick"
                android:layout_height="match_parent">

                <TextView
                    android:id="@+id/bottom_bar_text_2"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_centerHorizontal="true"
                    android:layout_marginBottom="2dp"
                    android:gravity="center"
                    android:text="习题"
                    android:textColor="#000000"
                    android:textSize="14sp" />

                <ImageView
                    android:id="@+id/bottom_bar_image_2"
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:layout_alignParentTop="true"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="2dp"
                    android:src="@mipmap/ic_exercise" />
            </RelativeLayout>
            <RelativeLayout
                android:id="@+id/bottom_bar_3_btn"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:onClick="onClick"
                android:layout_height="match_parent">
                <TextView
                    android:id="@+id/bottom_bar_text_3"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_centerHorizontal="true"
                    android:layout_marginBottom="2dp"
                    android:gravity="center"
                    android:text="搜索"
                    android:textColor="#000000"
                    android:textSize="14sp"/>
                <ImageView
                    android:id="@+id/bottom_bar_image_3"
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:layout_above="@+id/bottom_bar_text_3"
                    android:layout_alignParentTop="true"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="2dp"
                    android:src="@mipmap/ic_message"/>
            </RelativeLayout>
            <RelativeLayout
                android:id="@+id/bottom_bar_4_btn"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:onClick="onClick"
                android:layout_height="match_parent">
                <TextView
                    android:id="@+id/bottom_bar_text_4"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_centerHorizontal="true"
                    android:layout_marginBottom="2dp"
                    android:gravity="center"
                    android:text="我"
                    android:textColor="#000000"
                    android:textSize="14sp"/>
                <ImageView
                    android:id="@+id/bottom_bar_image_4"
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:layout_above="@+id/bottom_bar_text_4"
                    android:layout_alignParentTop="true"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="2dp"
                    android:src="@mipmap/ic_my"/>
            </RelativeLayout>
        </LinearLayout>


</LinearLayout>

写完以上的代码,我们会得到这样一个界面
2020-10-10
然后我们新建一个fragment
2020-10-10
我们给它起个名字testFragment
然后我们就得到一个fragment_test.xml
我们在里面添加一个id android:id="@+id/tv_content" 这样方便我们后面功能的实现

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


        initView();
        initFragment();

        replaceFragment(fragments.get(R.id.bottom_bar_2_btn));


    }
    //实现回调接口
    @Override
    public void setTitle(String title) {
        tvTitle.setText(title);
    }

我们再onCreate方法里面添加两个构造函数,接下来我们实现这几个函数

private void initFragment() {
        fragments = new SparseArray<>();
        fragments.put(R.id.bottom_bar_1_btn,testFragment.newInstance("课程"));
        fragments.put(R.id.bottom_bar_2_btn,testFragment.newInstance("习题"));
        fragments.put(R.id.bottom_bar_3_btn,testFragment.newInstance("搜索"));
        fragments.put(R.id.bottom_bar_4_btn,testFragment.newInstance("我"));

    }
    private void replaceFragment(Fragment fragment){
        FragmentManager manager=getSupportFragmentManager();
        FragmentTransaction transaction=manager.beginTransaction();
        transaction.replace(R.id.main_body,fragment);
        transaction.commit();
    }

    private void initView(){
        tvTitle = findViewById(R.id.tv_title);

        bottom_bar_text_1=findViewById(R.id.bottom_bar_text_1);
        bottom_bar_text_2=findViewById(R.id.bottom_bar_text_2);
        bottom_bar_text_3=findViewById(R.id.bottom_bar_text_3);
        bottom_bar_text_4=findViewById(R.id.bottom_bar_text_4);
        bottom_bar_image_1=findViewById(R.id.bottom_bar_image_1);
        bottom_bar_image_2=findViewById(R.id.bottom_bar_image_2);
        bottom_bar_image_3=findViewById(R.id.bottom_bar_image_3);
        bottom_bar_image_4=findViewById(R.id.bottom_bar_image_4);

        mian_body_bar=findViewById(R.id.main_body_bar);
        bottom_bar_1_btn=findViewById(R.id.bottom_bar_1_btn);
        bottom_bar_2_btn=findViewById(R.id.bottom_bar_2_btn);
        bottom_bar_3_btn=findViewById(R.id.bottom_bar_3_btn);
        bottom_bar_4_btn=findViewById(R.id.bottom_bar_4_btn);

        bottom_bar_1_btn.setOnClickListener(this);
        bottom_bar_2_btn.setOnClickListener(this);
        bottom_bar_3_btn.setOnClickListener(this);
        bottom_bar_4_btn.setOnClickListener(this);

        setSelectStatus(1);//默认选择
    }

在onclick函数中获取事件

 @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.bottom_bar_1_btn:
                setSelectStatus(0);
                break;
            case R.id.bottom_bar_2_btn:
                setSelectStatus(1);
                break;
            case R.id.bottom_bar_3_btn:
                setSelectStatus(2);
                break;
            case R.id.bottom_bar_4_btn:
                setSelectStatus(3);
                break;
        }
        replaceFragment(fragments.get(view.getId()));
    }

点击后变色并跳转

 private  void setSelectStatus(int index){
        switch(index){
            case 0:
                //图片点击选择变换图片,颜色的改变,其他变为原来的颜色,并保持原来的图片
                bottom_bar_image_1.setImageResource(R.mipmap.ic_course_selected);
                bottom_bar_text_1.setTextColor(Color.parseColor("#0097F7"));

                //其他文本和颜色不变
                bottom_bar_image_2.setImageResource(R.mipmap.ic_exercise);
                bottom_bar_text_2.setTextColor(Color.parseColor("#000000"));

                bottom_bar_image_3.setImageResource(R.mipmap.ic_message);
                bottom_bar_text_3.setTextColor(Color.parseColor("#000000"));

                bottom_bar_image_4.setImageResource(R.mipmap.ic_my);
                bottom_bar_text_4.setTextColor(Color.parseColor("#000000"));

                break;


            case 1:
                //图片点击选择变换图片,颜色的改变,其他变为原来的颜色,并保持原来的图片
                bottom_bar_image_2.setImageResource(R.mipmap.ic_exercise_selected);
                bottom_bar_text_2.setTextColor(Color.parseColor("#0097F7"));

                //其他文本和颜色不变
                bottom_bar_image_1.setImageResource(R.mipmap.ic_course);
                bottom_bar_text_1.setTextColor(Color.parseColor("#000000"));

                bottom_bar_image_3.setImageResource(R.mipmap.ic_message);
                bottom_bar_text_3.setTextColor(Color.parseColor("#000000"));

                bottom_bar_image_4.setImageResource(R.mipmap.ic_my);
                bottom_bar_text_4.setTextColor(Color.parseColor("#000000"));

                break;

            case 2:
                //图片点击选择变换图片,颜色的改变,其他变为原来的颜色,并保持原来的图片
                bottom_bar_image_3.setImageResource(R.mipmap.ic_message_selected);
                bottom_bar_text_3.setTextColor(Color.parseColor("#0097F7"));

                //其他文本和颜色不变
                bottom_bar_image_2.setImageResource(R.mipmap.ic_exercise);
                bottom_bar_text_2.setTextColor(Color.parseColor("#000000"));

                bottom_bar_image_1.setImageResource(R.mipmap.ic_course);
                bottom_bar_text_1.setTextColor(Color.parseColor("#000000"));

                bottom_bar_image_4.setImageResource(R.mipmap.ic_my);
                bottom_bar_text_4.setTextColor(Color.parseColor("#000000"));

                break;

            case 3:
                //图片点击选择变换图片,颜色的改变,其他变为原来的颜色,并保持原来的图片
                bottom_bar_image_4.setImageResource(R.mipmap.ic_my_selected);
                bottom_bar_text_4.setTextColor(Color.parseColor("#0097F7"));

                //其他文本和颜色不变
                bottom_bar_image_2.setImageResource(R.mipmap.ic_exercise);
                bottom_bar_text_2.setTextColor(Color.parseColor("#000000"));

                bottom_bar_image_3.setImageResource(R.mipmap.ic_message);
                bottom_bar_text_3.setTextColor(Color.parseColor("#000000"));

                bottom_bar_image_1.setImageResource(R.mipmap.ic_course);
                bottom_bar_text_1.setTextColor(Color.parseColor("#000000"));
                break;
        }
    }

我们到testFragment里onCreate方法中获得Activity中实现好的实例化接口对象
2020-10-10

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
        }
        titleCallback=(MainActivity)getActivity();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view= inflater.inflate(R.layout.fragment_test, container, false);
        TextView tvContent=view.findViewById(R.id.tv_content);
        tvContent.setText(mParam1);
        if (titleCallback!=null){
            titleCallback.setTitle(mParam1);
        }
        return  view;
    }
    //定义回调接口
    private TitleCallback titleCallback;
    public  interface  TitleCallback{
        void setTitle(String title);
    }

到此我们就完成了一个简单的小功能啦(~ ̄▽ ̄)~

步骤:
1.在Fragment类中定义一个回调接口
2.在Activity中实现这个回调接口
3.在Fragment的onCreate方法中获得Activity中实现好的实例化接口对象
4.利用接口的对象进行传值

本文地址:https://blog.csdn.net/Lioer_/article/details/108992147