package android.serialport.api.sample; import java.util.ArrayList; import java.util.List; import android.animation.ObjectAnimator; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.serialport.api.SerialPort; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.DisplayMetrics; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.HorizontalScrollView; import android.widget.ImageView; import android.widget.TextView; public class MainActivity extends FragmentActivity implements OnClickListener, OnPageChangeListener { public static MainActivity CuttentActivity; public Fragment_BUS mFragment_BUS; public Fragment_KNX mFragment_KNX; public Fragment_Update mFragment_Update; private ViewPager mViewPager; private TextView TabTextView_BUS, TabTextView_KNX, TabTextView_Upgrade; private ImageView Tab_Line; private List mFragmentList; private int moveOne = 0; private boolean isScrolling = false;// 手指是否在移动 /** 手指离开后的回弹 */ private boolean isBackScrolling = false;// 手指离开后的回弹 private long startTime = 0; private long currentTime = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CuttentActivity = this; setContentView(R.layout.activity_main); iniView(); iniData(); SetImageLineWidth(); } @Override protected void onStart() { super.onStart(); Intent intent = new Intent(this, MyService.class); startService(intent); } @Override protected void onResume() { super.onResume(); } @Override protected void onStop() { super.onStop(); Intent intent = new Intent(this, MyService.class); stopService(intent); } @Override protected void onDestroy() { super.onDestroy(); android.os.Process.killProcess(android.os.Process.myPid()); } private void iniView() { mFragmentList = new ArrayList(); mFragment_BUS = new Fragment_BUS(); mFragment_KNX = new Fragment_KNX(); mFragment_Update = new Fragment_Update(); mFragmentList.add(mFragment_BUS); mFragmentList.add(mFragment_KNX); mFragmentList.add(mFragment_Update); TabTextView_BUS = (TextView) findViewById(R.id.textView_bus); TabTextView_BUS.setTextColor(Color.RED); TabTextView_KNX = (TextView) findViewById(R.id.textView_knx); TabTextView_Upgrade = (TextView) findViewById(R.id.textView_upgrade); TabTextView_BUS.setOnClickListener(this); TabTextView_KNX.setOnClickListener(this); TabTextView_Upgrade.setOnClickListener(this); mViewPager = (ViewPager) findViewById(R.id.mViewPager); mViewPager.setAdapter(new MyFragmentAdapter(getSupportFragmentManager(), mFragmentList)); mViewPager.setCurrentItem(0); mViewPager.addOnPageChangeListener(this); Tab_Line = (ImageView) findViewById(R.id.tab_image); } private void iniData() { CuttentActivity = this; SerialPort.BackLight_ON(); } // 下划线跟随手指的滑动而滑动 private void movePositionX(int toPosition, float positionOffsetPixels) { float curTranslationX = Tab_Line.getTranslationX(); float toPositionX = moveOne * toPosition + positionOffsetPixels; ObjectAnimator animator = ObjectAnimator.ofFloat(Tab_Line, "TranslationX", curTranslationX, toPositionX); animator.setDuration(1000); animator.start(); } // 下划线滑动到新的选项中 private void movePositionX(int toPosition) { movePositionX(toPosition, 0); } /** 设置线条的宽度 */ private void SetImageLineWidth() { DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screew = dm.widthPixels;// 获取屏幕的宽 // 重新设置划线宽 LayoutParams lp = Tab_Line.getLayoutParams(); lp.width = screew / 3; Tab_Line.setLayoutParams(lp); moveOne = lp.width;// 记录距离 } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { currentTime = System.currentTimeMillis(); if (isScrolling && (currentTime - startTime > 200)) { movePositionX(position, moveOne * positionOffset); startTime = currentTime; } if (isBackScrolling) { movePositionX(position); } } @Override public void onPageSelected(int position) { switch (position) { case 0: TabTextView_BUS.setTextColor(Color.RED); TabTextView_KNX.setTextColor(Color.BLACK); TabTextView_Upgrade.setTextColor(Color.BLACK); break; case 1: TabTextView_BUS.setTextColor(Color.BLACK); TabTextView_KNX.setTextColor(Color.RED); TabTextView_Upgrade.setTextColor(Color.BLACK); break; case 2: TabTextView_BUS.setTextColor(Color.BLACK); TabTextView_KNX.setTextColor(Color.BLACK); TabTextView_Upgrade.setTextColor(Color.RED); break; default: break; } } @Override public void onPageScrollStateChanged(int state) { switch (state) { case 1:// 手指拖动 isScrolling = true; isBackScrolling = false; break; case 2:// 手指弹起 isScrolling = false; isBackScrolling = true; break; default:// 0 动作完成 isScrolling = false; isBackScrolling = false; break; } } @Override public void onClick(View v) { if (v.equals(TabTextView_BUS)) { // mViewPager.setCurrentItem(0); // ReadViewLocation(v); } else if (v.equals(TabTextView_KNX)) { // mViewPager.setCurrentItem(1); // ReadViewLocation(v); } else if (v.equals(TabTextView_Upgrade)) { // mViewPager.setCurrentItem(2); // ReadViewLocation(v); } else { // } } @Override public boolean dispatchTouchEvent(MotionEvent ev) { try { if (Fragment_BUS.openBackLight != null) { if (!Fragment_BUS.openBackLight.isChecked()) { SerialPort.BackLight_ON(); Fragment_BUS.openBackLight.setChecked(true); } } } catch (Exception e) { // } return super.dispatchTouchEvent(ev); } }