【问题标题】:Android percentage bar onclicklistener [closed]Android百分比栏onclicklistener [关闭]
【发布时间】:2019-08-15 20:14:18
【问题描述】:

我是 Java 和编码的新手,我尝试在 Android Studio 中学习如何编码并尝试一些练习。

我想为 2 个按钮创建代码:bt1 和 bt2。当用户点击 bt1 时,进度条会显示点击此 bt1 的百分比。

此解决方案的任何其他帮助/方法也将是可观的。

【问题讨论】:

  • 嗨!您说当用户点击 bt1 时,进度条会显示点击此 bt1 的百分比,但这对我来说没有意义。 bt2 按钮有什么用?
  • @IlyaKovalyov 嗨!用户可以选择在 2 个按钮之间单击。如果 100 人中有 30 人点击 bt1,我们将有 30% 的进度条,因此 bt2 上的进度条为 70%
  • 我仍然很难理解为什么进度条上会有 50%。你是说 btn 1 的 30% 和 btn 2 的 70%?
  • @IlyaKovalyov hooo sorry yes 30%????
  • @IlyaKovalyov 你知道我的意思吗?

标签: java android android-progressbar


【解决方案1】:

因此,据我从您的描述和我们的对话中了解到,您需要一个进度条来显示点击第一个和第二个按钮之间的百分比。如果您创建一个 Empty Activity 项目并在以下文件中替换所有这些内容:

MainActivity.java

public class MainActivity extends AppCompatActivity {

Button btn1;
Button btn2;

ProgressBar myBar;

TextView score1;
TextView score2;

TextView percent1;
TextView percent2;

private float firstClicked;
private float secondClicked;

@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn1 = findViewById(R.id.btn1);
    btn2 = findViewById(R.id.btn2);

    myBar = findViewById(R.id.progressBar);

    score1 = findViewById(R.id.score1);
    score2 = findViewById(R.id.score2);

    percent1 = findViewById(R.id.percent1);
    percent2 = findViewById(R.id.percent2);


    firstClicked = 0;
    secondClicked = 0;

    btn1.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.N)
        @Override
        public void onClick(View v) {
            firstClicked++;
            score1.setText(String.valueOf((int) firstClicked));
            updateProgressTab();
        }
    });

    btn2.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.N)
        @Override
        public void onClick(View v) {
            secondClicked++;
            score2.setText(String.valueOf((int) secondClicked));
            updateProgressTab();
        }
    });

    updateProgressTab();
}

@SuppressLint("SetTextI18n")
@RequiresApi(api = Build.VERSION_CODES.N)
public void updateProgressTab() {
    float progress;

    if (firstClicked != 0 && secondClicked != 0) {
        progress = (firstClicked / (firstClicked + secondClicked)) * 100;
        percent1.setText((int) progress + "%");
        percent2.setText((int) (100 - progress) + "%");
    } else if (firstClicked == 0 && secondClicked == 0) {
        progress = 50;
    } else if (firstClicked == 0) {
        progress = 0;
    } else {
        progress = 100;
    }

    percent1.setText((int) progress + "%");
    percent2.setText((int) (100 - progress) + "%");

    myBar.setProgress((int) progress, true);
}

}

(不要忘记自动导入所有内容)

custom_progressbar.xml需要在res/drawable文件夹中创建

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<!-- Define the background properties like color etc -->
<item android:id="@android:id/background">
    <shape>
        <gradient
            android:startColor="#000001"
            android:centerColor="#0b131e"
            android:centerY="1.0"
            android:endColor="#0d1522"
            android:angle="270"
            />
    </shape>
</item>

<!-- Define the progress properties like start color, end color etc -->
<item android:id="@android:id/progress">
    <clip>
        <shape>
            <gradient
                android:startColor="#007A00"
                android:centerColor="#007A00"
                android:centerY="1.0"
                android:endColor="#06101d"
                android:angle="270"
                />
        </shape>
    </clip>
</item>

activity_main.smlres/layout 文件夹中

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
    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=".MainActivity">

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="25dp"
    android:layout_marginLeft="25dp"
    android:layout_marginTop="25dp"
    android:layout_marginEnd="25dp"
    android:layout_marginRight="25dp"
    android:progress="50"
    android:progressDrawable="@drawable/custom_progressbar"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    android:id="@+id/btn1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="80dp"
    android:background="#007A00"
    android:text="@string/button_one"
    android:textColor="#FCF8F8"
    android:textStyle="bold"
    app:layout_constraintEnd_toStartOf="@+id/btn2"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/progressBar" />

<Button
    android:id="@+id/btn2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="80dp"
    android:background="#0B131E"
    android:text="@string/button_two"
    android:textColor="#FFFFFF"
    android:textStyle="bold"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toEndOf="@+id/btn1"
    app:layout_constraintTop_toBottomOf="@+id/progressBar" />

<TextView
    android:id="@+id/score1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:text="@string/_0"
    android:textColor="#000000"
    app:layout_constraintEnd_toStartOf="@+id/score2"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/btn1" />

<TextView
    android:id="@+id/score2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:text="0"
    android:textColor="#000000"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toEndOf="@+id/score1"
    app:layout_constraintTop_toBottomOf="@+id/btn2" />

<TextView
    android:id="@+id/percent1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="25dp"
    android:layout_marginLeft="25dp"
    android:layout_marginTop="10dp"
    android:text="50%"
    android:textColor="#007A00"
    android:textSize="22sp"
    android:textStyle="bold"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/progressBar" />

<TextView
    android:id="@+id/percent2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:layout_marginEnd="25dp"
    android:layout_marginRight="25dp"
    android:text="50%"
    android:textColor="#0B131E"
    android:textSize="22sp"
    android:textStyle="bold"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/progressBar" />
</android.support.constraint.ConstraintLayout>

请记住,我的项目被称为 ProgressBar,因此如果您将 Empty Project 称为 ProgressBar,您在技术上不需要更换任何东西。

您可以从代码中的所有小东西中学习,但这基本上是您要求完成的任务。如果您难以理解某些内容,请使用Ctrl+Shift+F(Windows)和Command+Shift+F(Mac)跨项目搜索内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多