?????? 在android的圖片的瀏覽時候經常使用。最近在網上查找資料自己也做一個如下:
?
?
package com.easyway.buttonpageflipper;
import com.easyway.buttonpageflipper.R;
import android.app.Activity;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.ViewFlipper;
/**
* Android實現(xiàn)帶漸顯按鈕的左右滑動效果 自然狀態(tài)下按鈕不可見,觸摸屏幕時顯示按鈕
*
* @author longgangbai
*
*/
public class ButtonpageflipperActivity extends Activity implements OnGestureListener{
// 聲明兩個按鈕,分別代表向左和向右滑動
private ImageView btnLeft = null;
private ImageView btnRight = null;
// 設置WindowManager
private WindowManager wm = null;
private WindowManager.LayoutParams wmParams = null;
// ImageView的alpha值
private int mAlpha = 0;
private boolean isHide;
private ViewFlipper viewFlipper = null;
private GestureDetector detector;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setTitle("Android實現(xiàn)漸顯按鈕的左右滑動效果");
viewFlipper = (ViewFlipper) this.findViewById(R.id.myViewFlipper);
detector = new GestureDetector(this);
// 初始化左右按鈕
initImageButtonView();
viewFlipper.addView(addImageView(R.drawable.photo1));
viewFlipper.addView(addImageView(R.drawable.photo2));
viewFlipper.addView(addImageView(R.drawable.photo3));
viewFlipper.addView(addImageView(R.drawable.photo4));
viewFlipper.addView(addImageView(R.drawable.photo5));
}
private View addImageView(int id) {
ImageView iv = new ImageView(this);
iv.setImageResource(id);
return iv;
}
/**
* 初始化懸浮按鈕
*/
private void initImageButtonView() {
// 獲取WindowManager
wm = (WindowManager) getApplicationContext().getSystemService("window");
// 設置LayoutParams相關參數(shù)
wmParams = new WindowManager.LayoutParams();
// 設置window type
wmParams.type = LayoutParams.TYPE_PHONE;
// 設置圖片格式,效果為背景透明
wmParams.format = PixelFormat.RGBA_8888;
// 設置Window flag參數(shù)
wmParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
| LayoutParams.FLAG_NOT_FOCUSABLE;
// 設置x、y初始值
wmParams.x = 0;
wmParams.y = 0;
// 設置窗口長寬數(shù)據(jù)
wmParams.width = 50;
wmParams.height = 50;
// 創(chuàng)建左右按鈕
createLeftButtonView();
createRightButtonView();
}
/**
* 設置左邊按鈕
*/
private void createLeftButtonView() {
btnLeft = new ImageView(this);
btnLeft.setImageResource(R.drawable.left);
btnLeft.setAlpha(0);
btnLeft.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// 上一個圖像
viewFlipper.setInAnimation(ButtonpageflipperActivity.this,
R.anim.push_left_in);
viewFlipper.setOutAnimation(ButtonpageflipperActivity.this,
R.anim.push_left_out);
viewFlipper.showPrevious();
}
});
// 調整窗口
wmParams.gravity = Gravity.LEFT | Gravity.CENTER_VERTICAL;
// 顯示圖像
wm.addView(btnLeft, wmParams);
}
/**
* 設置右邊按鈕
*/
private void createRightButtonView() {
btnRight = new ImageView(this);
btnRight.setImageResource(R.drawable.right);
btnRight.setAlpha(0);
btnRight.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// 下一個圖像
viewFlipper.setInAnimation(ButtonpageflipperActivity.this,
R.anim.push_right_in);
viewFlipper.setOutAnimation(ButtonpageflipperActivity.this,
R.anim.push_right_out);
viewFlipper.showNext();
}
});
// 調整窗口
wmParams.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL;
// 顯示圖像
wm.addView(btnRight, wmParams);
}
/**
* 設置按鈕漸顯效果
*/
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1 && mAlpha < 255) {
// 通過設置不透明度設置按鈕的漸顯效果
mAlpha += 50;
if (mAlpha > 255)
mAlpha = 255;
btnLeft.setAlpha(mAlpha);
btnLeft.invalidate();
btnRight.setAlpha(mAlpha);
btnRight.invalidate();
if (!isHide && mAlpha < 255)
mHandler.sendEmptyMessageDelayed(1, 100);
} else if (msg.what == 0 && mAlpha > 0) {
mAlpha -= 10;
if (mAlpha < 0)
mAlpha = 0;
btnLeft.setAlpha(mAlpha);
btnLeft.invalidate();
btnRight.setAlpha(mAlpha);
btnRight.invalidate();
if (isHide && mAlpha > 0)
mHandler.sendEmptyMessageDelayed(0, 800);
}
}
};
private void showImageButtonView() {
isHide = false;
mHandler.sendEmptyMessage(1);
}
private void hideImageButtonView() {
new Thread() {
public void run() {
try {
Thread.sleep(1500);
isHide = true;
mHandler.sendEmptyMessage(0);
} catch (Exception e) {
;
}
}
}.start();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
this.detector.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_DOWN:
showImageButtonView();
break;
case MotionEvent.ACTION_UP:
hideImageButtonView();
break;
}
return true;
}
@Override
public void onDestroy() {
super.onDestroy();
// 在程序退出(Activity銷毀)時銷毀窗口
wm.removeView(btnLeft);
wm.removeView(btnRight);
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e1.getX() - e2.getX() > 120) {
this.viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));
this.viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));
this.viewFlipper.showNext();
return true;
} else if (e1.getX() - e2.getX() < -120) {
this.viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));
this.viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));
this.viewFlipper.showPrevious();
return true;
}
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@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
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
}
?
?
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

