管灌系统巡查员智能手机App
zuoxiao
2024-11-28 fbfa859ff0fe312cbb49a3345b6e3d67d574a946
app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java
@@ -3,62 +3,69 @@
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import com.dayu.pipirrapp.R;
import com.dayu.pipirrapp.adapter.TabAdapter;
import com.dayu.pipirrapp.databinding.ActivityMainBinding;
import com.dayu.pipirrapp.fragment.MainFragment;
import com.dayu.pipirrapp.fragment.OrderFragment;
import com.dayu.pipirrapp.fragment.MapFragment;
import com.dayu.pipirrapp.fragment.MyFragment;
import com.dayu.pipirrapp.net.MqttManager;
import java.util.ArrayList;
import java.util.List;
/**
 *
 * 首页
 */
public class MainActivity extends AppCompatActivity {
    ActivityMainBinding binding;
    List<Fragment> mFragment = new ArrayList<>();
    private ActivityMainBinding binding;
    private List<Fragment> fragments = new ArrayList<>();
    private long mExitTime;
    MqttManager mqttManager;
    private enum Tab {
        ORDER, MAP, MY
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityMainBinding.inflate(LayoutInflater.from(this));
        MapFragment mapFragment = new MapFragment();
        setContentView(binding.getRoot());
        mFragment.add(mapFragment);
        mFragment.add(new MainFragment());
        mFragment.add(new MyFragment());
        setupFragments();
        initView();
        initTab();
        mqttManager = new MqttManager(this);
        mqttManager.connect();
    }
    private void getPermission(){
    private void setupFragments() {
        fragments.add(new OrderFragment());
        fragments.add(new MapFragment());
        fragments.add(new MyFragment());
    }
    private void initView() {
        binding.orderLL.setOnClickListener(v -> changeBottomState(Tab.ORDER));
        binding.mapLL.setOnClickListener(v -> changeBottomState(Tab.MAP));
        binding.myLL.setOnClickListener(v -> changeBottomState(Tab.MY));
    }
    private void initTab() {
        TabAdapter adapter = new TabAdapter(getSupportFragmentManager(), mFragment);
        TabAdapter adapter = new TabAdapter(getSupportFragmentManager(), fragments);
        binding.viewPager.setAdapter(adapter);
        binding.viewPager.setPagingEnabled(false);
        //设置缓存view 的个数
        binding.viewPager.setOffscreenPageLimit(3);
        // 将 ViewPager 与 TabLayout 关联
        binding.tabLayout.setupWithViewPager(binding.viewPager);
        binding.viewPager.setOffscreenPageLimit(fragments.size());
        binding.viewPager.setCurrentItem(1); // 默认显示地图页
    }
    long mExitTime;
    //点击两次退出程序 有时间间隔 间隔内点击则退出程序 否则 则提示
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
@@ -66,11 +73,70 @@
                Toast.makeText(MainActivity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
                mExitTime = System.currentTimeMillis();
            } else {
                MainActivity.this.finish();
                finish();
            }
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //关闭MQ
        mqttManager.disconnect();
    }
    /**
     * 修改底部状态
     */
    private void changeBottomState(Tab tab) {
        resetTabState();
        switch (tab) {
            case ORDER:
                updateTabUI(0, R.drawable.bottom_order_white, R.color.white);
                break;
            case MAP:
                updateTabUI(1, R.drawable.bottom_map_white, R.color.white);
                break;
            case MY:
                updateTabUI(2, R.drawable.bottom_my_white, R.color.white);
                break;
        }
    }
    /**
     * 更新某个 Tab 的 UI 状态
     */
    private void updateTabUI(int position, int iconResId, int textColorResId) {
        binding.viewPager.setCurrentItem(position);
        switch (position) {
            case 0:
                binding.orderImg.setImageDrawable(ContextCompat.getDrawable(this, iconResId));
                binding.orderText.setTextColor(ContextCompat.getColor(this, textColorResId));
                break;
            case 1:
                binding.mapImg.setImageDrawable(ContextCompat.getDrawable(this, iconResId));
                binding.mapText.setTextColor(ContextCompat.getColor(this, textColorResId));
                break;
            case 2:
                binding.myImg.setImageDrawable(ContextCompat.getDrawable(this, iconResId));
                binding.myText.setTextColor(ContextCompat.getColor(this, textColorResId));
                break;
        }
    }
    /**
     * 重置所有 Tab 的默认状态
     */
    private void resetTabState() {
        binding.orderImg.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.bottom_order_black));
        binding.orderText.setTextColor(ContextCompat.getColor(this, R.color.black));
        binding.mapImg.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.bottom_map_black));
        binding.mapText.setTextColor(ContextCompat.getColor(this, R.color.black));
        binding.myImg.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.bottom_my_black));
        binding.myText.setTextColor(ContextCompat.getColor(this, R.color.black));
    }
}