클릭 가능한 캔버스를 사용하여 비트 맵을 만드는 방법은 무엇입니까?

Prashanth

생성 된 비트 맵을 클릭 가능하게 만들려면 어떻게합니까? 아래는 캔버스를 사용하여 비트 맵을 만드는 데 사용한 코드입니다.

 public class DrawView extends View implements OnClickListener
{
    public DrawView(Context context)
    {
        super(context);
        paint = new Paint();
        image = BitmapFactory.decodeResource(getResources(), R.drawable.andmrktsmall);
    }

    @Override
    protected void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);
        int canWidth = canvas.getWidth();
        int canHeight = canvas.getHeight();
        int width = (canWidth - 200) / 2;
        int height = (canHeight - 100) / 2;
        Bitmap indexcanvas = Bitmap.createScaledBitmap(image, 200, 100, true);
        canvas.drawBitmap(indexcanvas, width, height, paint);
        this.setBackgroundColor(Color.YELLOW);

    }

    @Override
    public void onClick(View v)
    {
        Toast.makeText(context, "View is clicked", 1).show();
    }

}
루이지 파워

이보기에 OnClickListener를 설정하면 모든보기를 클릭 할 수 있습니다 (비트 맵에 국한되지는 않음). 사용자가 비트 맵 자체 만 클릭했는지 여부를 확인하려면 onTouchEvent (MotionEvent 이벤트)를 재정의하고 터치 좌표가 비트 맵과 동일한 지 확인해야합니다.

@Override
public boolean onTouchEvent(MotionEvent event)
{
    float x = event.getX();
    float y = event.getY();
    switch(event.getAction())
    {
        case MotionEvent.ACTION_DOWN:
        //Check if the x and y position of the touch is inside the bitmap
        if( x > bitmapXPosition && x < bitmapXPosition + bitmapWidth && y > bitmapYPosition && y < bitmapYPosition + bitmapHeight )
        {
            //Bitmap touched
        }
        return true;
    }
    return false;
}

bitmapXPosition 및 bitmapYPosition을 비트 맵을 그리는 데 사용하는 좌표로 바꾸고, bitmapWidth 및 bitmapHeight를 그리는 데 사용하는 너비와 높이로 바꾸십시오.

또한 모든 뷰의 onDraw () 메서드 내에 메모리를 할당 (객체 생성)하지 마십시오. 성능에 좋지 않습니다.

편집하다

private Rect r;
private Paint paint;
Bitmap bitmap;

public TestRect(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    paint = new Paint();
    paint.setColor(Color.BLUE);
    r = new Rect();
    bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher);
}

public TestRect(Context context, AttributeSet attrs) {
    super(context, attrs);
    paint = new Paint();
    paint.setColor(Color.BLUE);
    r = new Rect();
    bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher);
}

public TestRect(Context context) {
    super(context);
    paint = new Paint();
    paint.setColor(Color.BLUE);
    r = new Rect();
    bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher);
}

@Override
public void onDraw(Canvas c)
{

    r.set(getWidth()/2, getHeight()/2, getWidth()/2 + 200, getHeight()/2 + 200);
    //c.drawRect(r, paint);
    c.drawBitmap(bitmap, null, r, paint);
}

@Override
public boolean onTouchEvent(MotionEvent event)
{
    float x = event.getX();
    float y = event.getY();
    switch(event.getAction())
    {
        case MotionEvent.ACTION_DOWN:
        //Check if the x and y position of the touch is inside the bitmap
        if( x > getWidth()/2 && x < getWidth()/2 + 200 && y > getHeight()/2 && y < getHeight()/2 + 200 )
        {
            Log.e("TOUCHED", "X: " + x + " Y: " + y);
            //Bitmap touched
        }
        return true;
    }
    return false;
}

Rect를 좌표로 사용하여 비트 맵을 그리면 터치가 비트 맵 내부에 있는지 여부를 확인할 수 있습니다. 또한 크고보기 흉한 "if"문 대신 다음을 사용할 수 있습니다.

