Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:通过编程将UI元素添加到视图中_Android_Android Widget - Fatal编程技术网

Android:通过编程将UI元素添加到视图中

Android:通过编程将UI元素添加到视图中,android,android-widget,Android,Android Widget,我的看法如下: package com.mycompany; import android.view.View; import java.util.concurrent.TimeUnit; import java.util.ArrayList; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.util.AttributeSe

我的看法如下:

package com.mycompany;

import android.view.View;
import java.util.concurrent.TimeUnit;
import java.util.ArrayList;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.util.AttributeSet;
import android.graphics.Paint;
import android.graphics.Point;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.widget.*;



public class GameEngineView extends View implements SensorEventListener {
    GameLoop gameloop;
    String txt_acc;
    float accY;
    ArrayList<Point> bugPath;

    private SensorManager sensorManager;

    private class GameLoop extends Thread {
        private volatile boolean running = true;

        public void run() {
            while (running) {
                try {
                    TimeUnit.MILLISECONDS.sleep(1);
                    postInvalidate();
                    pause();

                } catch (InterruptedException ex) {
                    running = false;
                }
            }
        }

        public void pause() {
            running = false;
        }

        public void start() {
            running = true;
            run();
        }

        public void safeStop() {
            running = false;
            interrupt();
        }

    }

    public void unload() {
        gameloop.safeStop();

    }

    public GameEngineView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
        init(context);

    }

    public GameEngineView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
        init(context);
    }

    public GameEngineView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        init(context);
    }

    private void init(Context context) {
        txt_acc = "";

        // Adding SENSOR
        sensorManager=(SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
        // add listener. The listener will be HelloAndroid (this) class
        sensorManager.registerListener(this,
                sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_NORMAL);

        // Adding UI Elements : How ?
        Button btn_camera = new Button(context);
        btn_camera.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.FILL_PARENT));
        btn_camera.setClickable(true);
        btn_camera.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("clicked the camera.");
            }
        });


        gameloop = new GameLoop();
        gameloop.run();

    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        // TODO Auto-generated method stub
        //super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        System.out.println("Width " + widthMeasureSpec);
        setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
    }

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

        Paint p = new Paint();
        p.setColor(Color.WHITE);
        p.setStyle(Paint.Style.FILL);
        p.setAntiAlias(true);
        p.setTextSize(30);
        canvas.drawText("|[ " + txt_acc + " ]|", 50, 500, p);

        gameloop.start();

    }
    public void onAccuracyChanged(Sensor sensor,int accuracy){

    }
    public void onSensorChanged(SensorEvent event){
        if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
            //float x=event.values[0];
            accY =event.values[1];
            //float z=event.values[2];

            txt_acc = "" + accY;
        }
    }
}

我遵循这一点。

您还应该提供布局宽度和布局高度。但我没有使用
布局.xml
,因此我没有
线性布局。请参阅我的活动文件。updated.GameEngineView扩展视图,查看addView是否可用于该视图
public class MyActivity extends Activity {
    private GameEngineView gameEngine;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // add Game Engine
        gameEngine = new GameEngineView(this);

        setContentView(gameEngine);
        gameEngine.requestFocus();
    }
}
    detailListView = (LinearLayout) findViewById(R.id.DetailsLinearLayout); // Find the layout where you want to add button
    Button button = new Button(this);
 button.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT
                    ,ViewGroup.LayoutParams.WRAP_CONTENT));
    detailListView.addView(button);//add view to add