Utilisation des radioButtons pour passer d'une photo à l'autre et utilisation de la barre de progression, du texteView et de la barre de recherche pour modifier l'opacité de la photo choisie [dupliquer]

Nov 23 2020

Je suis un étudiant qui apprend cette année maintenant le studio Android avec java. J'ai appris la semaine dernière sur la barre de progression, la barre de recherche et les boutons radio. Mon travail consiste à utiliser des boutons radio pour passer d'une photo à l'autre et à utiliser une barre de progression, textView (pour le pourcentage) et une barre de recherche pour modifier l'opacité de la photo choisie.

J'ai essayé comme j'ai pu, et en fait, quand je regarde "design", je peux voir ma barre de progression, la barre de recherche et la vue texte, et tout va bien, mais quand je lance l'application (sur SDK 19), la radio les boutons ne changent pas la photo choisie, et je ne peux même pas voir la barre de recherche, la barre de progression et l'affichage du texte.

Voici le XML:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"
    android:orientation="vertical"
    android:background="@drawable/appbackground">

    <ImageView
        android:layout_width="318dp"
        android:layout_height="353dp"
        android:src="@drawable/avatar"
        android:layout_gravity="center"
        android:layout_marginBottom="200sp"/>

    <ImageView
        android:id="@+id/element"
        android:layout_width="137dp"
        android:layout_height="128dp"
        android:layout_marginStart="135sp"
        android:layout_marginTop="195sp"
        android:src="@drawable/abc_vector_test"
        android:elevation="2sp"/>


    <RadioGroup
        android:id="@+id/radioG"
        android:layout_width="wrap_content"
        android:layout_height="133dp"
        android:layout_marginTop="400dp"
        android:background="@drawable/background"
        android:orientation="vertical">

        <RadioButton
            android:id="@+id/w"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/Water"
            android:textColor="#03A9F4" />


        <RadioButton
            android:id="@+id/e"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/Earth"
            android:textColor="#652F00" />


        <RadioButton
            android:id="@+id/f"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/Fire"
            android:textColor="#FF5722" />


        <RadioButton
            android:id="@+id/a"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/Air"
            android:textColor="#9C9C9C" />

    </RadioGroup>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/text"
        android:text="50%"
        android:gravity="center"
        android:layout_marginTop="570sp"
        android:textSize="40sp"/>


    <ProgressBar
        android:id="@+id/prog"
        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="625sp" />

    <SeekBar
        android:id="@+id/seek"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="650sp"
        android:max="100"
        android:progress="50"
        android:thumb="@drawable/uncleiroh2" />


</FrameLayout>

et voici le java:

package com.example.avatarphotos;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.SeekBar;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements SeekBar.OnSeekBarChangeListener, RadioGroup.OnCheckedChangeListener {

    private ImageView Element;
    private TextView textView;
    private ProgressBar progressBar;
   private RadioGroup radioGroup;
    private SeekBar seekBar;
    //private RadioButton air;
    //private RadioButton earth;
    //private RadioButton water;
    //private RadioButton fire;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Element = findViewById(R.id.element);
        textView=findViewById(R.id.text);
        progressBar=findViewById(R.id.prog);
        seekBar=findViewById(R.id.seek);
        radioGroup=findViewById(R.id.radioG);
        radioGroup.setOnCheckedChangeListener(this);
        seekBar.setOnSeekBarChangeListener(this);

    }
        @Override
        public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
        progressBar.setProgress(i);
        textView.setText(""+i+"%");
        Element.setImageAlpha((int)(i/100.0*255));
    }
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

    }
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

    }



    @Override
    public void onCheckedChanged(RadioGroup radioGroup, int i) {
        switch (i){
            case 0:
                Element.setImageResource(R.drawable.water);
                break;
            case 1:
                Element.setImageResource(R.drawable.earth);
                break;
            case 2:
                Element.setImageResource(R.drawable.fire);
                break;
            case 3:
                Element.setImageResource(R.drawable.air);
                break;
        }
    }

      }

photo de conception : application de conception : application et bien en écrivant ceci, j'ai reçu ce message d'erreur donc je ne sais pas s'il est vraiment lié: message de problème

Réponses

FabianMontossi Nov 23 2020 at 23:02

Pourquoi n'essayez-vous pas de mettre à jour vers une version ADB plus récente d'ADB (ou de mettre à jour tout Android Studio, peut-être).

RyanM Nov 24 2020 at 10:29

Vous avez mis tout cela dans un FrameLayoutavec de grandes marges fixes. Vos vues manquantes sont probablement hors écran (cela android:layout_marginTop="625sp"signifie que vous les compensez beaucoup; vous devriez également l'utiliser dp). La raison pour laquelle cela fonctionne dans l'aperçu est probablement parce que vous prévisualisez à quoi cela ressemblerait sur un écran plus grand.

Je suppose que vous l'avez fait parce que sinon FrameLayout met simplement toutes les vues les unes sur les autres. Vous pouvez résoudre ce problème en créant votre interface utilisateur en utilisant ConstraintLayoutou en combinant RelativeLayoutet LinearLayout. Positionnez les vues les unes par rapport aux autres et à l'écran, et non à des décalages fixes importants.