PsuAiJe的网络学习笔记本

package com.example.textviewslide;import android.os.Bundle;import android.app.Activity;import android.view.GestureDetector;import android.view.Menu;import android.view.MotionEvent;import android.view.View;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.TextView;import android.widget.ViewFlipper;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import static android.view.GestureDetector.SimpleOnGestureListener;//需要继承OnTouchListenerpublic class MainActivity extends Activity implements View.OnTouchListener {/***处理手势的实例变量*/GestureDetector mGestrue = null;/*** 手指滑动时,X轴最小的滑动距离*/private static final int SWIPE_MIN_DISTANCE = 120;/*** 手指滑动时,Y轴的最小距离*/private static final int SWIPE_MAX_OFF_PATH = 250;/*** 手指滑动时,最小的滑动速度*/private static final int SWIPE_THRESHOLD_VELOCITY = 200;//动画private Animation slideLeftIn;private Animation slideLeftOut;private Animation slideRightIn;private Animation slideRightOut;ViewFlipper viewFlipper;TextView TextView_Today;TextView TextView_Nextday;TextView TextView_Prevday;/*** 定义日历*/Calendar calendar ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewFlipper = (ViewFlipper)findViewById(R.id.viewFlipper);//初始化当前日期calendar = Calendar.getInstance();//加载当前日期分页CreateDay();//添加Animation实现不同动画效果slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);slideRightOut = AnimationUtils.loadAnimation(this,R.anim.slide_right_out);slideLeftIn.setAnimationListener(animationListener);slideLeftOut.setAnimationListener(animationListener);slideRightIn.setAnimationListener(animationListener);slideRightOut.setAnimationListener(animationListener);//创建处理手势的实例mGestrue = new GestureDetector(this, new GestureListenter());}/*** 获取手势状态* @param view* @param motionEvent* @return*/@Overridepublic boolean onTouch(View view, MotionEvent motionEvent) {return mGestrue.onTouchEvent(motionEvent);}/*** 创建一个动画监听事件*/Animation.AnimationListener animationListener = new Animation.AnimationListener() {//动画开始调用@Overridepublic void onAnimationStart(Animation animation) {}//动画完成调用@Overridepublic void onAnimationEnd(Animation animation) {//动画完成,创建新的日期显示CreateDay();}//动画重复调用@Overridepublic void onAnimationRepeat(Animation animation) {}};/*** 内部类,继承SimpleOnGestureListener实现手势控制*/class GestureListenter extends SimpleOnGestureListener{@Override//e1为向量的起点,e2为向量的终点。velocityX为X轴的移动速度,velocityY为Y轴的移动速度。public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {try{if (Math.abs(e1.getY() – e2.getY()) > SWIPE_MAX_OFF_PATH){return false;}//从右向左滑动,下一天if (e1.getX() -e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY){viewFlipper.setInAnimation(slideLeftIn);viewFlipper.setOutAnimation(slideLeftOut);viewFlipper.showNext();//日期修改改为下一天nextDay();return true;}else if (e2.getX() – e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY){//从左向右滑动,前一天System.out.println("从右向左:" + String.valueOf(e2.getX() -e1.getX()));viewFlipper.setInAnimation(slideRightIn);viewFlipper.setOutAnimation(slideRightOut);viewFlipper.showPrevious();//日期修改为上一天previousDay();return true;}}catch(Exception e) {}return false;}}/*** 当前日期增加一天*/private void nextDay(){calendar.add(Calendar.DAY_OF_MONTH , 1);}/*** 当前日期减去一天*/private void previousDay(){calendar.add(Calendar.DAY_OF_MONTH , -1);}/*** 将日期类型转换为2013-03-10* @param currentTime* @return*/public String getStringDateShort(Date currentTime) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");String dateString = formatter.format(currentTime);return dateString;}/*** 创建日期显示*/public void CreateDay(){//创建三个日历对象Calendar tempCalendar1 = Calendar.getInstance();Calendar tempCalendar2 = Calendar.getInstance();Calendar tempCalendar3 = Calendar.getInstance();// 将三个日历对象分别设置成当前TextView中显示的日期时间。// calendar对象会根据滑动TextView控件而增加一天或减去一天。tempCalendar1.setTime(calendar.getTime());tempCalendar2.setTime(calendar.getTime());tempCalendar3.setTime(calendar.getTime());//创建当天的TextView对象,设置属性及内容TextView_Today = new TextView(this);TextView_Today.setTextSize(30);TextView_Today.setClickable(true);TextView_Today.setText(getStringDateShort(tempCalendar1.getTime()));//创建下一天的TextView对象,设置属性及内容TextView_Nextday = new TextView(this);TextView_Nextday.setTextSize(30);TextView_Nextday.setClickable(true);tempCalendar2.add(Calendar.DAY_OF_MONTH , 1);TextView_Nextday.setText(getStringDateShort(tempCalendar2.getTime()));//创建前一天的TextView对象,设置属性及内容TextView_Prevday = new TextView(this);TextView_Prevday.setTextSize(30);TextView_Prevday.setClickable(true);tempCalendar3.add(Calendar.DAY_OF_MONTH , -1);TextView_Prevday.setText(getStringDateShort(tempCalendar3.getTime()));//设置TextView的监听事件TextView_Today.setOnTouchListener(this);TextView_Nextday.setOnTouchListener(this);TextView_Prevday.setOnTouchListener(this);//如果viewFlipper里有内容则全部删除if (viewFlipper.getChildCount() != 0){viewFlipper.removeAllViews();}//将TextView对象添加到ViewFlipper对象中viewFlipper.addView(TextView_Today);viewFlipper.addView(TextView_Nextday);viewFlipper.addView(TextView_Prevday);}}

,世上没有绝望的处境,只有对处境绝望的人。

PsuAiJe的网络学习笔记本

相关文章:

你感兴趣的文章:

标签云: