2012年4月2日 星期一

ViewFlipper + gesture






public class ViewFlipperActivity extends Activity implements OnTouchListener {
/** Called when the activity is first created. */

private GestureDetector mGestureDetector;
private Animation slideLeftIn;
private Animation slideLeftOut;
private Animation slideRightIn;
private Animation slideRightOut;
private ViewFlipper mViewFlipper;

private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
private int FP = ViewGroup.LayoutParams.FILL_PARENT;

private Matrix suppMatrix = new Matrix();
private Matrix mBaseMatrix = new Matrix();
private Matrix mDisplayMatrix = new Matrix();

private static boolean isZoom = false;

private Integer[] images = { R.drawable.pic01, R.drawable.pic02,
R.drawable.pic03, R.drawable.pic04, R.drawable.pic05,
R.drawable.pic06 };
private String [] textStrings = {"春香", "夏香", "秋香", "冬香", "仲香", "奎香"};

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mGestureDetector = new GestureDetector(this, new MyGestureDetector());
mViewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper1);
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);

LayoutParams ivParams = new ViewGroup.LayoutParams(FP, 200);
LayoutParams tvParams = new ViewGroup.LayoutParams(100, 100);
int index = 0;
for (Integer i : images) {

ImageView iv = new ImageView(this);
iv.setImageResource(i);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
     mViewFlipper.addView(iv, index, ivParams);
index++;
}
for (String i : textStrings) {

TextView tv = new TextView(this);
tv.setText(i);
tv.setHeight(100);
tv.setWidth(100);
tv.setGravity(300);
tv.setTextSize(50);
tv.setTextColor(Color.YELLOW);
mViewFlipper.addView(tv, index, tvParams);
index++;
}

mViewFlipper.setOnTouchListener(this);
mViewFlipper.setLongClickable(true);

}

class MyGestureDetector extends SimpleOnGestureListener {

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub

if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
mViewFlipper.setInAnimation(slideLeftIn);
mViewFlipper.setOutAnimation(slideLeftOut);
mViewFlipper.showNext();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
mViewFlipper.setInAnimation(slideRightIn);
mViewFlipper.setOutAnimation(slideRightOut);
mViewFlipper.showPrevious();
}
return false;
}//end of onFling

// @Override
// public void onLongPress(MotionEvent e) {
// // TODO Auto-generated method stub
//
// ImageView iv = (ImageView) mViewFlipper.getCurrentView();
// //mSuppMatrix.postTranslate(2, 2);
// mDisplayMatrix.setRotateM(0.0f, +350.0f, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
// mDisplayMatrix.set(mBaseMatrix);
// mDisplayMatrix.postConcat(suppMatrix);
// iv.setImageMatrix(mDisplayMatrix);
// //super.onLongPress(e);
//
// isZoom = true;
// }//end of onLongPress
}// end of class MyGestureDetector

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return mGestureDetector.onTouchEvent(event);
}// end of onTouch

}

*****************************
res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <ViewFlipper
        android:id="@+id/viewFlipper1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/pic01" />
        
    </ViewFlipper>

</LinearLayout>

*************************************
1. res/anim/sideleft_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">  
    <translate  
        android:fromXDelta="100%p"   
        android:toXDelta="0"   
        android:duration="500"  
        />  
    <alpha  
        android:fromAlpha="0.0"   
        android:toAlpha="1.0"  
        android:duration="500"  
        /> 
</set>

2. res/anim/sideleft_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate  
        android:fromXDelta="0"   
        android:toXDelta="-100%p"   
        android:duration="500"  
        />  
    <alpha  
        android:fromAlpha="1.0"   
        android:toAlpha="0.0"   
        android:duration="500"  
        />

</set>

3. res/anim/side_right_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">  
    <translate   
        android:fromXDelta="-100%p"   
        android:toXDelta="0"   
        android:duration="500"  
        />  
    <alpha  
        android:fromAlpha="0.0"   
        android:toAlpha="1.0"  
        android:duration="500"  
        />  
</set>

4. res/anim/side_right_out.xml

<?xml version="1.0" encoding="utf-8"?>  
<set xmlns:android="http://schemas.android.com/apk/res/android">  
    <translate   
        android:fromXDelta="0"   
        android:toXDelta="100%p"   
        android:duration="500"  
        />  
    <alpha  
        android:fromAlpha="1.0"   
        android:toAlpha="0.0"  
        android:duration="500"  
        />  
</set>  





沒有留言:

張貼留言