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]
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
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).
Vous avez mis tout cela dans un FrameLayout
avec 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 ConstraintLayout
ou en combinant RelativeLayout
et LinearLayout
. Positionnez les vues les unes par rapport aux autres et à l'écran, et non à des décalages fixes importants.