Giter Club home page Giter Club logo

tournamentbrackets's Introduction

TournamentBracketLib

A library to generate tournament brackets with smooth transition and animations.

Find the Library repository here : https://github.com/Emil333/TournamentBracketLib

Screenrecorder-2021-06-19-21-12-54-701.mp4

Use Cases of TournamentBracketLib

  • Include a layout for tournament brackets in your project
  • provides customisation options for background color, bracket color and text colors

Find this project useful? ❤️

  • support it by providing a ⭐️ on the upper right of this page.

Requirement

  • TournamentBracketLib can be included in Android version 7 (Nougat) and above

Using TournamentBracket in your application

  • Add this to your project level build.gradle

    allprojects {
     	repositories {
     		...
     		maven { url 'https://jitpack.io' }
     	}
     }
    
  • Add the dependency

    dependencies {
              implementation 'com.github.emil-ep:TournamentBracketLib:1.0.4'
      }
    
  • Add a BracketsView component in your XML file

    <com.ventura.bracketslib.BracketsView
          android:id="@+id/bracket_view"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          app:bracketBackgroundColor="#1c222e"
          app:bracketColor="#262e40"
          app:bracketTextColor="#fff" />
          
    
  • Initialise your BracketsView

    BracketsView bracketsView = findViewById(R.id.bracket_view);
    
    
  • Provide the necessary data to populate the Brackets

    • Breaking down the Attributes
      • CompetitorData corresponds to an object with the necessary team/player data. Takes in name and score as parameters.

         CompetitorData brazilSemiFinal = new CompetitorData("Brazil", "3");
         CompetitorData englandSemiFinal = new CompetitorData("England", "1");
         CompetitorData argentinaSemiFinal = new CompetitorData("Argentina", "3");
         CompetitorData russiaSemiFinal = new CompetitorData("Russia", "2");
         CompetitorData brazilFinal = new CompetitorData("Brazil", "4");
         CompetitorData argentinaFinal = new CompetitorData("Argentina", "2");
        
        
      • MatchData corresponds to an object with the necessary competitor informations for a particular Match. Takes in two CompetitorData as parameters(Team1, Team2).

          MatchData match1SemiFinal = new MatchData(brazilSemiFinal, englandSemiFinal);
          MatchData match2SemiFinal = new MatchData(argentinaSemiFinal, russiaSemiFinal);
          MatchData match3Final = new MatchData(brazilFinal, argentinaFinal);
        
      • ColomnData corresponds to list of matches that needs to be displayed in a section (Semi final, final etc). Takes in a list of MatchData as parameter.

          ColomnData semiFinalColomn = new ColomnData(Arrays.asList(match1SemiFinal, match2SemiFinal));
          ColomnData finalColomn = new ColomnData(Arrays.asList(match3Final));
        
  • call the setBracketsData(List<ColomnData> sectionList) methods from bracketsView

    bracketsView.setBracketsData(Arrays.asList(semiFinalColomn, finalColomn));
    
    
  • All set 👏🏻

tournamentbrackets's People

Contributors

emil-ep avatar emilpradeep avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

tournamentbrackets's Issues

Error inflating class com.ventura.bracketslib.BracketsView

I followed the template code provided in the readme file and added the xml in a fragment. Apparently the code works just fine when I run it in an activity but when I run it in a fragment the view com.ventura.bracketslib.BracketsView does not inflate.
@Emil333

`public class FragmentTournamentTree extends Fragment {

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

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view= inflater.inflate(R.layout.fragment_tournament_tree, container, false);

    BracketsView bracketsView = view.findViewById(R.id.bracket_view);

    CompetitorData player1 = new CompetitorData("Player 1", "3");
    CompetitorData player2 = new CompetitorData("Player 2", "1");
    CompetitorData player3 = new CompetitorData("Player 3", "3");
    CompetitorData player4 = new CompetitorData("Player 4", "2");
    CompetitorData player5 = new CompetitorData("Player 5", "4");
    CompetitorData player6 = new CompetitorData("Player 6", "2");
    CompetitorData player7 = new CompetitorData("Player 7", "2");
    CompetitorData player8 = new CompetitorData("Player 8", "2");
    CompetitorData player9 = new CompetitorData("Player 9", "2");
    CompetitorData player10= new CompetitorData("Player 10", "2");


    MatchData matchQuarterFinal1 = new MatchData(player1,player2);
    MatchData matchQuarterFinal2 = new MatchData(player3,player4);
    MatchData matchQuarterFinal3 = new MatchData(player5,player6);
    MatchData matchQuarterFinal4 = new MatchData(player7,player8);
    MatchData match1SemiFinal = new MatchData(player2,player4);
    MatchData match2SemiFinal = new MatchData(player5,player7);
    MatchData match3Final = new MatchData(player2,player7);

    ColomnData quarterFinalColomn = new ColomnData(Arrays.asList(matchQuarterFinal1,matchQuarterFinal2,matchQuarterFinal3,matchQuarterFinal4));
    ColomnData semiFinalColomn = new ColomnData(Arrays.asList(match1SemiFinal, match2SemiFinal));
    ColomnData finalColomn = new ColomnData(Arrays.asList(match3Final));

    bracketsView.setBracketsData(Arrays.asList(quarterFinalColomn,semiFinalColomn, finalColomn));
    return view;
}

}`

