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>
沒有留言:
張貼留言