Rady a tipy pro vyvojpotize s vyvojem aplikace, uzivatelsky vstup

Moderátor: mArtinko5MB

Uživatelský avatar

Crusty
Robot
Příspěvky: 918
Registrován: ned 19. črc 2009 17:30:40
Reputace: 21
Typ mobilu / ROM: Redmi Note 9 Pro
Bydliště: Praha
Kontaktovat uživatele:

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od Crusty » čtv 12. kvě 2022 15:28:49

tak to uz si na to budes muset asi udelat Custom View a kreslit to programove, to uz je celkem slozity orisek. Nebo se kouknout, jestli na to existuje nejaka knihovna





Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » čtv 12. kvě 2022 16:08:33

Kdybys mi nasel jednoduchy example code pro MainActivity.java tak bys byl nejlepsi :clap:

Uživatelský avatar

Crusty
Robot
Příspěvky: 918
Registrován: ned 19. črc 2009 17:30:40
Reputace: 21
Typ mobilu / ROM: Redmi Note 9 Pro
Bydliště: Praha
Kontaktovat uživatele:

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od Crusty » čtv 12. kvě 2022 16:28:49



Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » čtv 12. kvě 2022 19:28:59

A kdybych chtel vykreslit aspon jedno recke pismenko s indexem:
$\mu_i$

tak to neni o moc snazsi ?

Z linku cos mi poslal moc moudry nejsem.

Uživatelský avatar

Crusty
Robot
Příspěvky: 918
Registrován: ned 19. črc 2009 17:30:40
Reputace: 21
Typ mobilu / ROM: Redmi Note 9 Pro
Bydliště: Praha
Kontaktovat uživatele:

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od Crusty » čtv 12. kvě 2022 20:48:37

tak muzes zkusit TextView ... nastavit mu font, ktery tyto pismena umi a pak by to asi jit melo



Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » pát 13. kvě 2022 9:18:48

Muzes mi sem prosimte hodit nejaky kousek kodu v xmlku , nevim kde zacit.
Staci vypsat $\mu_i$

Diky

Uživatelský avatar

Crusty
Robot
Příspěvky: 918
Registrován: ned 19. črc 2009 17:30:40
Reputace: 21
Typ mobilu / ROM: Redmi Note 9 Pro
Bydliště: Praha
Kontaktovat uživatele:

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od Crusty » pát 13. kvě 2022 9:23:54

nevim co znamena $\mu_i$
font nastavis takto
https://stackoverflow.com/questions/275 ... oid-studio


Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » pát 13. kvě 2022 9:30:23

Kdyz nevis co je $\mu$ tak zkus $\lambda_i$

Kdyz vsechny ty navody jsou priserne komplikovane

20 bytu musi na vypsani toho pismenka prece stacit, ne ?

Uživatelský avatar

Crusty
Robot
Příspěvky: 918
Registrován: ned 19. črc 2009 17:30:40
Reputace: 21
Typ mobilu / ROM: Redmi Note 9 Pro
Bydliště: Praha
Kontaktovat uživatele:

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od Crusty » pát 13. kvě 2022 9:35:29

snaz se :)


Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » sob 14. kvě 2022 18:36:38

Crusty, jak to, ze si Google PLay Console nepamatuje obsah popisku aplikace ani Iconky do ni vlozene ?? :facepalm:
Přílohy
111.jpg
111.jpg (47.12 KiB) Zobrazeno 2967 x

Uživatelský avatar

Crusty
Robot
Příspěvky: 918
Registrován: ned 19. črc 2009 17:30:40
Reputace: 21
Typ mobilu / ROM: Redmi Note 9 Pro
Bydliště: Praha
Kontaktovat uživatele:

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od Crusty » sob 14. kvě 2022 18:40:24

pamatuje, mozna jsi jen nedal Save? Nevim jak jsi postupoval


Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » sob 14. kvě 2022 18:44:54

Save jsem urcite dal, jinak bych se neptal.


Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » sob 14. kvě 2022 19:08:07

Pri sejvnuti se tam objevuje takovato chybova hlaska:
Přílohy
111.jpg
111.jpg (81.92 KiB) Zobrazeno 2953 x

