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<Fragment> 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<Fragment>();
|
|
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);
|
}
|
|
}
|