大神们在哪里?解决一个滑动切屏的问题!!
现在我把一个屏都放成了TextView控件,发现,我用ViewFlipper实现滑动时,居然在上面不起作用!
android:layout_width="match_parent"
android:layout_height="36dip"
android:gravity="center_vertical"
android:inputType="text|textMultiLine"
android:textColor="#ff000000"
android:textSize="14sp" />
<TextView
android:id="@+id/rslt_quiet_duration"
android:layout_width="wrap_content"
android:layout_height="36dip"
android:gravity="center_vertical"
android:inputType="text|textMultiLine"
android:textColor="#ff000000"
android:textSize="14sp" />
</TableRow>
.......
[code=Java]
/
/**
* @author Shaofeng Wang (wang123sf@gmail.com)
*/
public class ResultActivity extends BaseActivity implements
View.OnTouchListener, View.OnClickListener, OnGestureListener,
OnDoubleTapListener {
private ViewFlipper mViewFlipper;
private GestureDetector mGestureDetector;
private LinearLayout graphViews = null;
private LinearLayout graphVviewsss = null;
private LinearLayout textview = null;
// ===================================********************
private static final String TAG = "ResultActivity";
private static final int FLAG_TODAY = 1;
private static final int FLAG_YESTERDAY = 2;
private static final int FLAG_WEEK = 3;
private static final int FLAG_MONTH = 4;
private int record_flag = 0;
private TitleBar titleBar = null;
private ResultStatGraphView graphView = null;
private ResultStatGraphViews graphViewss = null;
// **********************************************
// private ResultStatGraphViews graphsViews = null;
// *********************************************
private Button todayBt = null;
private Button yesterdayBt = null;
private Button weekBt = null;
private Button monthBt = null;
// private TextView actDurationTv = null;
// private TextView quietDurationTv = null;
// private TextView actHeartrateTv = null;
// private TextView quietHeartrateTv = null;
// private TextView abnCountTv = null;
// private TextView mostSeriousAbnTv = null;
//
// private TextView coupleRhythmTv = null;
// private TextView tripleRhythmiaTv = null;
// private TextView anisohythmiaTv = null;
// private TextView bradycardiaTv = null;
// private TextView tachycardiaTv = null;
// private TextView pauseTv = null;
private StatisticsAnalyzer statAnalyzer = null;
private Statistics statistics = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.result);
statAnalyzer = new DefaultStatisticsAnalyser(getApplicationContext());
initView();
SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
if (sp.contains(Prefs.KEY_STATISTIC)) {
String statStr = sp.getString(Prefs.KEY_STATISTIC, "");
statistics = Statistics.parseStatistics(statStr);
showStatistics();
} else {
// 分析数据
new StatisticsTask().execute();
}
LinearLayout layout = new LinearLayout(this);
// ************************************************
mViewFlipper = (ViewFlipper) findViewById(R.id.viewflipper);
mGestureDetector = new GestureDetector(this);
graphViewss = (ResultStatGraphViews) findViewById(R.id.rslt_stat_graphss);
//graphView = (ResultStatGraphView) findViewById(R.id.rslt_stat_graph);
//graphViewss.setOnTouchListener(this);
//graphView.setOnTouchListener(this);
}
public View getLayoutView(int layoutId) {
LayoutInflater mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View mView = mInflater.inflate(layoutId, null);
return mView;
}
@Override
public void onDestroy() {
dismissProgressDialog();
super.onDestroy();
}
/**
* 初始化界面
*/
private void initView() {
titleBar = (TitleBar) findViewById(R.id.rslt_title_bar);
titleBar.setTitle(getString(R.string.rslt_tbar_title));
titleBar.getRightButton().setVisibility(View.INVISIBLE);
graphView = (ResultStatGraphView) findViewById(R.id.rslt_stat_graph);
// graphsViews = (ResultStatGraphViews)
// findViewById(R.id.rslt_stat_graphs);
todayBt = (Button) findViewById(R.id.rslt_today_btn);
todayBt.setOnClickListener(this);
yesterdayBt = (Button) findViewById(R.id.rslt_yesterday_btn);
yesterdayBt.setOnClickListener(this);
weekBt = (Button) findViewById(R.id.rslt_week_btn);
weekBt.setOnClickListener(this);
monthBt = (Button) findViewById(R.id.rslt_month_btn);
monthBt.setOnClickListener(this);
graphViewss = (ResultStatGraphView)
findViewById(R.id.rslt_stat_graphs);
actDurationTv = (TextView) findViewById(R.id.rslt_act_duration);
quietDurationTv = (TextView) findViewById(R.id.rslt_quiet_duration);
actHeartrateTv = (TextView) findViewById(R.id.rslt_act_heartrate);
quietHeartrateTv = (TextView)
findViewById(R.id.rslt_quiet_heartrate);
abnCountTv = (TextView) findViewById(R.id.rslt_abn_count);
mostSeriousAbnTv = (TextView)
findViewById(R.id.rslt_most_serious_abn);
coupleRhythmTv = (TextView)
findViewById(R.id.rslt_abn_couple_rhythm);
tripleRhythmiaTv = (TextView)
findViewById(R.id.rslt_abn_triple_rhythm);
anisohythmiaTv = (TextView) findViewById(R.id.rslt_abn_anisohythmia);
bradycardiaTv = (TextView) findViewById(R.id.rslt_abn_bradycardia);
tachycardiaTv = (TextView) findViewById(R.id.rslt_abn_tachycardia);
pauseTv = (TextView) findViewById(R.id.rslt_abn_pause);
}
@Override
public void onClick(View v) {
if (statistics == null) {
return;
}
switch (v.getId()) {
case R.id.rslt_today_btn:
LogUtil.d(TAG, "[[Show today's record]]");
record_flag = FLAG_TODAY;
graphView.setStatistics(statistics.getTodayRecord());
showRecord(statistics.getTodayRecord());
break;
case R.id.rslt_yesterday_btn:
LogUtil.d(TAG, "[[Show yesterday's record]]");
record_flag = FLAG_YESTERDAY;
graphView.setStatistics(statistics.getYesterdayRecord());
showRecord(statistics.getYesterdayRecord());
break;
}
graphView.invalidate();
graphViewss.invalidate();
updateButtons();
}
private void showRecord(StatisticsRecord record) {
String CRLF = ": ";
if (record != null && record.effective) {
actDurationTv.setText(getString(R.string.rslt_act_duration) + CRLF
+ format(record.activeDuration));
quietDurationTv.setText(getString(R.string.rslt_quiet_duration)
.
.
.
}
}
private void showStatistics() {
if (statistics != null) {
if (statistics.getTodayRecord().effective) {
graphView.setStatistics(statistics.getTodayRecord());
// showRecord(statistics.getTodayRecord());
graphViewss.setStatisticss(statistics.getTodayRecord());
record_flag = FLAG_TODAY;
} else if (statistics.getYesterdayRecord().effective) {
graphView.setStatistics(statistics.getYesterdayRecord());
// showRecord(statistics.getYesterdayRecord());
graphViewss.setStatisticss(statistics.getYesterdayRecord());
record_flag = FLAG_YESTERDAY;
} else if (statistics.getMonthlyRecord().effective) {
graphView.setStatistics(statistics.getMonthlyRecord());
// showRecord(statistics.getMonthlyRecord());
graphViewss.setStatisticss(statistics.getMonthlyRecord());
record_flag = FLAG_MONTH;
} else {
graphView.setStatistics(null);
graphViewss.setStatisticss(null);
}
graphView.invalidate();
graphViewss.invalidate();
updateButtons();
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
LogUtil.d(TAG, "进入OnDown里面!!!");
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
/*
* mViewFlipper.stopFlipping(); // 点击事件后,停止自动播放
* mViewFlipper.setAutoStart(false);
*/
LogUtil.d(TAG, "进入OnTouchEvent里面!!!");
return mGestureDetector.onTouchEvent(event); // 注册手势事件
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e2.getX() > e1.getX()) { // 从左向右滑动(左进右出)
Animation rInAnim = AnimationUtils.loadAnimation(this,
R.anim.push_right_in); // 向右滑动左侧进入的渐变效果(alpha 0.1 -> 1.0)
Animation rOutAnim = AnimationUtils.loadAnimation(this,
R.anim.push_right_out); // 向右滑动右侧滑出的渐变效果(alpha 1.0 -> 0.1)
mViewFlipper.setInAnimation(rInAnim);
mViewFlipper.setOutAnimation(rOutAnim);
LogUtil.d("test", e1.getX() + " " + e2.getX());
LogUtil.d(TAG, "向右滑动。。。。。。。。。。。onFling right 实现了没有!!!");
mViewFlipper.showPrevious();
return true;
} else if (e2.getX() < e1.getX()) { // 从右向左滑动(右进左出)
Animation lInAnim = AnimationUtils.loadAnimation(this,
R.anim.push_left_in); // 向左滑动左侧进入的渐变效果(alpha 0.1 -> 1.0)
Animation lOutAnim = AnimationUtils.loadAnimation(this,
R.anim.push_left_out); // 向左滑动右侧滑出的渐变效果(alpha 1.0 -> 0.1)
mViewFlipper.setInAnimation(lInAnim);
mViewFlipper.setOutAnimation(lOutAnim);
LogUtil.d("test", e1.getX() + " " + e2.getX());
LogUtil.d(TAG, " 向左滑动 。。。。。。。。。。。。 进入OnFling left里面!!!");
mViewFlipper.showNext();
return true;
}
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
LogUtil.d(TAG, "进入OnLongPress里面!!!");
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
LogUtil.d(TAG, "进入OnshowPress里面!!!");
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
LogUtil.d(TAG, "进入onSingleTapUp里面!!!");
return false;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
// TODO Auto-generated method stub
LogUtil.d(TAG, "进入OnDoubleTap里面!!!");
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
// TODO Auto-generated method stub
LogUtil.d(TAG, "进入OnDoubleTapEvent里面!!!");
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// TODO Auto-generated method stub
LogUtil.d(TAG, "进入OnSingleTapConfirmed里面!!!");
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return mGestureDetector.onTouchEvent(event);
}
}