2010-08-09 4 views
4

Je veux mettre en œuvre une activité où la seule chose que vous voyez est une grande image, qui peut être horizontale et vertically.On défilée Haut de cette image je veux afficher les boutons , qui peut être cliqué et déclencher certaines actions (comme créer une intention de démarrer une nouvelle activité).Android: Scrollable (horizontal et vertical) ImageView avec des boutons overlayed

Tout d'abord, je pensais à un ScrollView, qui a un FrameLayout comme un enfant. Le FrameLayout peut avoir l'image en arrière-plan et peut avoir les boutons en tant qu'enfants. Parce que je connais exactement la position de mes boutons, je pourrais les placer avec des coordonnées absolues. Voici mon premier code:

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <FrameLayout 
     android:layout_width="1298px" 
     android:layout_height="945px" 
     android:background="@drawable/myimage"> 

     <Button 
      android:id="@+id/mybutton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_x="115px" 
      android:layout_y="128px"/> 

    </FrameLayout> 
</ScrollView> 

Le problème est que vous ne pouvez faire défiler verticalement qu'un ScrollView. HorizontalScrollView ne résout pas le problème, car il ne défile que dans une direction. Puis-je les mélanger d'une manière ou d'une autre? Y a-t-il une autre solution?

J'ai trouvé des threads similaires sur stackoverflow, où les gens placent l'image dans un WebView et obtiennent le scroll horizontalzal/vertical gratuitement (here). Ou quelqu'un a mis l'image dans une imageview et a donné à l'imageview un onTouchListener pour gérer le défilement (here). Le problème dans les deux sens est que, de toute façon, je ne pense pas que vous pouvez mettre des boutons sur le dessus de l'image, ce qui est ce que je dois faire.

Je vous serais très reconnaissant si quelqu'un me aider.

Répondre

0

Utilisation de la (désapprouvée !!!) AbsoluteLayout et de lui donner et onTouchListener a résolu mon problème:

<?xml version="1.0" encoding="utf-8"?> 
<AbsoluteLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <ImageView 
     android:src="@drawable/myImage" 
     android:layout_width="1298px" 
      android:layout_height="945px" 
      android:layout_x="0px" 
     android:layout_y="0px" /> 
    <Button 
     android:id="@+id/myButton" 
     android:text="1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_x="50px" 
     android:layout_y="300px" 
     android:tag="1"/> 

</AbsoluteLayout> 




private float mx; 
    private float my; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.layout); 



     final Button button = (Button)findViewById(R.id.myButton); 
     button.setOnClickListener (new View.OnClickListener(){ 
      // OnClickAction 
}); 


     final AbsoluteLayout switcherView = (AbsoluteLayout) this.findViewById(R.id.myLayout); 

     switcherView.setOnTouchListener(new View.OnTouchListener() { 

      public boolean onTouch(View arg0, MotionEvent event) { 

       float curX, curY; 

       switch (event.getAction()) { 

        case MotionEvent.ACTION_DOWN: 
         mx = event.getX(); 
         my = event.getY(); 
         break; 
        case MotionEvent.ACTION_MOVE: 
         curX = event.getX(); 
         curY = event.getY(); 
         switcherView.scrollBy((int) (mx - curX), (int) (my - curY)); 
         mx = curX; 
         my = curY; 
         break; 
        case MotionEvent.ACTION_UP: 
         curX = event.getX(); 
         curY = event.getY(); 
         switcherView.scrollBy((int) (mx - curX), (int) (my - curY)); 
         break; 
       } 

       return true; 
      } 
     }); 

    } 
+0

avez-vous réussi à mettre un bouton au centre de l'écran, par exemple, et créer également des boutons sur la écran aussi? Je veux dire que lorsque vous faites défiler votre image sur les côtés, vous pouvez voir de nouveaux boutons apparaissant (c'est peut-être pas ce dont vous avez besoin, mais je suis intéressé par votre problème) – Sephy

Questions connexes