Uživatelský avatar

Crusty
Robot
Příspěvky: 918
Registrován: ned 19. črc 2009 17:30:40
Reputace: 21
Typ mobilu / ROM: Redmi Note 9 Pro
Bydliště: Praha
Kontaktovat uživatele:

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od Crusty » sob 14. kvě 2022 19:13:47

tak mozna maj nejakou docasnou chybu, vypadek, zkus pozdeji


Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » sob 14. kvě 2022 20:46:39

Crusty mam jeste jeden problem, umel bys premenit

Kód: Vybrat vše

android:onClick="click4"
premenit na

Kód: Vybrat vše

onClcikLIstener 
?

Na Google PLay jim to pada a mohlo by to byt timto. Staci, kdyz premenis ten onClick4, ostatni si udelam sam.
Neumim ten onClcikListener moc pouzivat byl jsem zvykly na

Kód: Vybrat vše

android::onClick="click4"
.

Prikladam MainActivity i XMLko:

Kód: Vybrat vše

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="bottom|fill_horizontal"
    android:layout_span="@integer/material_motion_duration_long_2"
    android:background="#FFFFFF"
    android:backgroundTint="#FFFFFF"
    android:backgroundTintMode="multiply"
    android:foregroundGravity="fill_horizontal|center_horizontal"
    android:foregroundTint="@color/purple_200"
    android:foregroundTintMode="multiply"
    android:requiresFadingEdge="vertical"
    android:scrollbarDefaultDelayBeforeFade="10"
    android:visibility="visible">



    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_columnSpan="4"
        android:layout_columnWeight="12"
        android:accessibilityLiveRegion="none"
        android:orientation="vertical">


        <TableLayout
            android:id="@+id/tableLayout1"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"></TableLayout>


        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:backgroundTint="#1DE9B6"
            android:onClick="click2"
            android:text="Generate"
            android:textColor="#000000"
            android:textSize="10dp" />


        <EditText
            android:id="@+id/simpleEditText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:digits="10"
            android:hint="Number of coalitions appear here"
            android:inputType="text"
            android:minHeight="48dp"
            android:textColor="#FF0000" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_columnSpan="12"
            android:layout_columnWeight="12"
            android:accessibilityLiveRegion="none"
            android:inputType="textCapCharacters"
            android:orientation="horizontal">

            <Button
                android:id="@+id/button4"
                android:layout_width="25mm"
                android:layout_height="wrap_content"
                android:foregroundTint="#FF0000"
                android:foregroundTintMode="src_over"
                android:onClick="click4"
                android:scrollbarDefaultDelayBeforeFade="4"
                android:text="Increase"
                android:textSize="11dp" />

            <Button
                android:id="@+id/button7"
                android:layout_width="25mm"
                android:layout_height="wrap_content"
                android:foregroundTint="#FF0000"
                android:foregroundTintMode="src_over"
                android:onClick="click7"
                android:scrollbarDefaultDelayBeforeFade="4"
                android:text="Decrease"
                android:textSize="11dp" />
        </LinearLayout>


        <Button
            android:id="@+id/button5"
            android:layout_width="50mm"
            android:layout_height="wrap_content"
            android:backgroundTint="#00E5FF"
            android:backgroundTintMode="add"
            android:onClick="click5"
            android:text="Power indices" />

        <TextView
            android:id="@+id/textView6"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textMultiLine"
            android:text="Shapley, Banzhaf and Coleman" />

        <TextView
            android:id="@+id/tvMarque"
            android:layout_width="50mm"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:layout_gravity="center_horizontal"
            android:fadingEdge="horizontal"
            android:marqueeRepeatLimit="marquee_forever"
            android:scrollHorizontally="true"
            android:padding="5dp"
            android:textSize="16sp"
            android:text="AHA"
            android:visibility="visible" />


        <TextView
            android:id="@+id/tvMarque2"
            android:layout_width="24mm"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:textColor="#00E5FF"
            android:layout_gravity="center_horizontal"
            android:fadingEdge="horizontal"
            android:marqueeRepeatLimit="marquee_forever"
            android:scrollHorizontally="true"
            android:padding="15dp"
            android:textSize="12sp"
            android:text="AHA2"
            android:visibility="visible" />


        <TextView
            android:id="@+id/blink"
            android:layout_width="50mm"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:layout_gravity="center_horizontal"
            android:fadingEdge="horizontal"
            android:textColor="#00E5FF"
            android:marqueeRepeatLimit="marquee_forever"
            android:scrollHorizontally="true"
            android:padding="5dp"
            android:textSize="16sp"
            android:text="  **"
            android:visibility="invisible" />

    </LinearLayout>





