2012-06-20 78 views
2

我试图刷新屏幕上点击一个按钮,所以我想知道我应该写在OnClick()方法,以便自定义视图,即TouchEventView将重新加载或刷新在这里是我的 TouchEventView.java点击一个按钮重新加载自定义视图

public class TouchEventView extends View { 
    private Paint paint = new Paint(); 
    private Path path = new Path(); 

    public TouchEventView(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     paint.setAntiAlias(true); 
     paint.setColor(Color.WHITE); 
     paint.setStyle(Paint.Style.STROKE); 
     paint.setStrokeJoin(Paint.Join.ROUND); 
     paint.setStrokeWidth(5f); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawPath(path, paint); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     float eventX = event.getX(); 
     float eventY = event.getY(); 

     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      path.moveTo(eventX, eventY); 

      return true; 
     case MotionEvent.ACTION_MOVE: 
      path.lineTo(eventX, eventY); 
      break; 
     case MotionEvent.ACTION_UP: 
      // nothing to do 
      break; 
     default: 
      return false; 
     } 

     // Schedules a repaint. 
     invalidate(); 
     return true; 
    } 
} 
` 

这里的代码是main.xml中的文件``

<de.vogella.android.touch.TouchEventView 
     android:id="@+id/mydrawview1" 
     android:layout_width="wrap_content" 
     android:layout_height="328dp" 
     android:layout_weight="0.91" /> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/reset" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Reset" /> 
    </LinearLayout> 

</LinearLayout>` 

这里是活动class`

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Button res = (Button) findViewById(R.id.reset); 
    res.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      TouchEventView touchView = (TouchEventView) findViewById(R.id.mydrawview1); 
      touchView.clear(); 

     } 
    }); 
} 

}`

+0

没有足够的信息。 – JoxTraex

+0

我想重新加载自定义视图(TouchEventView)点击按钮重置。 –

回答

5

这种方法只需添加到您的TouchEventView

public void clear() 
{ 
    path = new Path(); 
    invalidate(); 
} 

然后从onClick()调用它:

@Override 
public void onClick(View v) { 
    TouchEventView touchView = (TouchEventView) findViewById(R.id.mydrawview1); 
    touchView.clear(); 
} 
+0

非常感谢...它的工作:) –

+0

我不能直接像? @Override public void onClick(View v){ TouchEventView touchView =(TouchEventView)findViewById(R.id.mydrawview1); touchView.invalidate(); } –

+0

@swatisinha否,因为您需要创建一个新的路径以及视图无效。我会推荐做我的解决方案。 – monchote

相关问题