| | |
| | | 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.BaseFragment; |
| | | 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 BaseActivity { |
| | | ActivityMainBinding binding; |
| | | List<Fragment> mFragment = new ArrayList<>(); |
| | | public class MainActivity extends AppCompatActivity { |
| | | 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) { |
| | |
| | | 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)); |
| | | } |
| | | } |