if(r.contains(x, y))
{
     //BITMAP TOUCHED
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

ImageDecoder를 사용하여 변경 가능한 비트 맵을 얻는 방법은 무엇입니까?

분류에서Dev

Hashmap을 사용하여 Android ListView를 클릭 가능하게 만드는 방법은 무엇입니까?

분류에서Dev

QPushButton을 한 번 클릭 할 때 편집 가능한 텍스트를 만드는 방법은 무엇입니까?

분류에서Dev

캔버스에서 EditText를 클릭 가능하게 만드는 방법은 무엇입니까?

분류에서Dev

HTML에서 캔버스 요소를 클릭 가능하게 만드는 방법은 무엇입니까?

분류에서Dev

여러 버튼을 클릭 한 후 <button> 태그를 사용하여 만든 버튼의 텍스트를 변경하는 방법은 무엇입니까?

분류에서Dev

JavaScript를 사용하여 텍스트 상자 / 이미지에 대한 입력 / 클릭을 비활성화하는 방법은 무엇입니까?

분류에서Dev

버튼을 클릭 한 후에 만 스크립트를 실행하는 방법은 무엇입니까?

분류에서Dev

드래그 가능한 캔버스 위젯을 여러 개 사용하는 방법은 무엇입니까?

분류에서Dev

데비안 10을 사용하여 다른 부팅 가능한 USB를 복제하여 부팅 가능한 USB를 만드는 방법은 무엇입니까?

분류에서Dev

사용자가 ShieldUI로 ChartLegend를 클릭 할 때 차트를 숨기거나 표시하는 기능을 비활성화하는 방법은 무엇입니까?

분류에서Dev

Android에서 클릭 및 편집 가능한 텍스트 필드를 만드는 방법은 무엇입니까?

분류에서Dev

캔버스는 자식을 추가 한 후 너비가 0입니다. 캔버스에서 너비를 다시 계산하는 방법은 무엇입니까?

분류에서Dev

맵을 클릭 한 후 플롯에만 데이터가 표시되는 Tableau 대시 보드를 스크 레이 핑하는 방법은 무엇입니까?

분류에서Dev

버튼을 클릭 한 후 캔버스에 요소를 하나 더 추가하는 방법은 무엇입니까?

분류에서Dev

클릭 가능한 텍스트를 JTextPane에 삽입하는 방법은 무엇입니까?

분류에서Dev

C # 또는 JavaScript와 같은 코드를 사용하여 요소에 대한 클릭을 트리거하는 방법은 무엇입니까?

분류에서Dev

전단지 맵에서만 클릭 이벤트를 비활성화하는 방법은 무엇입니까?

분류에서Dev

버튼을 클릭 한 후 requestAnimationFrame이 캔버스를 한 번 이상 다시 그리는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

클래스를 사용하여 tkinter 캔버스에 다각형을 그리는 방법은 무엇입니까?

분류에서Dev

스캔에서 복사 가능한 텍스트를 사용하여 고화질 PDF를 만드는 방법은 무엇입니까?

분류에서Dev

div를 클릭 가능하게 만드는 방법은 무엇입니까?

분류에서Dev

createElement ( 'IMG')를 클릭 가능하게 만드는 방법은 무엇입니까?

분류에서Dev

버튼을 클릭 할 때마다 캔버스 개체를 이동하는 방법은 무엇입니까?

분류에서Dev

버튼을 클릭 한 후 캔버스와 버튼 (및 기능)을 지우는 방법은 무엇입니까?

분류에서Dev

자바 스크립트 증가 방법을 사용하여 데이터베이스에서 클릭 횟수를 늘리는 방법은 무엇입니까?

분류에서Dev

Selenium 및 Python을 사용하여 Send Me a Push 텍스트가있는 버튼을 클릭하는 방법은 무엇입니까?

분류에서Dev

사용자가 Ironpython에서 만든 winform을 클릭 할 때 OnClick () 이벤트를 비활성화하는 방법은 무엇입니까?

분류에서Dev

AngularFireDatabase, Jest 및 Unit Testing, 재사용 가능한 클래스 스텁을 만드는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    ImageDecoder를 사용하여 변경 가능한 비트 맵을 얻는 방법은 무엇입니까?

  2. 2

    Hashmap을 사용하여 Android ListView를 클릭 가능하게 만드는 방법은 무엇입니까?

  3. 3

    QPushButton을 한 번 클릭 할 때 편집 가능한 텍스트를 만드는 방법은 무엇입니까?

  4. 4

    캔버스에서 EditText를 클릭 가능하게 만드는 방법은 무엇입니까?

  5. 5

    HTML에서 캔버스 요소를 클릭 가능하게 만드는 방법은 무엇입니까?

  6. 6

    여러 버튼을 클릭 한 후 <button> 태그를 사용하여 만든 버튼의 텍스트를 변경하는 방법은 무엇입니까?

  7. 7

    JavaScript를 사용하여 텍스트 상자 / 이미지에 대한 입력 / 클릭을 비활성화하는 방법은 무엇입니까?

  8. 8

    버튼을 클릭 한 후에 만 스크립트를 실행하는 방법은 무엇입니까?

  9. 9

    드래그 가능한 캔버스 위젯을 여러 개 사용하는 방법은 무엇입니까?

  10. 10

    데비안 10을 사용하여 다른 부팅 가능한 USB를 복제하여 부팅 가능한 USB를 만드는 방법은 무엇입니까?

  11. 11

    사용자가 ShieldUI로 ChartLegend를 클릭 할 때 차트를 숨기거나 표시하는 기능을 비활성화하는 방법은 무엇입니까?

  12. 12

    Android에서 클릭 및 편집 가능한 텍스트 필드를 만드는 방법은 무엇입니까?

  13. 13

    캔버스는 자식을 추가 한 후 너비가 0입니다. 캔버스에서 너비를 다시 계산하는 방법은 무엇입니까?

  14. 14

    맵을 클릭 한 후 플롯에만 데이터가 표시되는 Tableau 대시 보드를 스크 레이 핑하는 방법은 무엇입니까?

  15. 15

    버튼을 클릭 한 후 캔버스에 요소를 하나 더 추가하는 방법은 무엇입니까?

  16. 16

    클릭 가능한 텍스트를 JTextPane에 삽입하는 방법은 무엇입니까?

  17. 17

    C # 또는 JavaScript와 같은 코드를 사용하여 요소에 대한 클릭을 트리거하는 방법은 무엇입니까?

  18. 18

    전단지 맵에서만 클릭 이벤트를 비활성화하는 방법은 무엇입니까?

  19. 19

    버튼을 클릭 한 후 requestAnimationFrame이 캔버스를 한 번 이상 다시 그리는 것을 방지하는 방법은 무엇입니까?

  20. 20

    클래스를 사용하여 tkinter 캔버스에 다각형을 그리는 방법은 무엇입니까?

  21. 21

    스캔에서 복사 가능한 텍스트를 사용하여 고화질 PDF를 만드는 방법은 무엇입니까?

  22. 22

    div를 클릭 가능하게 만드는 방법은 무엇입니까?

  23. 23

    createElement ( 'IMG')를 클릭 가능하게 만드는 방법은 무엇입니까?

  24. 24

    버튼을 클릭 할 때마다 캔버스 개체를 이동하는 방법은 무엇입니까?

  25. 25

    버튼을 클릭 한 후 캔버스와 버튼 (및 기능)을 지우는 방법은 무엇입니까?

  26. 26

    자바 스크립트 증가 방법을 사용하여 데이터베이스에서 클릭 횟수를 늘리는 방법은 무엇입니까?

  27. 27

    Selenium 및 Python을 사용하여 Send Me a Push 텍스트가있는 버튼을 클릭하는 방법은 무엇입니까?

  28. 28

    사용자가 Ironpython에서 만든 winform을 클릭 할 때 OnClick () 이벤트를 비활성화하는 방법은 무엇입니까?

  29. 29

    AngularFireDatabase, Jest 및 Unit Testing, 재사용 가능한 클래스 스텁을 만드는 방법은 무엇입니까?

뜨겁다태그

보관