1. 程式人生 > 其它 >團隊專案——和諧共生(1)

團隊專案——和諧共生(1)

由於這學期的時間比較緊迫,所以是邊學邊做

今天學習了ViewPager和fragment,使用這兩個知識做出了我們app的首頁,效果圖是這樣的

 

專案結構目前是這樣的

 

 核心程式碼:

package com.example.peace;
//登入之後進入的介面
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.widget.ViewPager2;

import android.os.Bundle;
import
android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import java.util.ArrayList; import java.util.List; public class BrowerActivity extends AppCompatActivity implements View.OnClickListener { ViewPager2 viewPager; private LinearLayout lbrow,ldialog,lgame;
private ImageView ivBrow,ivDialog,ivGame,ivCurrent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_brower); //初始化ViewPager initPager(); initTabView(); } private
void initTabView() { lbrow=findViewById(R.id.tab_brow); lbrow.setOnClickListener(this); ldialog=findViewById(R.id.tab_dialog); ldialog.setOnClickListener(this); lgame=findViewById(R.id.tab_game); lgame.setOnClickListener(this); ivBrow=findViewById(R.id.tab_iv_brow); ivDialog=findViewById(R.id.tab_iv_dialog); ivGame=findViewById(R.id.tab_iv_game); ivBrow.setSelected(true); ivCurrent=ivBrow; } private void initPager() { viewPager=findViewById(R.id.viewpager); ArrayList<Fragment> fragments=new ArrayList<>(); fragments.add(BlankFragment.newInstance("瀏覽")); fragments.add(BlankFragment.newInstance("討論")); fragments.add(BlankFragment.newInstance("娛樂一把")); PagerAdapter pagerAdapter=new PagerAdapter(getSupportFragmentManager(),getLifecycle(),fragments); viewPager.setAdapter(pagerAdapter); viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { super.onPageScrolled(position, positionOffset, positionOffsetPixels); } @Override public void onPageSelected(int position) { super.onPageSelected(position); changeTab(position); } @Override public void onPageScrollStateChanged(int state) { super.onPageScrollStateChanged(state); } }); } private void changeTab(int position) { ivCurrent.setSelected(false); switch (position){ case R.id.tab_brow: viewPager.setCurrentItem(0); case 0:ivBrow.setSelected(true); ivCurrent=ivBrow; break; case R.id.tab_dialog: viewPager.setCurrentItem(1); case 1:ivDialog.setSelected(true); ivCurrent=ivDialog; break; case R.id.tab_game: viewPager.setCurrentItem(2); case 2:ivGame.setSelected(true); ivCurrent=ivGame; break; } } @Override public void onClick(View view) { changeTab(view.getId()); } }
package com.example.peace;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

/**
 * A simple {@link Fragment} subclass.
 * Use the {@link BlankFragment#newInstance} factory method to
 * create an instance of this fragment.
 */
public class BlankFragment extends Fragment {

    private static final String ARG_PARAM1 = "param1";
    View rootView;

    // TODO: Rename and change types of parameters
    private String mText;

    public BlankFragment() {
        // Required empty public constructor
    }

    // TODO: Rename and change types and number of parameters
    public static BlankFragment newInstance(String param1) {
        BlankFragment fragment = new BlankFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        fragment.setArguments(args);
        return fragment;
    }

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

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        if (rootView==null){
            rootView = inflater.inflate(R.layout.fragment_blank, container, false);
        }
        initView();
        return rootView;
    }

    private void initView() {
        TextView textView=rootView.findViewById(R.id.text);
        textView.setText(mText);
    }
}
<include layout="@layout/bottom_layout"/>
<!--必須要在MainActivity中引入bottom檔案-->