Can't start in fragmentet

Hello,

I'm trying to use your library following the README provided on your GitHub profile, but unfortunately, it's not working for me. I have also tried using the example you provided, but I still can't get it to work.

Additionally, I believe the steps to implement the library may be deprecated because I haven't been able to get it to work by following the first two steps. Could you please provide some assistance on how I can get the library to work properly?

Thank you for your time and help.

Return this error:

FATAL EXCEPTION: main
                                                                                                    Process: com.example.pi_movil, PID: 6094
                                                                                                    java.lang.IllegalStateException: Fragment zzd{cd94dc4} (80a63a66-e7a0-40a9-9da6-04ac29f928bd tag=SupportLifecycleFragmentImpl) does not have a view
                                                                                                    	at androidx.fragment.app.Fragment$4.onFindViewById(Fragment.java:2901)
                                                                                                    	at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:504)
                                                                                                    	at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
                                                                                                    	at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
                                                                                                    	at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
                                                                                                    	at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
                                                                                                    	at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524)
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:942)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:201)
                                                                                                    	at android.os.Looper.loop(Looper.java:288)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7872)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

XML Code:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".DatosTorneoRondasFragment">

    <com.ventura.bracketslib.BracketsView
        android:id="@+id/bracket"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:bracketBackgroundColor="#1c222e"
        app:bracketColor="#262e40"
        app:bracketTextColor="#fff" />

</androidx.constraintlayout.widget.ConstraintLayout>

Java code:

package com.example.pi_movil;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.ventura.bracketslib.BracketsView;
import com.ventura.bracketslib.model.ColomnData;
import com.ventura.bracketslib.model.CompetitorData;
import com.ventura.bracketslib.model.MatchData;

import java.util.Arrays;

public class DatosTorneoRondasFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_datos_torneo_rondas, container, false);

        BracketsView bracketsView = view.findViewById(R.id.bracket);

        CompetitorData brazilSemiFinal = new CompetitorData("Brazil", "3");
        CompetitorData englandSemiFinal = new CompetitorData("England", "1");
        CompetitorData argentinaSemiFinal = new CompetitorData("Argentina", "3");
        CompetitorData russiaSemiFinal = new CompetitorData("Russia", "2");
        CompetitorData brazilFinal = new CompetitorData("Brazil", "4");
        CompetitorData argentinaFinal = new CompetitorData("Argentina", "2");

        MatchData match1SemiFinal = new MatchData(brazilSemiFinal, englandSemiFinal);
        MatchData match2SemiFinal = new MatchData(argentinaSemiFinal, russiaSemiFinal);
        MatchData match3Final = new MatchData(brazilFinal, argentinaFinal);

        ColomnData semiFinalColomn = new ColomnData(Arrays.asList(match1SemiFinal, match2SemiFinal));
        ColomnData finalColomn = new ColomnData(Arrays.asList(match3Final));

        bracketsView.setBracketsData(Arrays.asList(semiFinalColomn, finalColomn));

        return view;
    }
}

Caller:

public class InformacionTorneoFragment extends Fragment {

    TabLayout tabLayout;
    ViewPager viewPager;

    Torneo actual;

    public InformacionTorneoFragment(Torneo t) {
        this.actual = t;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_informacion_torneo, container, false);

        addFragment(view);


        return view;
    }

    private void addFragment(View view){

        tabLayout = view.findViewById(R.id.tabLayout);
        viewPager = view.findViewById(R.id.viewPager);
        ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());
        //AÑADIR FRAGMENTOS
        adapter.addFragment(new DatosTorneoFragment(actual),"DATOS");
        adapter.addFragment(new DatosTorneoEquiposFragment(actual),"EQUIPOS");
        adapter.addFragment(new DatosTorneoRondasFragment(),"RONDAS");
        viewPager.setAdapter(adapter);
        tabLayout.setupWithViewPager(viewPager);

    }
}

