我正在尝试制作一个应用程序,按钮的颜色随着接近传感器而变化。
我不知道如何在onSensorChanged
部分更改它。我必须导入Color并实现不同的颜色状态吗?我有点困惑。
这是我的代码:
public class MainProxmityActivity extends Activity implements SensorEventListener {
Button proximidade;
SensorManager Sm;
Sensor ProxSensor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_proxmity);
Sm = (SensorManager) getSystemService (SENSOR_SERVICE);
ProxSensor = Sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
proximidade = (Button) findViewById(R.id.btn_proximidade);
Sm.registerListener(this, ProxSensor, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_proxmity, menu);
return true;
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
proximidade.setBackgroundColor(getTitleColor("bd4c31"));
}
}
希望问题很明确。
答案 0 :(得分:2)
Android设备有一堆传感器,因此onSensorChanged()代码通常有一个switch语句来选择感兴趣的传感器。特别地,接近传感器返回表示接近度的浮点值(例如,如果传感器的最大范围是5.0,则<1.0是“接近”)。尝试这样的事情:
int mColor;
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
case Sensor.TYPE_PROXIMITY:
if (event.values[0] < 1.0f) {
if (mColor != Color.GREEN) {
mColor = Color.GREEN;
proximidade.setBackgroundColor(Color.GREEN);
}
}
else {
if (mColor != Color.WHITE) {
mColor = Color.WHITE;
proximidade.setBackgroundColor(Color.WHITE);
}
}
break;
}
}
请记住在onStart()代码中向接近传感器注册一个监听器,如下所示:
mSensorManager.registerListener(mViewWithSensorListener, s, SensorManager.SENSOR_DELAY_NORMAL)
同样在onStop()代码中取消注册接近传感器的监听器,如下所示:
mSensorManager.unregisterListener(mViewWithSensorListener);