Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Derecho a la izquierda ProgressBar?

¿Alguien sabe cómo hacer una vista invertida, tengo un ProgressBar horizontal y quiero que de derecha a izquierda en lugar de izquierda a derecha

  • Cambiar el tamaño de un mapa de bits a un valor fijo, pero sin cambiar la relación de aspecto
  • NullPointerException que no apunta a ninguna línea en mi código
  • Relación de aspecto fija
  • Establecer márgenes en un LinearLayout programáticamente
  • Clone textview para anexarlo a un ViewGroup
  • ¿Cómo usar la vista propia en el diseño?
  • Disposición personalizada de Android - onDraw () nunca se llama
  • Diferencia entre el relleno y el margen de una vista
  • 7 Solutions collect form web for “Derecho a la izquierda ProgressBar?”

    Realice una subclase de la vista de barra de progreso normal e implemente el método onDraw para girar el lienzo antes de dibujarlo:

    @Override protected void onDraw(Canvas canvas) { canvas.save(); canvas.rotate(180,<CenterX>,<CenterY>); super.onDraw(canvas); canvas.restore(); } 

    Esto debería funcionar.

    Es aún más fácil. Simplemente puede llamar al siguiente método y luego se gira y funciona de la manera que quería.

     progressBar.setRotation(180); 

    Un ejemplo: Una barra de progreso normal y una barra de progreso RTL

      public class inverseSeekBar extends ProgressBar { public inverseSeekBar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } public inverseSeekBar(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public inverseSeekBar(Context context) { super(context); // TODO Auto-generated constructor stub } @Override protected synchronized void onDraw(Canvas canvas) { // TODO Auto-generated method stub canvas.save(); //now we change the matrix //We need to rotate around the center of our text //Otherwise it rotates around the origin, and that's bad. float py = this.getHeight()/2.0f; float px = this.getWidth()/2.0f; canvas.rotate(180, px, py); //draw the text with the matrix applied. super.onDraw(canvas); //restore the old matrix. canvas.restore(); }} <com.hlidskialf.android.widget.inverseSeekBar style="?android:attr/progressBarStyleHorizontal" android:layout_width="200dip" android:layout_height="wrap_content" android:max="100" android:progress="50" android:secondaryProgress="75" /> 

    Mypackage: com.test.testProgressBar

    No es necesario girar la View completa.

    Simplemente utilice un atributo xml único en su my_progress_drawable.xml :

     <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@android:id/background" android:drawable="@drawable/my_background"/> <item android:id="@android:id/progress"> <clip android:drawable="@drawable/my_right_to_left_progress" android:gravity="right" /> <!-- Clip the image from the RIGHT --> </item> </layer-list> 

    La documentación nos dice que gravity="right" hace esto:

    Coloque el objeto en el borde derecho de su contenedor, no cambiando su tamaño. Cuando clipOrientation es "horizontal", el recorte se produce en el lado izquierdo del dibujable.

    No sobrescriba onDraw() . Esta implementación es más estable en las diferentes versiones de Android.

    Desafortunadamente, es imposible establecer la gravedad de un ClipDrawable programación sin invocar a su constructor .

    Puede voltear una vista en xml utilizando los atributos scaleX o scaleY

      <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleX="-1"/> 

    Cos I'm lazy Acabo de agregar estas dos líneas a la seekbar xml:

     android:layoutDirection="rtl" android:mirrorForRtl="true" 

    Cualquier desventajas a esto?

     <ProgressBar style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:layout_margin="8dp" android:layoutDirection="rtl" android:progress="80" /> 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.