</ScrollView>

MainActivity:

Kód: Vybrat vše

package com.example.tablelayout6;

import static java.lang.Integer.toBinaryString;

import androidx.appcompat.app.AppCompatActivity;

import android.animation.ArgbEvaluator;
import android.animation.TimeAnimator;
import android.graphics.Color;
import android.os.Bundle;

import android.text.Html;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.style.ForegroundColorSpan;
import android.view.View;

import android.widget.EditText;
import android.widget.TableRow;

import android.widget.TextView;
import android.widget.TableLayout;

import android.text.TextUtils;

public class MainActivity extends AppCompatActivity {
    public boolean g = true;
    public Integer N = 1;
    public String a = "2";
    private EditText editText1;
    private EditText linear;
    private Integer[] hodnoty = new Integer[10];
    private String[] koal = new String[10];
    private float[] shap = new float[10];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
/*
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                View blink = findViewById(R.id.blink);
                blink.setVisibility(blink.getVisibility() == View.VISIBLE ? View.INVISIBLE : View.VISIBLE);
                handler.postDelayed(this, 100);
            }
        }, 100);

*/

    }

    public boolean iswinning(Integer J, int ii) {
        return true;

    }

    public Integer fact(Integer f) {
        if (f == 0) return 1;
        else return f * fact((Integer) (f - 1));
    }

    //T pocetHracu

  //  public Integer[] S = new Integer[toBinaryString(N - 1).length()];

    public boolean areDisjoint(Integer I,Integer J) {
        int pocetHracu= toBinaryString(N-1).length();

        String StringPadded1=stf(toBinaryString(I),pocetHracu- toBinaryString(I).length());
        String StringPadded2=stf(toBinaryString(J),pocetHracu- toBinaryString(J).length());

        Integer[] koal1= stringToArray(StringPadded1);
        Integer[] koal2= stringToArray(StringPadded2);


        for(int i=0;i<pocetHracu;i++) {
            if (koal1[i]==1 & koal2[i]==1) {
                return false;
            }
        }
        return true;

    }


    public Integer union(Integer I,Integer J) {
        int pocetHracu= toBinaryString(N-1).length();

        String StringPadded1=stf(toBinaryString(I),pocetHracu- toBinaryString(I).length());
        String StringPadded2=stf(toBinaryString(J),pocetHracu- toBinaryString(J).length());
        String StringPaddedVysl=stf(toBinaryString(0),pocetHracu-1);


        Integer[] koal1= stringToArray(StringPadded1);
        Integer[] koal2= stringToArray(StringPadded2);
Integer[] koalVysl=stringToArray(StringPaddedVysl);

Integer vysl=0;

        for(int i=0;i<pocetHracu;i++) {
//            koalVysl[i]=koal1[i]+koal2[i];
            vysl+=power(pocetHracu-1-i)*(koal1[i]+koal2[i]);


        }

//         vysl=4*(koal1[0]+koal2[0])+2*(koal1[1]+koal2[1])+(koal1[2]+koal2[2]);
        return vysl;

    }


    public Integer power(Integer p) {
        if(p==0) {
            return 1;
        }
        return 2*power(p-1);

    }

    public float K1=0, K2=0, K3=0, K4, K5;

