Rady a tipy pro vyvojpotize s vyvojem aplikace, uzivatelsky vstup

Moderátoři: mArtinko5MB, mArtinko5MB

Uživatelský avatar
Crusty
Robot
Příspěvky: 938
Registrován: ned 19. črc 2009 17:30:40
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 »

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
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

Kdybys mi nasel jednoduchy example code pro MainActivity.java tak bys byl nejlepsi :clap:
Uživatelský avatar
Crusty
Robot
Příspěvky: 938
Registrován: ned 19. črc 2009 17:30:40
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 »

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

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

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: 938
Registrován: ned 19. črc 2009 17:30:40
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 »

tak muzes zkusit TextView ... nastavit mu font, ktery tyto pismena umi a pak by to asi jit melo
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

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: 938
Registrován: ned 19. črc 2009 17:30:40
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 »

nevim co znamena $\mu_i$
font nastavis takto
https://stackoverflow.com/questions/275 ... oid-studio
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

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: 938
Registrován: ned 19. črc 2009 17:30:40
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 »

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

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

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 8029 x
Uživatelský avatar
Crusty
Robot
Příspěvky: 938
Registrován: ned 19. črc 2009 17:30:40
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 »

pamatuje, mozna jsi jen nedal Save? Nevim jak jsi postupoval
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

Save jsem urcite dal, jinak bych se neptal.
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

Pri sejvnuti se tam objevuje takovato chybova hlaska:
Přílohy
111.jpg
111.jpg (81.92 KiB) Zobrazeno 8015 x
Uživatelský avatar
Crusty
Robot
Příspěvky: 938
Registrován: ned 19. črc 2009 17:30:40
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 »

tak mozna maj nejakou docasnou chybu, vypadek, zkus pozdeji
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

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();
        }
    }

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

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

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

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

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
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

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: 938
Registrován: ned 19. črc 2009 17:30:40
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 »

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

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

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();
            }
        });
    }
}
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

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
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

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: 938
Registrován: ned 19. črc 2009 17:30:40
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 »

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();
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

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 6468 x
max2
Stálý androiďák
Příspěvky: 55
Registrován: čtv 17. úno 2022 18:15:35
Typ mobilu / ROM: flizp z 3 samsung

Re: potize s vyvojem aplikace, uzivatelsky vstup

Příspěvek od max2 »

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 5387 x
Odpovědět

Zpět na „Rady a tipy pro vyvoj“