gpt4 book ai didi

android - 需要帮助在 Android 中使用多个按钮自定义 View

转载 作者:行者123 更新时间:2023-11-30 02:55:48 25 4
gpt4 key购买 nike

到目前为止,我已经通过扩展 ImageView 类完成了自定义 View 。

enter image description here

现在,

我必须为绘图和屏幕上的 2 个按钮创建自定义 View 。

我必须单独显示按钮和自定义 View 。按钮不应覆盖自定义 View 。

怎么做..?

enter image description here

需要你的帮助..........

我的示例代码..

package com.androiddom.customview;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.ImageView;

public class CustomView extends ImageView {

private Paint paint = new Paint();
private Path path = new Path();

public CustomView(Context context) {
super(context);

paint.setAntiAlias(true);
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeWidth(15f);

}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

canvas.drawPath(path, paint);
}


@Override
public boolean onTouchEvent(MotionEvent event) {

// Gives you x and y coordinates on the Event.
float pointX = event.getX();
float pointY = event.getY();

// Checks for the event that occurs
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(pointX, pointY);

return true;
case MotionEvent.ACTION_MOVE:
path.lineTo(pointX, pointY);

break;

case MotionEvent.ACTION_UP:
XYZ etc...

break;
default:
return false;
}


postInvalidate();
return true;
}

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

目前我正在通过主要 Activity 调用 customview 类,如下面的方法:

MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

CustomeView tv = (CustomeView)
setContentView(tv);

}
}

最佳答案

您尝试使用 XML 布局如下...

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

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

<Button
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:layout_weight="1"
android:text="Button 1" />

<Button
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:layout_weight="1"
android:text="Button 2" />
</LinearLayout>

<com.androiddom.customview
android:id="@+id/custom_view"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_margin="20dip"
android:layout_weight="1" >
</com.androiddom.customview>

</LinearLayout>

更新:

假设,上面的 XML 布局名称 activity_main.xml。现在,更新 MainActivity.java 如下...

MainActivity extends Activity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// Initialize your CustomeView object in this way
// then do what you want to do with this object
CustomeView tv = (CustomeView) findViewById(R.id.custom_view);

Button bt = (Button)findViewById(R.id.button);
btPrevious.setOnClickListener(this);
}

@Override
public void onClick(View v) {

tv.clear();

}

}

另一个更新:

在您的 CustomeView.java 类中创建一个用于清除绘图 View 的新方法,如下所示...

// start new drawing
public void startNew() {
canvas.drawColor(0, PorterDuff.Mode.CLEAR);
invalidate();
}

然后在 onClick() 中调用这个方法...

@Override
public void onClick(View v) {

tv.startNew();

}

您可以从 DrawingView 中找到有关自定义绘图的更多帮助

关于android - 需要帮助在 Android 中使用多个按钮自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23283952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com