创建一个 "achievemenet progress" 栏
Creating an "achievemenet progress" bar
所以我正在尝试为我的应用程序中的成就创建一个进度条。一旦 activity 打开,这些进度条应该显示它们的进度。我熟悉常规进度条,您可以在其中更新列表状态并在进度条上设置进度,但不知何故我无法完成此任务。在下面的代码中,我尝试创建一个填充到 30/100 然后停止的进度条,就好像 "achievement progress" 是 30。为了便于理解,我使用简单的整数。当前行为甚至还没有结束,因为进度条只是在旋转而没有任何进度更新。请注意,进度与简单整数以外的任何其他组件无关。
编辑:这是我想要的行为:https://dribbble.com/shots/2758323-Ring-Progress
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_points);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setIndeterminate(false);
new TimedProgress();
}
class TimedProgress {
Timer timer;
public TimedProgress() {
timer = new Timer();
timer.schedule(new ProgressTask(), 0, 500);
}
class ProgressTask extends TimerTask {
int progress = 0;
public void run() {
if (progress <30) {
updateProgress(progress);
progress++;
} else {
timer.cancel();
}
}
}
}
public void updateProgress(final int progress) {
if (null != progressBar) {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress((int) progress);
}
}
布局:
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar"
android:layout_centerVertical="true"
android:layout_alignParentEnd="true"/>
使用计时器来计算进度步数,例如每 1/2 秒(500 毫秒)。这是一个基本的 java 计时器,您可以将其转换为 Android 的 AsyncTask,从中获得乐趣!执行AsyncTask,定时器每1/2秒更新一次进度条。
class TimedProgress {
Timer timer;
public TimedProgress() {
timer = new Timer();
timer.schedule(new ProgressTask(), 0, 500);
}
class ProgressTask extends TimerTask {
int progress = 0;
public void run() {
if (progress <30) {
updateProgress(progress);
progress++;
} else {
timer.cancel();
}
}
}
}
public void updateProgress(final int progress) {
if (null != progressBar) {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress((int) progress);
}
}
所以我正在尝试为我的应用程序中的成就创建一个进度条。一旦 activity 打开,这些进度条应该显示它们的进度。我熟悉常规进度条,您可以在其中更新列表状态并在进度条上设置进度,但不知何故我无法完成此任务。在下面的代码中,我尝试创建一个填充到 30/100 然后停止的进度条,就好像 "achievement progress" 是 30。为了便于理解,我使用简单的整数。当前行为甚至还没有结束,因为进度条只是在旋转而没有任何进度更新。请注意,进度与简单整数以外的任何其他组件无关。
编辑:这是我想要的行为:https://dribbble.com/shots/2758323-Ring-Progress
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_points);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setIndeterminate(false);
new TimedProgress();
}
class TimedProgress {
Timer timer;
public TimedProgress() {
timer = new Timer();
timer.schedule(new ProgressTask(), 0, 500);
}
class ProgressTask extends TimerTask {
int progress = 0;
public void run() {
if (progress <30) {
updateProgress(progress);
progress++;
} else {
timer.cancel();
}
}
}
}
public void updateProgress(final int progress) {
if (null != progressBar) {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress((int) progress);
}
}
布局:
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar"
android:layout_centerVertical="true"
android:layout_alignParentEnd="true"/>
使用计时器来计算进度步数,例如每 1/2 秒(500 毫秒)。这是一个基本的 java 计时器,您可以将其转换为 Android 的 AsyncTask,从中获得乐趣!执行AsyncTask,定时器每1/2秒更新一次进度条。
class TimedProgress {
Timer timer;
public TimedProgress() {
timer = new Timer();
timer.schedule(new ProgressTask(), 0, 500);
}
class ProgressTask extends TimerTask {
int progress = 0;
public void run() {
if (progress <30) {
updateProgress(progress);
progress++;
} else {
timer.cancel();
}
}
}
}
public void updateProgress(final int progress) {
if (null != progressBar) {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress((int) progress);
}
}