?????? 在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實現帶漸顯按鈕的左右滑動效果 自然狀態下按鈕不可見,觸摸屏幕時顯示按鈕 * * @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實現漸顯按鈕的左右滑動效果"); 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相關參數 wmParams = new WindowManager.LayoutParams(); // 設置window type wmParams.type = LayoutParams.TYPE_PHONE; // 設置圖片格式,效果為背景透明 wmParams.format = PixelFormat.RGBA_8888; // 設置Window flag參數 wmParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_FOCUSABLE; // 設置x、y初始值 wmParams.x = 0; wmParams.y = 0; // 設置窗口長寬數據 wmParams.width = 50; wmParams.height = 50; // 創建左右按鈕 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; } }
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
