我有一个代码,其中加速度计的值应与进度条的进度相对应。我在下面附上了我的代码。即使我使用setProgress,进度条也会显示正常的“缓冲事物”,并不反映我希望它显示的进度。
我的java代码:
//package comes here
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.widget.ProgressBar;
import android.widget.TextView;
public class AccelerometerControl extends AppCompatActivity implements SensorEventListener {
private TextView xText, yText, zText;
private Sensor mySensor;
private SensorManager SM;
ProgressBar fd,bk,rt,lt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_accelerometer_control);
SM = (SensorManager)getSystemService(SENSOR_SERVICE);
mySensor = SM.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
SM.registerListener(this, mySensor, SensorManager.SENSOR_DELAY_NORMAL);
xText = (TextView)findViewById(R.id.textView1);
yText = (TextView)findViewById(R.id.textView2);
zText = (TextView)findViewById(R.id.textView3);
fd = (ProgressBar) findViewById(R.id.up_magnitude);
bk = (ProgressBar) findViewById(R.id.down_magnitude);
rt = (ProgressBar) findViewById(R.id.right_magnitude);
lt = (ProgressBar) findViewById(R.id.left_magnitude);
}
@Override
public void onSensorChanged(SensorEvent event) {
xText.setText("X: " + event.values[0]);
yText.setText("Y: " + event.values[1]);
zText.setText("Z: " + event.values[2]);
float x=event.values[0]*16.67f;
float y=event.values[1]*16.67f;
float z=event.values[2]*16.67f;
int percentX = (int) x;
int percentY = (int) y;
fd.setProgress(percentX);
rt.setProgress(percentY);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
我的布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ControllerActivity">
<ImageView
android:id="@+id/up"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_above="@+id/left"
android:layout_centerHorizontal="true"
app:srcCompat="@drawable/up" />
<ImageView
android:id="@+id/left"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/up"
android:layout_toStartOf="@+id/up"
app:srcCompat="@drawable/left" />
<ImageView
android:id="@+id/down"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_below="@+id/left"
android:layout_centerHorizontal="true"
app:srcCompat="@drawable/down" />
<ImageView
android:id="@+id/right"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_centerVertical="true"
android:layout_toEndOf="@+id/up"
android:layout_toRightOf="@+id/up"
app:srcCompat="@drawable/right" />
<TextView
android:id="@+id/BTID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="44dp"
android:text="Bluetooth ID" />
<ProgressBar
android:id="@+id/right_magnitude"
style="?android:attr/progressBarStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_centerVertical="true"
android:layout_toEndOf="@+id/up"
android:layout_toRightOf="@+id/up"
android:indeterminate="false"/>
<ProgressBar
android:id="@+id/left_magnitude"
style="?android:attr/progressBarStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/up"
android:layout_toStartOf="@+id/up"
android:indeterminate="false"/>
<ProgressBar
android:id="@+id/up_magnitude"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_centerVertical="true"
android:layout_above="@+id/left"
android:layout_centerHorizontal="true"
android:indeterminate="false"
/>
<ProgressBar
android:id="@+id/down_magnitude"
style="?android:attr/progressBarStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_below="@+id/left"
android:layout_centerHorizontal="true"
android:indeterminate="false"/>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_marginEnd="20dp"
android:layout_marginTop="22dp"
android:text="X axis accel" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignStart="@+id/textView1"
android:layout_marginTop="58dp"
android:text="Y axis accel" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignStart="@+id/textView2"
android:layout_marginTop="92dp"
android:text="Z axis accel" />
</RelativeLayout>
(我将在进度条(进度圈)工作后进行更改。)
答案 0 :(得分:0)
根据您的说明,您似乎无法正确设置进度条样式。添加style="@style/Widget.AppCompat.ProgressBar.Horizontal"
更新所有进度栏布局,如下所示:
<ProgressBar
android:id="@+id/up_magnitude"
android:layout_width="match_parent"
android:layout_height="wrap_content"
...
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
/>
上面的代码将创建水平进度条。如果要创建循环进度条,可以按照此SO
进行操作