2017-08-31 55 views
1

我試圖設置點擊三角形圖像的位置,如圖所示。但問題是隻有一個圖像點擊正在工作。而且我已經實現如下:設置在一個佈局中點擊兩個不同的三角形圖像

enter image description here

<ImageView 
    android:id="@+id/twoWheeler" android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/front_screen_design_twowheeler" 
    android:scaleType="fitStart"/> 


    <ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/fourWheeler" 
    android:src="@drawable/front_screen_design_fourwheeler" 
    android:scaleType="fitEnd" /> 



two.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent i=new Intent(MainActivity.this,BikeActivity.class); 
     startActivity(i); 
    } 
}); 
four.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent i=new Intent(MainActivity.this,FourActivity.class); 
     startActivity(i); 
    } 
}); 
+0

什麼是二和四,你是如何初始化它們的? –

+0

我已經初始化它們如下 ImageView two =(ImageView)findViewById(R.id.twoWheeler);和 ImageView four =(ImageView)findViewById(R.id.fourWheeler) – Nbn

回答

2

包裝他們,正如你在我的問題提到爲您的解決方案創建了相同的示例。

我已經使用了半透明區域的兩個圖像。

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rlParent" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:src="@drawable/triangle" /> 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:src="@drawable/triangle2" /> 

</RelativeLayout> 

MainActivity.java

import android.graphics.Bitmap; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    private ImageView imageView, imageView1; 
    private RelativeLayout rlParent; 


    private void showToast(String message) { 
     Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     rlParent = (RelativeLayout) findViewById(R.id.rlParent); 
     imageView = (ImageView) findViewById(R.id.imageView); 
     imageView1 = (ImageView) findViewById(R.id.imageView1); 

     rlParent.setOnTouchListener(new MyTouchListener(rlParent, this)); 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.imageView: 
       showToast("Image 1 Click"); 
       break; 
      case R.id.imageView1: 
       showToast("Image 2 Click"); 
       break; 
     } 
    } 

    private class MyTouchListener implements View.OnTouchListener { 

     private ViewGroup viewGroup; 
     private View.OnClickListener onClickListener; 

     public MyTouchListener(ViewGroup viewGroup, View.OnClickListener onClickListener) { 
      this.viewGroup = viewGroup; 
      this.onClickListener = onClickListener; 
     } 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_UP: 
        for (int pos = 0; pos < viewGroup.getChildCount(); pos++) { 
         View view = viewGroup.getChildAt(pos); 
         Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); 
         Canvas canvas = new Canvas(bitmap); 
         view.draw(canvas); 
         int x = (int) event.getX(); 
         int y = (int) event.getY(); 

         if (bitmap.getPixel(x, y) != Color.TRANSPARENT) { 
          if (onClickListener != null) { 
           onClickListener.onClick(view); 
           break; 
          } 
         } 
        } 
        break; 
      } 
      return true; 
     } 

    } 
} 

您可以檢查下面的截圖來檢查特定圖像點擊,

截圖

我希望它可以幫助你。

+0

你能告訴應該是什麼圖像大小 –

+0

你可以使用任何圖像大小,但兩個圖像的大小應該是相同的。例如,我把兩個圖像的600x600 –

+0

@ Piyush Malaviya我知道了謝謝 –

0

與ImageView的問題是它需要一個矩形空間。所以在你的情況下,一個imageview被放置在另一個之上,因此只有一個imageview被點擊。實現你需要創建自定義的類來實現三角imageview的點擊嘗試this或尋找定製imageview ...

0

您可以在FrameLayout

framelayout.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     //calculate the position by event.getX(),event.getY(); 
     if(point in triOne){ 

     }else{ 

     } 
     return true; 
    } 
}); 
相關問題