将值从“活动”传递到自定义视图

时间:2014-03-05 15:17:38

标签: android view sensor

我需要将主Activity中的值传递给自定义View。

在主要活动中,我有一个SensorEventListener,所以我不断听光传感器。在onSensorChanged()方法中,我读取了值,每次更改为自定义视图时都需要发送此值。

我不知道哪个是实现这一目标的最佳途径。

更新 -

在主要活动上引用SensorEventListener的方法:

@Override
public void onSensorChanged(SensorEvent event) {
    float lumnes = event.values[0];
    GaugeView.setHandTarget(lumnes);
}

方法我必须在自定义视图中发送值:

public void setHandTarget(float temperature) {
    if (temperature < minDegrees) {
        temperature = minDegrees;
    } else if (temperature > maxDegrees) {
        temperature = maxDegrees;
    }
    handTarget = temperature;
    handInitialized = true;
    invalidate();
}

我不能使用静态引用因为我不能调用invalidate()

2 个答案:

答案 0 :(得分:4)

你可以这样做:

public CustomView extends View {
  ...
  private float[] values; //this 

  //setter
  public void setValues(float[] values) {
    this.values = values;
  }

}


public class MyActivity extends Activity implements SensorEventListener {

 private CustomView mCustomView;
 ...
    @Override
    public void onSensorChanged(SensorEvent event) {
        float[] values = event.values;
        mCustomView.setValues(values);    //pass the collected values to the view via setter
    }
}

答案 1 :(得分:0)

在没有看到任何代码的情况下,我可以提供的最佳建议是在视图中创建属性,并使其可以从Main Activity类访问。在检查传感器的方法中,您只需将创建的自定义View属性设置为值即可。与直接访问它的价值不同。

假设您的值是浮点数,请将以下内容添加到自定义视图类:

public float sensorValue;

从传感器事件监听器访问它,如下所示:

CustomView.sensorValue = sensorValue;