Saya telah mendesain tata letak yang sederhana. Saya telah menyelesaikan desain tanpa animasi, tetapi sekarang saya ingin menambahkan animasi ketika acara klik tampilan teks dan saya tidak tahu bagaimana menggunakannya. Apakah desain xml saya terlihat bagus atau tidak? Setiap saran akan dihargai.
XML saya
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:longClickable="false"
android:orientation="vertical"
android:weightSum="16" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:background="#00DDA0"
android:layout_weight="3" >
</LinearLayout>
<TextView
android:id="@+id/Information1"
android:layout_width="match_parent"
android:layout_height="1dp"
android:text="Child Information"
android:background="#0390BE"
android:layout_weight="0.75"
android:textColor="#FFFFFF"
android:layout_gravity="center|fill_horizontal"/>
<LinearLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="8.5"
android:background="#BBBBBB"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="TextView" />
</LinearLayout>
<TextView
android:id="@+id/Information2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="Parent Information"
android:background="#0390BE"
android:layout_weight="0.75"
android:textColor="#FFFFFF"
android:layout_gravity="center|fill_horizontal"/>
<LinearLayout
android:id="@+id/layout2"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:background="#BBBBBB"
android:layout_weight="8.5" >
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="TextView" />
</LinearLayout>
<TextView
android:id="@+id/Information3"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="Siblings"
android:background="#0390BE"
android:layout_weight="0.75"
android:textColor="#FFFFFF"
android:layout_gravity="center|fill_horizontal"/>
<LinearLayout
android:id="@+id/layout3"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:background="#BBBBBB"
android:layout_weight="8.5" >
<TextView
android:id="@+id/textView3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="TextView" />
</LinearLayout>
<TextView
android:id="@+id/Information4"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="Teacher Information"
android:background="#0390BE"
android:layout_weight="0.75"
android:textColor="#FFFFFF"
android:layout_gravity="center|fill_horizontal"/>
<LinearLayout
android:id="@+id/layout4"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:background="#BBBBBB"
android:layout_weight="8.5" >
<TextView
android:id="@+id/textView4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="TextView" />
</LinearLayout>
<TextView
android:id="@+id/Information5"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="Grade Information"
android:background="#0390BE"
android:layout_weight="0.75"
android:textColor="#FFFFFF"
android:layout_gravity="center|fill_horizontal"/>
<LinearLayout
android:id="@+id/layout5"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:background="#BBBBBB"
android:layout_weight="8.5" >
<TextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="TextView" />
</LinearLayout>
<TextView
android:id="@+id/Information6"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="Health Information"
android:background="#0390BE"
android:layout_weight="0.75"
android:textColor="#FFFFFF"
android:layout_gravity="center|fill_horizontal"/>
<LinearLayout
android:id="@+id/layout6"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:background="#BBBBBB"
android:layout_weight="8.5" >
<TextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="TextView"
android:layout_weight="8.5" />
</LinearLayout>
</LinearLayout>
Java saya
public class Certify_Info extends Activity {
private static TextView tv2,tv3,tv5,tv6,tv4,tv1;
private static LinearLayout l1,l2,l3,l4,l5,l6;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_certify__info);
tv1=(TextView) findViewById(R.id.Information1);
tv2=(TextView) findViewById(R.id.Information2);
tv3=(TextView) findViewById(R.id.Information3);
tv4=(TextView) findViewById(R.id.Information4);
tv5=(TextView) findViewById(R.id.Information5);
tv6=(TextView) findViewById(R.id.Information6);
l1=(LinearLayout) findViewById(R.id.layout1);
l2=(LinearLayout) findViewById(R.id.layout2);
l3=(LinearLayout) findViewById(R.id.layout3);
l4=(LinearLayout) findViewById(R.id.layout4);
l5=(LinearLayout) findViewById(R.id.layout5);
l6=(LinearLayout) findViewById(R.id.layout6);
l2.setVisibility(View.GONE);
l3.setVisibility(View.GONE);
l4.setVisibility(View.GONE);
l5.setVisibility(View.GONE);
l6.setVisibility(View.GONE);
tv1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
l2.setVisibility(View.GONE);
l3.setVisibility(View.GONE);
l4.setVisibility(View.GONE);
l5.setVisibility(View.GONE);
l6.setVisibility(View.GONE);
l1.setVisibility(View.VISIBLE);
}
});
tv2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
l1.setVisibility(View.GONE);
l3.setVisibility(View.GONE);
l4.setVisibility(View.GONE);
l5.setVisibility(View.GONE);
l6.setVisibility(View.GONE);
l2.setVisibility(View.VISIBLE);
}
});
tv3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
l1.setVisibility(View.GONE);
l2.setVisibility(View.GONE);
l4.setVisibility(View.GONE);
l5.setVisibility(View.GONE);
l6.setVisibility(View.GONE);
l3.setVisibility(View.VISIBLE);
}
});
tv4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
l1.setVisibility(View.GONE);
l2.setVisibility(View.GONE);
l3.setVisibility(View.GONE);
l4.setVisibility(View.GONE);
l5.setVisibility(View.GONE);
l6.setVisibility(View.GONE);
l4.setVisibility(View.VISIBLE);
}
});
tv5.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
l1.setVisibility(View.GONE);
l2.setVisibility(View.GONE);
l3.setVisibility(View.GONE);
l4.setVisibility(View.GONE);
l6.setVisibility(View.GONE);
l5.setVisibility(View.VISIBLE);
}
});
tv6.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
l1.setVisibility(View.GONE);
l2.setVisibility(View.GONE);
l3.setVisibility(View.GONE);
l4.setVisibility(View.GONE);
l5.setVisibility(View.GONE);
l6.setVisibility(View.VISIBLE);
}
});
}
}
view.clearAnimation();
view.setVisibility(View.GONE);
jika tidak, tata letak akan tetap tidak terlihat dan tidak hilang.ViewCompat.animate()
yang merupakan bagian dari perpustakaan dukungan dan menggunakan Animator pada versi yang lebih baru dan Lihat Animasi pada Android 3.0 dan di bawahnya.ViewCompat.animate()
.Cara termudah untuk menghidupkan
Visibility
perubahan adalah penggunaanTransition API
yang tersedia dalam paket dukungan (androidx). Cukup panggilTransitionManager.beginDelayedTransition
metode lalu ubah visibilitas tampilan. Ada beberapa transisi standar sepertiFade
,Slide
.Di mana
parent
indukViewGroup
tampilan animasi. Hasil:Inilah hasil dengan
Slide
transisi:Sangat mudah untuk menulis transisi khusus jika Anda memerlukan sesuatu yang berbeda. Berikut adalah contoh
CircularRevealTransition
yang saya tulis dalam jawaban lain . Ini menunjukkan dan menyembunyikan tampilan dengan animasi CircularReveal.android:animateLayoutChanges="true"
Opsi melakukan hal yang sama, hanya menggunakan AutoTransition sebagai transisi.sumber
beginDelayedTransition
?Silakan periksa tautan ini . Yang akan memungkinkan animasi seperti animasi L2R, R2L, T2B, B2T.
Kode ini menunjukkan animasi dari kiri ke kanan
jika Anda ingin melakukannya dari R2L kemudian gunakan
untuk atas ke bawah sebagai
dan sebaliknya ...
sumber
Coba tambahkan baris ini ke tata letak induk xml
Tata letak Anda akan terlihat seperti ini
sumber
Berdasarkan jawaban dari @Xaver Kapeller, saya menemukan cara untuk membuat animasi gulir ketika tampilan baru muncul di layar (dan juga animasi untuk menyembunyikannya).
Itu pergi dari negara ini:
untuk
dan sebaliknya.
Jadi, ketika pengguna mengklik tombol pertama, elemen "Tombol 1", "Tombol 2", "Tombol 3" dan "Tombol 4" akan muncul menggunakan animasi fade dan elemen "Tombol Terakhir" akan bergerak ke bawah sampai akhir. Ketinggian tata letak akan berubah juga, memungkinkan penggunaan tampilan gulir dengan benar.
Ini adalah kode untuk menunjukkan elemen dengan animasi:
dan ini adalah kode untuk menyembunyikan elemen animasi:
Perhatikan ada hack sederhana pada metode untuk menyembunyikan animasi. Pada pendengar animasi mHiddenLinearLayout, saya harus menghapus pendengar itu sendiri dengan menggunakan:
Ini karena begitu pendengar animasi dilampirkan ke tampilan, saat berikutnya setiap animasi dieksekusi dalam tampilan ini, pendengar akan dieksekusi juga. Ini mungkin bug di pendengar animasi.
Kode sumber proyek ini ada di GitHub: https://github.com/jiahaoliuliu/ViewsAnimated
Selamat coding!
Pembaruan : Untuk setiap pendengar yang dilampirkan pada tampilan, itu harus dihapus setelah animasi berakhir. Ini dilakukan dengan menggunakan
sumber
view.animate().setListener(null);
pernyataan menyelamatkan hari saya. Ini jelas merupakan bug.Saya dapat menampilkan / menyembunyikan menu dengan cara ini:
MenuView.java (extend FrameLayout)
Sumber
sumber