public boolean isSA(float[] vyhryKoalici) {
        for(Integer I=0;I<N;I++) {
            for(Integer J=0;J<N;J++) {
                if(areDisjoint(I,J)) {
                 if (vyhryKoalici[union(I,J)]<vyhryKoalici[I]+vyhryKoalici[J]) {
                     K1=union(I,J);K2=vyhryKoalici[I];K3=vyhryKoalici[J];
                     return false;
                }

                }
            }
        }

        return true;
}




    public Integer[] stringToArray(String binary) {
        Integer[] arrayOfPLayers=new Integer[binary.length()];
         for(int i=0;i<binary.length();i++) {
             arrayOfPLayers[i]=Integer.parseInt("" + binary.charAt(i));

         }
         return arrayOfPLayers;
    }

    //N je pocet koalici
    public void click5(View view) {

        int pocetHracu= toBinaryString(N-1).length();
        Integer[][] koalice=new Integer[N][pocetHracu];
        Integer[][] koalice2=new Integer[N][pocetHracu];
        Integer[][] koalice3=new Integer[N][pocetHracu];



        for (Integer ith=0;ith<N;ith++) {
            for(Integer T=0;T<pocetHracu;T++) {
              String StringPadded=stf(toBinaryString(ith),pocetHracu- toBinaryString(ith).length());
              koalice[ith][T]=stringToArray(StringPadded)[T];
              koalice2[ith][T]=stringToArray(StringPadded)[T];
              koalice3[ith][T]=stringToArray(StringPadded)[T];
            }
        }
        float[] shap=new float[pocetHracu];
        float[] vyhryKoalici = new float[N];
        Integer[] isSwing=new Integer[pocetHracu];

        for (int i=0; i<N;i++) {
            editText1 = (EditText) findViewById(330+i);
            String a=editText1.getText().toString();
            float f1 = Float.parseFloat(a);
         vyhryKoalici[i]=f1;
        }

        Integer[] kolikJeSwingu=  new Integer[pocetHracu];




String S="";

        String kde="j";

        Integer jth;
        for (int p = 0; p < pocetHracu; p++) {
            isSwing[p] =0;
            kolikJeSwingu[p]=N;
        }

//        Integer swingove2=pocetHracu*N;
Integer bool=1;
        Integer canBanzhaf=1;

for(Integer contr=0;contr<N;contr++)
{
    if(vyhryKoalici[contr]!=0 && vyhryKoalici[contr]!=1) {
        canBanzhaf=0;
    }
}
        for(Integer T=0;T<pocetHracu;T++) {
          for (Integer ith = 0; ith < N; ith++) {

              bool = 1;

//vyhryKoalici[ith];
//musis najit jth<N pro ktere koalice3[jth]=S-ith
              if ((koalice[ith][T] == 1) && (vyhryKoalici[ith]==1)) {
                  koalice3[ith][T] = 0;
                  for (jth = 0; jth < N; jth++) {
                      for (Integer k = 0; k < pocetHracu; k++)
                      {
                          //if (k != T && koalice[ith][k] != koalice3[jth][k]) {
                          if ((k != T) && (koalice[ith][k] != koalice3[jth][k])) {
                              bool = 0;
                           //   swingove2--;
                              kde+="\nk"+k.toString()+"T"+T.toString()+">";
                          }
                      }
                      kde+="\njth"+jth.toString()+"ith"+ith.toString()+"T"+T.toString();
//(vyhryKoalici[jth]
                     if ((vyhryKoalici[jth]==0) && (bool == 1)) {
                          isSwing[T]++;
                      }
                     bool=1;
                  }
                  koalice3[ith][T]=1;
                  bool=1;
              }

          }
        }



//kolikJeSwingu(Integer TmaSwing, Integer pocetHracu, Integer pocetKoalici,
//                                   Integer[][] koal, Integer[] koalicePriKtereJeSwing, float[] vyhryKoal)

            for (Integer ith = 0; ith < N; ith++) {
                for(Integer T=0;T<pocetHracu;T++) {
//isSwingBool(Integer kteraKoalice, Integer TmaSwing, Integer pocetHracu, Integer pocetKoalici,
//                               Integer[][] koal, Integer[] koalicePriKtereJeSwing, float[] vyhryKoal) {

                 //   kolikJeSwingu[T]+=kolikJeSwingu(T, pocetHracu, N,
                  //          koalice, koalice[ith],vyhryKoalici);


                    if (koalice[ith][T] == 1) {
                        koalice2[ith][T] = 0;
                        for (jth = 0; jth < N; jth++) {
                            bool = 1;
                            for (int k = 0; k < pocetHracu; k++) {
                                if (k != T && koalice[ith][k] != koalice2[jth][k]) {
                                    bool = 0;
                                }
                            }

                            int bool2=0;
                            koalice2[ith][T] = 1;

                            if (vyhryKoalici[ith] == 1 && vyhryKoalici[jth] == 0) {
                                for (int k = 0; k < pocetHracu; k++) {
                                    if (koalice[ith][k] != koalice2[jth][k]) {
                                        bool2++;
                                    }
                                }

                            //    if(bool2==1) {
                             //       isSwing[T]++;
                             //   }

                            }
                            koalice2[ith][T] = 1;
                            Integer t = 0;
                            for (int p = 0; p < pocetHracu; p++) {
                                t += koalice[ith][p];
                            }
                            // Integer[] isSwing=new Integer[pocetHracu];

                            if (bool == 1) {
                                shap[T] += (float) ((float) fact(t - 1) * fact(pocetHracu - t) / (float) (fact(pocetHracu)) * (float) (vyhryKoalici[ith] - vyhryKoalici[jth]));
                            }
                        }
                    }

            }
        }


 S+="here";
        String T2="";
        T2+="banzhaf";

        Integer swingove=0;
        Integer totWin=0;
        Integer totLos=0;




for(int p=0;p<pocetHracu;p++) {
    swingove+=isSwing[p];
}

        for(int i=0;i<N;i++) {
            if(vyhryKoalici[i]==1) {
                totWin++;
            }

            if(vyhryKoalici[i]==0) {
                totLos++;
            }
        }


String strPokus="";
String strPokusColWin="";
String strPokusColLos="";


if(canBanzhaf==1) {
    strPokus = "banzhaf ";
    strPokusColWin="coleman winning ";
    strPokusColLos="coleman loosing ";

} else {
    strPokus="banzhaf err ";
    strPokusColWin="coleman winning err ";
    strPokusColLos="coleman loosing err ";

}

float[] banzh=new float[pocetHracu];
float[] colemanWin=new float[pocetHracu];
float[] colemanLos=new float[pocetHracu];

for(int p=0;p<pocetHracu;p++)
{
    banzh[p]=(float) isSwing[p]/(float) swingove;
    colemanWin[p]=(float) isSwing[p]/(float) totWin;
    colemanLos[p]=(float) isSwing[p]/(float) totLos;
}


         String strPokus2="shap ";

        for(int i=0;i<pocetHracu;i++) {
         //   S+=(" "+String.valueOf(shap[i]));
            strPokus2+=String.format("%.2f ",shap[i]);
            strPokus+=String.format("%.2f ",banzh[i]);
            strPokusColWin+=String.format("%.2f ",colemanWin[i]);
            strPokusColLos+=String.format("%.2f ",colemanLos[i]);
        }


   // tv6.setText(strPokus2+"\n"+strPokus+"\nswing"+isSwing[0]+"swingPrvni:"+isSwing[1]+"\nH"+swingove);
        TextView tv6 = (TextView) findViewById(R.id.tvMarque);
   //     tv6.setSingleLine(true);
        tv6.setMarqueeRepeatLimit(-1);
        tv6.setEllipsize(TextUtils.TruncateAt.MARQUEE);
        tv6.setSelected(true);

        String SA;
if(isSA(vyhryKoalici)) {
    SA="";
}
else {
    SA="here superadditivity fails "+(int) K1+" "+K2+" "+K3;
}

       tv6.setText(strPokus2+"\n"+strPokus+"\n"+strPokusColWin+"\n"+strPokusColLos+"\n"+"number of winning "+totWin+"\n"+"number of loosing "+totLos+"\nis super additve "+isSA(vyhryKoalici)+"\n"+SA);


        TextView tv7 = (TextView) findViewById(R.id.tvMarque2);
        tv7.setSingleLine(true);
        tv7.setMarqueeRepeatLimit(-1);
        tv7.setEllipsize(TextUtils.TruncateAt.MARQUEE);
        tv7.setSelected(true);
//        tv7.setText("         * *            *          * *           *           *  *            *           ");

//        tv7.setText(Html.fromHtml("        * *            *          * *           <b><p style=color:yellow;>*</p></b>           *  *            *           "));

//        tv7.setText(Html.fromHtml("**<p style=color:green;>  *&nbsp;T*</p>\n<ul><li>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p style=color:green;>*</p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p style=color:red;>*</p>*  *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           </li></ul>"));

//        tv7.setText(Html.fromHtml("**<p style=color:green>  *&nbsp;T*</p>\n<ul><li>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p style=color:green;>*</p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p style=color:red;>*</p>*  *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           </li></ul>"));
        SpannableStringBuilder ssb = new SpannableStringBuilder();
        ssb.append(Html.fromHtml("**<p style=color:green>  *&nbsp;**</p>\n<ul><li>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p style=color:green;>*</p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p style=color:red;>*</p>*  *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           </li></ul>"));
        int blinkTextIndex = 6;
        ssb.setSpan(new FCS(tv7, new int[] {Color.RED, Color.YELLOW}), blinkTextIndex, blinkTextIndex + 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        tv7.setText(ssb);

      //  String html = "<html><body><p>Hello world</p></body></html>";
    //    String baseUrl = "https://example.com/";

//        WebView mWebView;
  //      mWebView.loadDataWithBaseURL(baseUrl, html, "text/html", null, baseUrl);

//tv6.setText("11bbbb"+"bDDDDDDDjjjjjjjjjjppppppppppppppDDbbbbbbbbbb");
//        TextView textView=(TextView)findViewById(R.id.text_test);
     /*   tv6.setEllipsize(TextUtils.TruncateAt.MARQUEE);
        tv6.setSingleLine(true);
        tv6.setMarqueeRepeatLimit(-1);
        tv6.setFocusableInTouchMode(true);
        tv6.setFocusable(true);

*/

    /*    TextView txt = new TextView(this);
        txt.setText("This is the infinite marquee");
        txt.setEllipsize(TextUtils.TruncateAt.MARQUEE);
        txt.setSingleLine(true);
        txt.setMarqueeRepeatLimit(-1);
        txt.setSelected(true);
      */

    }

    public void click4(View view) {
        //

        if (g) {

            linear = (EditText) findViewById(R.id.simpleEditText);
            if (N == 1) {
                linear.setText("1");
            }

            String a = linear.getText().toString();
            N = Integer.parseInt(a);
            N++;
            linear.setText(N.toString());


        }
    }
    public void click7(View view) {
        if (g) {

            //
            linear = (EditText) findViewById(R.id.simpleEditText);
            if (N == 0 || N == 1) {
                linear.setText("1");
            }

            String a = linear.getText().toString();
            N = Integer.parseInt(a);
            if (N > 1) N--;
            linear.setText(N.toString());


        }
    }

    public  String stf(String a,Integer l) {
        if(l==0) { return a; }
        l--;
        return stf("0"+a,l);

    }
    public void click2(View view) {
        if (g) {
            g = false;

            String col1;
            String col2;
            //  String playerChanged;

            TableLayout tl = (TableLayout) findViewById(R.id.tableLayout1);

            EditText editText = (EditText) findViewById(R.id.simpleEditText);


            TableRow row = new TableRow(this);
            TextView tv = new TextView(this);
            TextView c = new TextView(this);

            //EditText etUserInfoNewValue = (EditText)findViewById(R.id.simpleEditText);
            //  a = editText.getText().toString();

          //  tv.setId(202);


            tv.setText("This is text");
//
            tl.addView(row);

            row.addView(tv);

            int sf = toBinaryString(N - 1).length();
            for (int x = 0; x < N; x++) {
                //String.format("%010d",(
                String jl = toBinaryString(x);
                String jl2 = stf(jl, sf - jl.length());
//koal[x]=jl2;
                col1 = "(" + x + ")" + jl2;
                // col1 = "(" + x + ")"+Integer.toBinaryString(x);
                col2 = "1";

                //col3 = "(" + x + ") Column 3";
                //col4 = "(" + x + ") Column 4";

                TableRow newRow = new TableRow(this);

                TextView column1 = new TextView(this);
                TextView column2 = new TextView(this);
                EditText editText1 = new EditText(this);

                editText1.setId(330 + x);
                // String stringAnswer = editText1.getText().toString();

                TextView column3 = new TextView(this);
                // TextView column4 = new TextView(this);
                editText1.setText("0        ");
                column1.setText(col1);
                column1.setText(col1);
                column2.setText(col2);
                //column3.setText(col3);
                //column4.setText(col4);

                // column1.setText(stringAnswer);

                newRow.addView(column1);
                newRow.addView(editText1);


                newRow.addView(column3);
                // newRow.addView(column4);

                tl.addView(newRow, new TableLayout.LayoutParams());
            }

        }
    }

    }



