在android java代码中添加按钮
如何将按钮添加到android java代码中?这是java代码的主要活动:在android java代码中添加按钮,java,android,xml,button,Java,Android,Xml,Button,如何将按钮添加到android java代码中?这是java代码的主要活动: package com.example.pafima_trial; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCr
package com.example.pafima_trial;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new SingleTouchEventView(this, null));
// setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
它是SingleTouchEventView.java
public class SingleTouchEventView extends View {
private Paint paint = new Paint();
private Path path = new Path();
boolean touched = false;
float x =0;
float y =0;
float [] inputx = new float[200];
float [] inputy = new float[200];
String [] direction = new String [200];
int count =0;
int dcount =0;
public SingleTouchEventView(Context context, AttributeSet attrs) {
super(context, attrs);
paint.setAntiAlias(true);
paint.setStrokeWidth(6f);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
}
@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);
touched=true;
inputx[count]=eventX;
inputy[count]=eventY;
System.out.println("x is: "+ inputx[count]);
System.out.println("y is: "+inputy[count]);
if(count>=2 && count%2 != 1){
if(inputx[count-2]-inputx[count]<=-15){
if(inputy[count-2]-inputy[count]<=-15){
direction[dcount]="right down";
dcount++;
}
if(inputy[count-2]-inputy[count]>15){
direction[dcount]="right up";
dcount++;
}
if(-14<=inputy[count-2]-inputy[count] && inputy[count-2]-inputy[count]<=15 ){
direction[dcount]="right";
dcount++;
}
}
if(inputx[count-2]-inputx[count]>15){
if(inputy[count-2]-inputy[count]>=15){
direction[dcount]="left up";
dcount++;
}
if(inputy[count-2]-inputy[count]<-15){
direction[dcount]="left down";
dcount++;
}
if(15>inputy[count-2]-inputy[count] && inputy[count-2]-inputy[count]>=-15 ){
direction[dcount]="left";
dcount++;
}
}
if (inputx[count-2]-inputx[count]<=15 && inputx[count-2]-inputx[count]>-15){
if(inputy[count-2]-inputy[count]<-15){
direction[dcount]="down";
dcount++;
}
if(inputy[count-2]-inputy[count]>=15){
direction[dcount]="up";
dcount++;
}
}
}
count++;
break;
case MotionEvent.ACTION_UP:
System.out.println("count is "+count);
break;
default:
return false;
}
int a =0;
while(a<dcount){
System.out.println("direction["+a+"] is: "+ direction[a]);
a++;
}
// Schedules a repaint.
invalidate();
return true;
}
}
公共类SingleTouchEventView扩展了视图{
私人油漆=新油漆();
私有路径路径=新路径();
布尔值=假;
浮动x=0;
浮动y=0;
float[]inputx=新浮点[200];
浮点[]输入=新浮点[200];
字符串[]方向=新字符串[200];
整数计数=0;
int dcount=0;
公共SingleTouchEventView(上下文、属性集属性){
超级(上下文,attrs);
paint.setAntiAlias(真);
油漆。设置行程宽度(6f);
油漆。设置颜色(颜色。黑色);
绘制.设置样式(绘制.样式.笔划);
绘制.设置行程连接(绘制.连接.圆形);
}
@凌驾
受保护的void onDraw(画布){
画布.绘制路径(路径,绘制);
}
@凌驾
公共布尔onTouchEvent(运动事件){
float eventX=event.getX();
float eventY=event.getY();
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
path.moveTo(eventX,eventY);
返回true;
case MotionEvent.ACTION\u移动:
lineTo(eventX,eventY);
触摸=真实;
inputx[计数]=事件x;
输入[计数]=事件;
System.out.println(“x是:“+inputx[count]);
System.out.println(“y是:“+inputy[count]);
如果(计数>=2&&count%2!=1){
如果(输入X[count-2]-输入X[count]=-15){
方向[dcount]=“左”;
dcount++;
}
}
if(输入X[count-2]-输入X[count]-15){
如果(输入[计数-2]-输入[计数]=15){
方向[dcount]=“向上”;
dcount++;
}
}
}
计数++;
打破
case MotionEvent.ACTION\u UP:
System.out.println(“计数为”+计数);
打破
违约:
返回false;
}
int a=0;
(a您可以尝试将main_activity.xml设置为您的内容视图,通过id查找relativelayout,并使用realtivelayout.addView(新的SingleTouchEventView(此为空))进行添加。
然后就有了xml文件和singletoucheventview
在xml文件中找到您的RelativeLayout并添加:
android:id="@+id/relativelayout"
这只是一个例子。
之后,转到类并创建对象:
RelativeLayout relativeLayout = (RelativeLayout)findViewById(R.id.relativelayout);
之后你就可以打电话了
relativeLayout.addView(View);
您可以使用以下方式在主活动布局中添加另一个视图:
SingleTouchEventView视图=新的SingleTouchEventView(此,空)
如何使用findviewbyd查找相对布局?@romando90:这只是用于分隔代码的注释,您还需要将其与现有代码一起添加
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new SingleTouchEventView(this, null));
//add xml layout to Activity Window
LayoutInflater inflater = getLayoutInflater();
getWindow().addContentView(inflater.inflate(R.layout.activity_main, null),
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
}
setContentView(view);
Button b = new Button(MainActivity.this);
view.addView(b);