2013-08-12 2 views
0

здесь у меня есть один макет внутри i 2 imageviews, прежде чем добавлять myview в макет. Myviewview onclicks работает хорошо, если я предположил, что myview для основного макета означает только рисование work..but my imgview на щелчок не работает O хочу как рисование, изображения нажмите функцию в один предложить ниже мой код ..после добавления представления в макет imageview onclick не работает

public class B extends Activity implements OnTouchListener { 
RelativeLayout.LayoutParams lp6; 
    int x1, y1, x2, y2; 
    LineDrawerView myview; 
RelativeLayout layout; 
ImageView i1,i2; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    i1=(ImageView)findViewById(R.id.image1); 
i1.setOnTouchListener(this); 
i2=(ImageView)findViewById(R.id.image2); 
i2.setOnTouchListener(this); 
    layout=(RelativeLayout)findViewById(R.id.layoutmiddle); 

      myview = new LineDrawerView(this); 
      myview.setId(004); 
      lp6 = new RelativeLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      layout.addView(myview, lp6); 

    } 


public class LineDrawerView extends View 
{ 
    public LineDrawerView(Context context) { 
     super(context); 
    } 



    ArrayList<Rect> lines= new ArrayList<Rect>(); 

    boolean drawing=false; 

    protected void onDraw(Canvas canvas) 
    { 
     // TODO Auto-generated method stub 
     super.onDraw(canvas); 



     Paint p= new Paint(); 
     p.setColor(Color.BLACK); 

     if (drawing) 
     { 
      canvas.drawLine(x1, y1, x2, y2, p); 


     } 
     for (int i=0; i<lines.size(); i++) 
     { 
      Rect currline= lines.get(i); 
      canvas.drawLine(currline.left, currline.top, currline.right, currline.bottom, p); 
     } 
    } 

    public boolean onTouchEvent(MotionEvent event) 
    { 
     boolean result=false; 
     switch (event.getAction()) 
     { 
      case MotionEvent.ACTION_DOWN: 
       x1=x2= (int)event.getX(); 
       y1=y2= (int)event.getY(); 

       drawing=true; 
       result=true; 
       Log.i("start x1------", ""+x1); 
       Log.i("start y1------", ""+y1); 



       break; 
      case MotionEvent.ACTION_MOVE: 
       x2= (int)event.getX(); 
       y2= (int)event.getY(); 
       result=true; 
       break; 
      case MotionEvent.ACTION_UP: 
       x2= (int)event.getX(); 
       y2= (int)event.getY(); 

       Log.i("end x2------", ""+x2); 
       Log.i("end y2------", ""+y2); 

       if(x1 > 300 && x1 < 400 && x2 >700 && x2 < 800 && y1 >100 && y1 <200 && y2 >100 && y2 <200) 
       { 
         drawing=true; 

         x1=406; 
         x2=621; 
         y1=125; 
         y2=125; 
         lines.add(new Rect(x1, y1, x2, y2)); 
       } 
       else if(x1 > 300 && x1 < 400 && x2 >700 && x2 < 800 && y1 >200 && y1 <300 && y2 >200 && y2 <300) 
       { 
        drawing=true; 
         x1=406; 
         x2=621; 
         y1=226; 
         y2=226; 
         lines.add(new Rect(x1, y1, x2, y2)); 
       } 
       else 
       { 
        drawing=false; 
       } 


       result=true; 
       break; 
     } 

     if (result) invalidate(); 
     return result; 
    } 


} 


     @Override 
public boolean onTouch(View v, MotionEvent event) { 
    // TODO Auto-generated method stub 


     if(v==i1) 
     { 
     Toast.makeText(B.this, ""+"i am i1", Toast.LENGTH_LONG).show(); 
     } 
     else if(v==i2) 
      { 
      Toast.makeText(B.this, ""+"i am i2", Toast.LENGTH_LONG).show(); 
      } 

    return false; 
} 
    } 

main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/layoutmiddle" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="#ffffff" > 

<ImageView 
    android:id="@+id/image1" 
    android:layout_marginLeft="300dp" 
     android:layout_marginTop="100dp" 
    android:layout_width="wrap_content" 
    android:background="@drawable/apple_50" 
    android:layout_height="wrap_content"/> 

    <ImageView 
     android:id="@+id/image2" 
     android:layout_width="15dp" 
     android:layout_height="15dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="120dp" 
    android:background="@drawable/checkbox_empty" /> 

+0

Можете ли вы поместить свой xml? –

+0

hi отредактировал мой код с xml..может ли вы проверить один раз – user2401554

ответ

1

на ваш onTouch у вас есть две линии if(v==i1). Изменить else if(v==i1) на else if(v==i2). Похож на ошибку копирования/вставки.

+0

привет спасибо .. thats not prblm.i отредактированный код .. если бы я дал вот это тоже мои изображения просмотров onclick не работает..без myview заполняется всем экраном – user2401554

+0

Почему вы просто не добавляете этот вид в xml? И переместите 'LineDrawerView' в свой собственный java-файл, его более объектно-ориентированный код, как и должно быть. – vilpe89

+0

да ... но с помощью моего кода есть какое-либо решение, помогите мне – user2401554

Смежные вопросы