چگونه یک view را بوسیله یک اسلاید متحرک آشکار و پنهان کنیم؟
یک مثال براتون در پایین آوردم
res/layout/activity_main.xml
<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent">
<Button
android:id = "@+id/button"
android:layout_centerHorizontal = "true"
android:layout_marginTop = "100dp"
android:layout_width = "150dp"
android:text = "Click"
android:layout_height = "wrap_content"/>
<LinearLayout
android:id = "@+id/view"
android:background = "#a6e1aa"
android:orientation = "vertical"
android:layout_alignParentBottom = "true"
android:layout_width = "match_parent"
android:layout_margin = "20dp"
android:layout_height = "200dp">
<EditText
android:hint = "User name"
android:layout_width = "match_parent"
android:layout_height = "wrap_content" />
<EditText
android:hint = "Password"
android:layout_width = "match_parent"
android:layout_height = "wrap_content" />
</LinearLayout>
</RelativeLayout>
در کد بالا یک Button برای انجام دادن عمل نمایش و پنهان کردن view که همان linear layout هستش رو ایجاد کردم
و درون linear layout دوتا EditText قرار دادم
src/MainActivity.java
package com.hamyarandroid.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.LinearLayout;
public class MainActivity extends AppCompatActivity {
boolean opened;
LinearLayout view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view = findViewById(R.id.view);
view.setVisibility(View.INVISIBLE);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!opened){
view.setVisibility(View.VISIBLE);
TranslateAnimation animate = new TranslateAnimation(
0,
0,
view.getHeight(),
0);
animate.setDuration(500);
animate.setFillAfter(true);
view.startAnimation(animate);
} else {
view.setVisibility(View.INVISIBLE);
TranslateAnimation animate = new TranslateAnimation(
0,
0,
0,
view.getHeight());
animate.setDuration(500);
animate.setFillAfter(true);
view.startAnimation(animate);
}
opened = !opened;
}
});
}
}
در کد بالا ، من linear layout را با استفاده از translate animation به نمایش در میارم و مخفی میکنم
برای نمایش View، از کد زیر استفاده کردم
TranslateAnimation animate = new TranslateAnimation(
0,
0,
view.getHeight(),
0);
animate.setDuration(500);
animate.setFillAfter(true);
view.startAnimation(animate);
To hide the view, use the following code -
TranslateAnimation animate = new TranslateAnimation(
0,
0,
0,
view.getHeight());
animate.setDuration(500);
animate.setFillAfter(true);
view.startAnimation(animate);
خب بعد از اجرا کردن برنامه شما ابتدا تصویر زیر را می بینید
بعد ازکلیک زدن View به حالت مخفی در می آید مانند تصویر زیر
همانطور که میبینید ویو مخفی شد و باز برای آشکار شدن روی دکمه کلیک کنید