class FCS extends ForegroundColorSpan implements TimeAnimator.TimeListener {

    private TextView tv;
    private int[] colors;
    private int color;
    TimeAnimator animator;
    ArgbEvaluator evaluator;

    public FCS(TextView tv, int[] colors) {
        super(colors[0]);
        this.tv = tv;
        this.colors = colors;
        animator = new TimeAnimator();
        animator.setTimeListener(this);
        evaluator = new ArgbEvaluator();
        animator.start();
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        ds.setColor(color);
    }

    @Override
    public void onTimeUpdate(TimeAnimator animation, long totalTime, long deltaTime) {
        float sin = (float) (Math.sin(Math.PI * totalTime / 400f));
        float fraction = sin * sin;
//            float fraction = (float) (-Math.cos(2*Math.PI * totalTime / 1000f) + 1) / 2f;
        color = (int) evaluator.evaluate(fraction, colors[0], colors[1]);
        tv.invalidate();
        if (totalTime < -1) {
            animator.end();
        }
    }

}


Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » ned 15. kvě 2022 14:39:27

Vse funguje :palec:


Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » pon 16. kvě 2022 15:37:42

Crusty, poradis mi prosimte jeste s fragmenty ?


Napovedy v Googu a knihach jsou zdlouhave a srozumitelnou odpoved jsem nenasel.

