2012-11-05 29 views
0
public class Sample2 extends Activity { 

private SampleView sView; 
private static int displayWidth = 100; //movement area 
private static int displayHeight = 100; 
float angle = 0; 

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

    sView = new SampleView(this); 
    setContentView(sView); 


    }//oncreate 

private class SampleView extends View { 
    Context con; 
    private Rect displayRect = null; //rect we display to 
    private int scrollRectX = 0; //current left location of scroll rect 
    private int scrollRectY = 0; //current top location of scroll rect 
    private float scrollByX = 0; //scroll by amounts 
    private float scrollByY = 0; 
    private float startX = 0; //track x from one ACTION_MOVE to the next 
    private float startY = 0; //track y from one ACTION_MOVE to the next 
    private int state = 0; 


    Bitmap bitmap2; 


    public SampleView(Context context) { 
     super(context); 
     displayRect = new Rect(0, 0, displayWidth, displayHeight); 
     }//constructor 

    public boolean onTouchEvent(MotionEvent event) { 
    float x; 
    float y; 

     switch (event.getAction()) { 

       case MotionEvent.ACTION_DOWN: 
        //Initial down event location. 
         startX = event.getRawX(); 
         startY = event.getRawY()-50; 
         // Log.e("TOUCHED",startY+" "+(scrollRectY+displayHeight)); 
         if (((startX>scrollRectX)&(startX<(scrollRectX+displayWidth)))& 
          ((startY>scrollRectY)&(startY<(scrollRectY+displayHeight)))) state = 1; 
         //Log.e("TOUCHED","State "+state); 
         break; 
       case MotionEvent.ACTION_MOVE: 
         x = event.getRawX(); 
         y = event.getRawY()-50;        
         scrollByX = x - startX; 
         scrollByY = y - startY; 
         startX = x; 
         startY = y; 
         if (state != 0) invalidate(); //move it 
         break; 
       case MotionEvent.ACTION_UP: 
         x = event.getRawX(); 
         y = event.getRawY()-50; 
         scrollByX = x - startX; 
         scrollByY = y - startY; 
         startX = x; 
         startY = y; 
         state = 0; 
         invalidate(); 
         break; 
     }//switch 
     return true; 
    }//ontouch 

protected void onDraw(Canvas canvas) { 
    scrollRectX = scrollRectX+(int)scrollByX; 
    scrollRectY = scrollRectY+(int)scrollByY; 
    displayRect.set(scrollRectX,scrollRectY,scrollRectX+displayWidth, 
        scrollRectY+displayHeight); 
    Paint paint = new Paint(); 
    Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher); 
    bitmap2= BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher).copy(Config.RGB_565, true); 
    canvas.drawBitmap(bitmap2, null, displayRect, paint); 

//TODO: Fill In Methods Etc. 
} 
} 
} 

我已經使用此代碼....現在我的問題是這如何設置單獨的吐司消息爲2位圖android?....如果我在背景矩形觸摸它顯示吐司消息,如果我觸摸像它表明通過使用如果ontouchevents條件.... PLZ ANY1可以說這另一個敬酒消息....如何在android中爲2位圖設置單獨的吐司消息?

+0

表示你在說如果我觸摸bac kground然後顯示「bg_msg」,如果你觸摸圖像,那麼它會顯示「image_msg」是嗎? –

+0

yes chintan ..... – sam786

+0

然後您必須爲佈局設置兩個不同的觸摸事件,爲圖像設置一個不同的觸摸事件。它不能相同。 –

回答

0

你可以做這樣的方式,

Demo.java

public class Demo extends Activity implements OnClickListener{ 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.demo_layout); 
    final LinearLayout lin_layout = (LinearLayout) findViewById(R.id.lin_layout); 
    final ImageView img_view = (EditText) findViewById(R.id.img_view); 

    // call your touch event 
    l_l.setOnClickListener(this); 
    imageView1.setOnClickListener(this); 

@Override 
    public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    case R.id.l_l: // if you touch on layout 
     // do your task 
     Toast.makeText(getApplicationContext(), "You Touch on: Linear_Layout", 
      Toast.LENGTH_LONG).show(); 
     break; 

    case R.id.imageView1: // if you touch on Image 
     // do your task 
     Toast.makeText(getApplicationContext(), "You Touch on : Image ", Toast.LENGTH_LONG) 
      .show(); 
     break; 
    default: 
     break; 
    } 

    } 

} 
+0

謝謝....但我想在畫布中不使用XML或佈局 – sam786

+0

看到你不能在畫布上做,因爲吐司是一個子類的活動,所以它只會發生,如果你使用活動類。 –

+0

非常感謝..... chintan – sam786