Change position!
brittle123 opened this issue · 3 comments
Hello Sir!,.. i've used your simple approach but it starts konfetti from top left corner. i want it to display from top not only from top corner.Here are my both xml and java code. don't know why it's showing me like this. Please help me ASAP!
Thanks and Regards.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container"
android:background="@color/tab_text_color"
tools:context=".CongratulateActivity">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<nl.dionsegijn.konfetti.KonfettiView
android:id="@+id/viewKonfetti"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/trophieImg"
android:src="@drawable/trophie"
android:layout_centerHorizontal="true"
android:layout_above="@+id/nice_text"
android:layout_marginBottom="20dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/nice_text"
android:text="Nice you've done it!"
android:textSize="25sp"
android:layout_centerHorizontal="true"
android:layout_above="@+id/result_RL"
android:textColor="@color/white"
android:fontFamily="@font/lato_regular"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/result_RL"
android:layout_centerInParent="true"
android:layout_margin="50dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/exe_RL"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/total_exe"
android:text="16"
android:textColor="@color/white"
android:textSize="25sp"
android:fontFamily="@font/lato_bold"
android:layout_gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Exercises"
android:textColor="@color/white"
android:textSize="16sp"
android:layout_marginTop="10dp"
android:layout_gravity="center"
android:fontFamily="@font/lato_bold"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/dur_RL"
android:orientation="vertical"
android:layout_alignParentRight="true"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/total_dur"
android:text="00:10"
android:textColor="@color/white"
android:textSize="25sp"
android:fontFamily="@font/lato_bold"
android:layout_gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Duration"
android:textColor="@color/white"
android:textSize="16sp"
android:layout_marginTop="10dp"
android:layout_gravity="center"
android:fontFamily="@font/lato_bold"/>
</LinearLayout>
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:id="@+id/doitadain"
android:textSize="20sp"
android:text="DO IT AGAIN"
android:fontFamily="@font/lato_regular"
android:layout_alignParentLeft="true"
android:layout_below="@+id/result_RL"
android:layout_marginLeft="16dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/next"
android:textColor="@color/white"
android:textSize="20sp"
android:text="NEXT"
android:fontFamily="@font/lato_regular"
android:layout_centerHorizontal="true"
android:layout_below="@+id/result_RL"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/share"
android:textColor="@color/white"
android:textSize="20sp"
android:text="SHARE"
android:fontFamily="@font/lato_regular"
android:layout_alignParentRight="true"
android:layout_below="@+id/result_RL"
android:layout_marginRight="16dp"
/>
</RelativeLayout>
public class CongratulateActivity extends AppCompatActivity {
TextView total_exe,total_dur;
String GetTime;
int get_exercise;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_congratulate);
Window window = this.getWindow();
// clear FLAG_TRANSLUCENT_STATUS flag:
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// finally change the color
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.setStatusBarColor(ContextCompat.getColor(this, R.color.transparent));
}
Toolbar mToolbar=findViewById(R.id.toolbar);
mToolbar.setBackgroundColor(getResources().getColor(R.color.tab_text_color));
setSupportActionBar(mToolbar);
// getSupportActionBar().setDisplayShowTitleEnabled(false);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setHomeAsUpIndicator(R.drawable.ic_back);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);
}
final KonfettiView konfettiView = findViewById(R.id.viewKonfetti);
konfettiView.build()
.addColors(Color.YELLOW, Color.GREEN, Color.MAGENTA)
.setDirection(0.0, 359.0)
.setSpeed(1f, 5f)
.setFadeOutEnabled(true)
.setTimeToLive(2000L)
.addShapes(Shape.Square.INSTANCE, Shape.Circle.INSTANCE)
.addSizes(new Size(12, 5f))
.setPosition(-50f, konfettiView.getWidth() + 50f, -50f, -50f)
.streamFor(300, 3000L);
total_exe=findViewById(R.id.total_exe);
total_dur=findViewById(R.id.total_dur);
GetTime = getIntent().getStringExtra("duration");
get_exercise = getIntent().getIntExtra("size", 8);
total_exe.setText(String.valueOf(get_exercise));
total_dur.setText(String.valueOf(GetTime));
}
}
SceenShot
Hi @brittle123,
This issue is a duplicate of:
When starting Konfetti make sure the layout is properly initialized. This can be done by registering a GlobalLayoutListener on the ViewTreeObserver for example.
Thanks but using postdelay it works for me.
The following part of the code:
final KonfettiView konfettiView = findViewById(R.id.viewKonfetti);
konfettiView.build()
.addColors(Color.YELLOW, Color.GREEN, Color.MAGENTA)
.setDirection(0.0, 359.0)
.setSpeed(1f, 5f)
.setFadeOutEnabled(true)
.setTimeToLive(2000L)
.addShapes(Shape.Square.INSTANCE, Shape.Circle.INSTANCE)
.addSizes(new Size(12, 5f))
.setPosition(-50f, konfettiView.getWidth() + 50f, -50f, -50f)
.streamFor(300, 3000L);
Needs to be executed when the layout is fully drawn. There are different ways to doing this. For example with an OnGlobalLayoutListener like here: https://stackoverflow.com/a/14298483
Haven't tested it but that would become something like:
final KonfettiView konfettiView = findViewById(R.id.viewKonfetti);
konfettiView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
konfettiView.build()
.addColors(Color.YELLOW, Color.GREEN, Color.MAGENTA)
.setDirection(0.0, 359.0)
.setSpeed(1f, 5f)
.setFadeOutEnabled(true)
.setTimeToLive(2000L)
.addShapes(Shape.Square.INSTANCE, Shape.Circle.INSTANCE)
.addSizes(new Size(12, 5f))
.setPosition(-50f, konfettiView.getWidth() + 50f, -50f, -50f)
.streamFor(300, 3000L);
}
});