Chci mit tlacitko ktere prepne puvodni fragment na jiny.
Za tim ucelem jsem vytvoril zvlastni xmlko s nazvem
fragment_one.xml na ktery by se stisknutim nejakeho buttonu melo prepnout,
a do acitivity_main.xml jsem dal tento odstavec:

Kód: Vybrat vše

<fragment
    android:name="com.example.ExampleFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/example_fragment"
    tools:layout="@layout/fragment_one"
    />

Nyni aplikace pada uz pri spusteni. Co musim jeste pridat do MainActivity.java, je to tim, ze mi tam neco chybi,
nebo snad je neco spatne v tech dvou .xmlkach ? Co je treba doplnit/opravit aby to fungovalo ?

Dekuji predem


Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » pon 16. kvě 2022 18:11:47

Crusty, nakonec jsem si vytvoril podle sablony `tabbed Activity` ale nevim jak elegantne zahrnout ty dva soubory
MainActivity.java a main_activity.xml do tech novych dvou plus techto: ExampleInstrumentedTest.java PageViewModel.java

Poradis prosimte ?

Jde to pomoci `import Neco`
diky :facepalm:

Uživatelský avatar

Crusty
Robot
Příspěvky: 918
Registrován: ned 19. črc 2009 17:30:40
Reputace: 21
Typ mobilu / ROM: Redmi Note 9 Pro
Bydliště: Praha
Kontaktovat uživatele:

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od Crusty » pon 16. kvě 2022 22:20:09



Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » úte 17. kvě 2022 10:46:13

