2011-06-24 6 views
1

私はアンドロイドには新しく、画像ビューでURLから読み込んだ画像にスワイプ効果を実装しようとしていましたが、 1つのURLを読み込まなければならないし、私は1つの画面全体をカバーする単一のイメージとしてデバイスの画面上の指をスワイプすることでそれらをすべて1つずつ見ることができる... 私は非常に多くのBtが実装するために失敗しました.. 私は1つの画像ビューが使用されます....いくつかのループのために&配列または何ですか?flipperに複数の画像ビューを追加し、それらの画像ビューにURLから画像をロードする

package com.conn; 

import android.R; 
import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.GestureDetector; 
import android.view.GestureDetector.SimpleOnGestureListener; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.webkit.WebView; 
import android.widget.ImageView; 
import android.widget.ViewFlipper; 

public class swipe_touch extends Activity { 
    private static final String LOGID = "CHECKTHISOUT"; 

    private static final int SWIPE_MIN_DISTANCE = 120; 
    private static final int SWIPE_MAX_OFF_PATH = 250; 
    private static final int SWIPE_THRESHOLD_VELOCITY = 200; 
    private GestureDetector gestureDetector; 
    View.OnTouchListener gestureListener; 

    private Animation slideLeftIn; 
    private Animation slideLeftOut; 
    private Animation slideRightIn; 
    private Animation slideRightOut; 
    private ViewFlipper viewFlipper; 

    String message = "Initial Message"; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
//  setContentView(R.layout.main); 
     //Set up viewflipper 
     viewFlipper = new ViewFlipper(this); 

     ImageView[] img = new ImageView[i]; 
     j_comm_func funs = new j_comm_func();//already made this class 
     BitmapFactory.Options bmOptions; 
     bmOptions = new BitmapFactory.Options(); 
     bmOptions.inSampleSize = 1; 
     Bitmap bm = funs.LoadImage("http://65.175.77.34/newsnow/2462011/largest3/2462011-md-hr-1.jpg", bmOptions); 
     img.setImageBitmap(bm); 


     viewFlipper.addView(img); 



     //set up animations 
     slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_out_right); 
     slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_in_left); 
     slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_in_left); 
     slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_out_right); 


     //put up a brownie as a starter 
     setContentView(viewFlipper); 

     gestureDetector = new GestureDetector(new MyGestureDetector()); 
    } 

    public class MyGestureDetector extends SimpleOnGestureListener { 
     @Override 
     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; 
       // right to left swipe 
       if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        Log.v(LOGID,"right to left swipe detected"); 
        viewFlipper.setInAnimation(slideLeftIn); 
        viewFlipper.setOutAnimation(slideLeftOut); 
        viewFlipper.showNext(); 
        setContentView(viewFlipper); 

       } // left to right swipe 
       else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        Log.v(LOGID,"left to right swipe detected");      
        viewFlipper.setInAnimation(slideRightIn); 
        viewFlipper.setOutAnimation(slideRightOut); 
        viewFlipper.showPrevious(); 
        setContentView(viewFlipper); 

       } 
      } catch (Exception e) { 
       // nothing 
      } 
      return false; 
     } 
    } 

    // This doesn't work 
    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (gestureDetector.onTouchEvent(event)){ 
      Log.v(LOGID,"screen touched"); 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 
} 

答えて

1

: ちょうど無力b'cozが、これは私のコードです......事前にありがとう....

を誰かが助けて30倍以上...

のplsを試みましたうーん...あなたの方法onTouchEvent doesntの仕事すべてのタッチイベントがドキュメントからこの活動の方法に(ViewFlipperによって消費されるため、このタッチスクリーンイベントがその下のビューのいずれかによって処理されなかったときに呼び出され

。ウィンドウ境界の外側で発生するタッチイベントを処理するのに最も便利です。ウィンドウの境界線を受け取るビューはありません。 )

あなたがここに見てみたいものを実装するには:あなたは多くのことを行うことができ、ズーム機能を追加するには

img.setOnTouchListener(new DragableViewTouchListener()); 

:あなたはこのような何かを行う必要がありますあなたのケースではAndroid touch events with multiple views(such as a ListView in a Viewflliper)

を...次の操作を行うことをお勧めします。

  1. ImageViewの拡張機能を作成する:ZoomableImageVIew
  2. このようなメソッドのオーバーライドdispatchTouchEvent

    public boolean dispatchTouchEvent(MotionEvent event) { 
    if(needZoom(event)) { 
        doZoom(); 
        // the event was handled. Do not propagate it to prevent handling it in ViewFlipper. 
        return true; 
    } else { 
        // propagate the event (to ViewFlipper) 
        super.dispatchTouchEvent(event); 
    } 
    

    }

幸運を!

+0

これは本当に私を助けました...... – sunny

+0

私はこのプログラムで指の拡大を拡大するために私を助けることができます.. – sunny

+0

私はあなたに助言することができます...私は私の答えを更新しました – Flavio

関連する問題