Hi am still getting a crash on adding bracket view to the fragment, i have just added in the layout and the app crashes as soon as the fragment is called.I have added the log for reference and i am using the updated version. Thanks in advance,

                                                                                                Process: com.halil.ozel.unsplashexample, PID: 18477
                                                                                                android.view.InflateException: Binary XML file line #19 in com.halil.ozel.unsplashexample:layout/fragment_brackets: Binary XML file line #19 in com.halil.ozel.unsplashexample:layout/fragment_brackets: Error inflating class com.ventura.bracketslib.BracketsView
                                                                                                Caused by: android.view.InflateException: Binary XML file line #19 in com.halil.ozel.unsplashexample:layout/fragment_brackets: Error inflating class com.ventura.bracketslib.BracketsView
                                                                                                Caused by: java.lang.reflect.InvocationTargetException
                                                                                                	at java.lang.reflect.Constructor.newInstance0(Native Method)
                                                                                                	at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
                                                                                                	at android.view.LayoutInflater.createView(LayoutInflater.java:858)
                                                                                                	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1010)
                                                                                                	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965)
                                                                                                	at android.view.LayoutInflater.rInflate(LayoutInflater.java:1127)
                                                                                                	at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)
                                                                                                	at android.view.LayoutInflater.inflate(LayoutInflater.java:686)
                                                                                                	at android.view.LayoutInflater.inflate(LayoutInflater.java:538)
                                                                                                	at com.halil.ozel.unsplashexample.databinding.FragmentBracketsBinding.inflate(FragmentBracketsBinding.java:45)
                                                                                                	at com.halil.ozel.unsplashexample.databinding.FragmentBracketsBinding.inflate(FragmentBracketsBinding.java:39)
                                                                                                	at com.halil.ozel.unsplashexample.ui.fragment.brackets.BracketsFragment.onCreateView(BracketsFragment.kt:32)
                                                                                                	at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3104)
                                                                                                	at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:524)
                                                                                                	at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
                                                                                                	at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1899)
                                                                                                	at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1817)
                                                                                                	at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1760)
                                                                                                	at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:547)
                                                                                                	at android.os.Handler.handleCallback(Handler.java:938)
                                                                                                	at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                	at android.os.Looper.loopOnce(Looper.java:226)
                                                                                                	at android.os.Looper.loop(Looper.java:313)
                                                                                                	at android.app.ActivityThread.main(ActivityThread.java:8663)
                                                                                                	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
                                                                                                	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
                                                                                                Caused by: java.lang.ClassCastException: dagger.hilt.android.internal.managers.ViewComponentManager$FragmentContextWrapper cannot be cast to androidx.fragment.app.FragmentActivity
                                                                                                	at com.ventura.bracketslib.BracketsView.<init>(BracketsView.java:45)
                                                                                                	at java.lang.reflect.Constructor.newInstance0(Native Method) 
                                                                                                	at java.lang.reflect.Constructor.newInstance(Constructor.java:343) 
                                                                                                	at android.view.LayoutInflater.createView(LayoutInflater.java:858) 
                                                                                                	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1010) 
                                                                                                	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965) 
                                                                                                	at android.view.LayoutInflater.rInflate(LayoutInflater.java:1127) 
                                                                                                	at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088) 
                                                                                                	at android.view.LayoutInflater.inflate(LayoutInflater.java:686) 
                                                                                                	at android.view.LayoutInflater.inflate(LayoutInflater.java:538) 
                                                                                                	at com.halil.ozel.unsplashexample.databinding.FragmentBracketsBinding.inflate(FragmentBracketsBinding.java:45) 
                                                                                                	at com.halil.ozel.unsplashexample.databinding.FragmentBracketsBinding.inflate(FragmentBracketsBinding.java:39) 
                                                                                                	at com.halil.ozel.unsplashexample.ui.fragment.brackets.BracketsFragment.onCreateView(BracketsFragment.kt:32) 
                                                                                                	at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3104) 
                                                                                                	at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:524) 
                                                                                                	at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261) 
                                                                                                	at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1899) 
                                                                                                	at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1817) 
                                                                                                	at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1760) 
                                                                                                	at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:547) 
                                                                                                	at android.os.Handler.handleCallback(Handler.java:938) 
                                                                                                	at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                                                	at android.os.Looper.loopOnce(Looper.java:226) 
                                                                                                	at android.os.Looper.loop(Looper.java:313) 
                                                                                                	at android.app.ActivityThread.main(ActivityThread.java:8663) 
                                                                                                	at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) 
                                                                                                	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.