Takovych navodu jsem nasel plno, ale zadny srozumitelny. Vse co potrebuji je vlozit satrou MainActivity.java
do nove, kterou jsem zkopiroval nize. POtrebuji videt nejakou syntaxi typu

import MainActivity2.java
nebo podobne.

Kdyby slo o jedinou classu tak ji tam proste zkopiruji, ale toto jsou dva kompletni baliky
MainActivity.java a acitivity_main.xml, a ja nevim jak je tamm vlozim

Kód: Vybrat vše

package com.exampleC.tablelayout8;

import android.os.Bundle;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.tabs.TabLayout;

import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.app.AppCompatActivity;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import com.exampleC.tablelayout8.ui.main.SectionsPagerAdapter;
import com.exampleC.tablelayout8.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {

    private ActivityMainBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager());
        ViewPager viewPager = binding.viewPager;
        viewPager.setAdapter(sectionsPagerAdapter);
        TabLayout tabs = binding.tabs;
        tabs.setupWithViewPager(viewPager);
        FloatingActionButton fab = binding.fab;

        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }
}


Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » čtv 19. kvě 2022 12:00:10

Crusty, mam jeste jeden pro me slozity problem.

mam nasledujici 4 soubory, ktere jsem hodil na pastebin.
Chtel jsem abych mel v tom Activity.main tlacitko ktere se z activity_main.xml prepne do fragment_blank.xml,
a v fragment_blank.xml tlkacitko kterym se prepnu nazpet.
Umim to udelat pro retezce ale ne pro komplexni package s buttony a TextAreami.
Kdybys mi sem hodil reseni a oznacil ################# zmeny oproti vychozimu souboru budu jen rad.

