ProgressBar 不工作 - Android
ProgressBar does not work - Android
我有一个代码,其中加速度计的值应与进度条的进度相对应。我在下面附上了我的代码。即使我使用 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>
(一旦进度条(进度圈)开始工作,我将进行更改。)
根据您的描述,您似乎没有正确设置进度条样式。添加 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
我有一个代码,其中加速度计的值应与进度条的进度相对应。我在下面附上了我的代码。即使我使用 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>
(一旦进度条(进度圈)开始工作,我将进行更改。)
根据您的描述,您似乎没有正确设置进度条样式。添加 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