2013-07-15 5 views
0

Je dois créer un plan d'étage qui peut être défilé et zoomé. Certaines sections de ce plan doivent être liées à d'autres activités (c.-à-cuisine). Mon idée était de poser un simple bouton sur la cuisine-région. En cliquant dessus, vous pouvez accéder à l'activité de la cuisine.Android: bouton sur un élément WebView (.png-Image)

En raison de scrolling- et zooming-je besoin créé une WebView contenant mon floorplan:

<LinearLayout xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/background" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".FloorplanActivity"  
xmlns:android="http://schemas.android.com/apk/res/android"> 

<WebView 
    android:id="@+id/webViewFloorplan" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" > 

    <Button 
     android:id="@+id/buttonKuehltheke" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button" /> 

</WebView> 

</LinearLayout> 

Mais maintenant, je ne suis pas en mesure de mettre un bouton sur une région spécifique sur le plan. Le bouton apparaît toujours dans le coin supérieur gauche de mon plan.

MainActivity-Code:

WebView wvFloorplan = (WebView) findViewById(R.id.webViewFloorplan); 
    wvFloorplan.getSettings().setBuiltInZoomControls(true); 
    wvFloorplan.loadUrl("file:///android_asset/services_plan.png"); 

Ce qui doit être fait pour mettre le bouton à chaque postition sur mon WebView (Floorplan)?

Thx Arne

Répondre

0

Si vous allez le défilement et le zoom ce WebView, les coordonnées de la section de la cuisine vont être dynamiques, de sorte que le positionnement d'un bouton sur il sera difficile.

Je suggère de surcharger WebView.shouldOverrideUrlLoading. De cette façon, vous pouvez utiliser html pour créer un lien vers l'activité de cuisine.

wvFloorplan.setWebViewClient(new WebViewClient() { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (url.startsWith("act:")) { 
      Intent intent = new Intent(<kitchen activity>); 
      startActivity(intent); 
      return true; 
     } 
     return false; 
    } 
}); 

Vous devez écrire une enveloppe HTML autour de l'image à la carte des parties de vos images à des liens différents, mais maintenant les coordonnées seront statiques. Au lieu de http urls utilisez Href = "act: kitchen"