[1]activity_main.xml
[2]MainActivity.java
[3]fragment_blank.xml
[4]BlankFragment.java


activity_main.xml https://pastebin.com/PM4zVWYH

fragment_blank.xml https://pastebin.com/TNBmhX0G

BlankFragment.java https://pastebin.com/GCBcAu3D

MainActivity.java https://pastebin.com/hXEkf84B


Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » pát 20. kvě 2022 14:45:54

Takze sem si naimportoval puvodni project jako modul do noveho, ale nevim, jak ho pouzit.

Napriklad jak mam zaridit, aby se ve fragment1.xml objevovalo main_activity.xml z puvodniho a jak zavolam funkce z puvodniho
naimportvaneho v novem projektu.

Kód: Vybrat vše

include ':app'
rootProject.name = "fragments"
include ':app8'

Uživatelský avatar

Crusty
Robot
Příspěvky: 918
Registrován: ned 19. črc 2009 17:30:40
Reputace: 21
Typ mobilu / ROM: Redmi Note 9 Pro
Bydliště: Praha
Kontaktovat uživatele:

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od Crusty » pát 20. kvě 2022 19:09:50

nemam ted moc cas, tak budes muset kolem toho neco nastudovat
napr
https://www.vogella.com/tutorials/Andro ... ticle.html

v zakladu, bud mas vic Activity, ktere se pak spousti pres startActivity(), nebo v jedne Activity chces vic Fragmentu, coz je pres
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();


Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » sob 21. kvě 2022 20:07:18

Crusty Tvoje rada rozhodnout se, zda mit vice Activit ci vice Fragmentu byla naprosto presna.
Mam ted funkcni apku jak jsem chtel s tou drobnou chybou, ze obcas crashne.

Jak zjistim proc presne ?

A jeste chci do xml1 vlozit obrazek pdf ci jpg, jak toho docilim ?

Mam tam toto, ale obrazek se nezorazuje :facepalm:
Přílohy
111.jpg
111.jpg (443.61 KiB) Zobrazeno 1406 x


Autor tohoto vlákna
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Reputace: 0
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 » stř 25. kvě 2022 13:07:06

Crusty appka je hotova. Mam ale potiz:
toto negeneruje
"generate signed bundle/apk" ==release== ale jen debug a intermediate.
Jak to.
:hehe:
Přílohy
111.jpg
111.jpg (88.32 KiB) Zobrazeno 325 x



Odpovědět

Zpět na „Rady a tipy pro vyvoj“

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host