मेरे पास दृश्य से छिपा हुआ एक लेआउट है। एक बटन पर क्लिक करने के बाद मैं चाहता हूं कि नीचे से पूरी स्क्रीन की सामग्री को ऊपर की ओर धकेलें, व्हाट्सएप चैट स्क्रीन में इमोटिकॉन्स पैनल को दिखाता है।
मैंने स्लाइडिंग ड्रावर देखा है, जो मेरे लिए काम नहीं करता है। इसे एक हैंडल के रूप में एक छवि की आवश्यकता होती है जिसे स्क्रीन के केंद्र में दिखाया गया है, मैं ऐसा नहीं चाहता। यह मौजूदा स्क्रीन सामग्री पर भी स्लाइड करता है, मैं मौजूदा सामग्री को ऊपर की ओर ले जाने के लिए रास्ता ढूंढ रहा हूं।
अपडेट 1:
मैंने साकेत कचेला द्वारा सुझाए गए एनिमेशन का उपयोग करने की कोशिश की। लेकिन छिपे हुए लेआउट को कभी नहीं दिखाया गया है। यहाँ कोड है।
लेआउट (activity_main.xml):
<RelativeLayout
android:id="@+id/main_screen"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"
android:layout_alignParentTop="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"
android:layout_centerInParent="true"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Slide up / down"
android:layout_alignParentBottom="true"
android:onClick="slideUpDown"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/hidden_panel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/main_screen">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name" />
</RelativeLayout>
गतिविधि (MainActivity.java):
package com.example.slideuplayout;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
public class MainActivity extends Activity {
private ViewGroup hiddenPanel;
private boolean isPanelShown;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hiddenPanel = (ViewGroup)findViewById(R.id.hidden_panel);
hiddenPanel.setVisibility(View.INVISIBLE);
isPanelShown = false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void slideUpDown(final View view) {
if(!isPanelShown) {
// Show the panel
Animation bottomUp = AnimationUtils.loadAnimation(this,
R.anim.bottom_up);
hiddenPanel.startAnimation(bottomUp);
hiddenPanel.setVisibility(View.VISIBLE);
isPanelShown = true;
}
else {
// Hide the Panel
Animation bottomDown = AnimationUtils.loadAnimation(this,
R.anim.bottom_down);
hiddenPanel.startAnimation(bottomDown);
hiddenPanel.setVisibility(View.INVISIBLE);
isPanelShown = false;
}
}
}
एनिमेशन:
bottom_up.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="75%p"
android:toYDelta="0%p"
android:fillAfter="true"
android:duration="500" />
</set>
bottom_down.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="0%p"
android:toYDelta="100%p"
android:fillAfter="true"
android:interpolator="@android:anim/linear_interpolator"
android:duration="500" />
</set>
किसी भी विचार यह कैसे किया जा सकता है?
धन्यवाद।
hiddenPanel.bringToFront()
एनीमेशन शुरू करने से पहले कॉल करें और देखें कि क्या यह काम करता है। हमें यह भी बताएं, क्या आप के लिए ग्राफिकल लेआउट में hidden_panel दृश्य प्राप्त कर रहे हैं activity_main.xml
?