Hello everyone,
I have already showed you how to use a SlidingViewer to create a slidingWindow. Today I will show another way to create such a window with the help of animation.
Please check one of my previous posts to do this in another way.
How to show a sliding window from below in Android?
Check this new One using Navigation Drawer
First Create a file named “SlidingPanel.java” and copy this code into it.
package com.pack.coderzheaven; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; import android.graphics.Paint.Style; import android.util.AttributeSet; import android.widget.LinearLayout; public class SlidingPanel extends LinearLayout { private Paint innerPaint, borderPaint ; public SlidingPanel(Context context, AttributeSet attrs) { super(context, attrs); init(); } public SlidingPanel(Context context) { super(context); init(); } private void init() { innerPaint = new Paint(); innerPaint.setARGB(100, 25, 25, 75); //gray innerPaint.setAntiAlias(true); borderPaint = new Paint(); borderPaint.setARGB(255, 255, 255, 255); borderPaint.setAntiAlias(true); borderPaint.setStyle(Style.STROKE); borderPaint.setStrokeWidth(5); } public void setInnerPaint(Paint innerPaint) { this.innerPaint = innerPaint; } public void setBorderPaint(Paint borderPaint) { this.borderPaint = borderPaint; } @Override protected void dispatchDraw(Canvas canvas) { RectF drawRect = new RectF(); drawRect.set(0,0, getMeasuredWidth(), getMeasuredHeight()); canvas.drawRoundRect(drawRect, 5, 5, innerPaint); canvas.drawRoundRect(drawRect, 5, 5, borderPaint); super.dispatchDraw(canvas); } }
This is the layout for the Panel window that comes up. Actually this java file creates gradiant only. No visual components are created with this code.
Now the main.xml, the place where “SlidingPanel ” is used.
Copy this code to your main.xml file
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:gravity="bottom" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageButton android:id="@+id/show_popup_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left" android:background="@drawable/open" /> <com.pack.coderzheaven.SlidingPanel android:id="@+id/popup_window" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="left" android:padding="1px" android:background="@drawable/white"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/gradient_bar"> <TextView android:id="@+id/site_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" android:textSize="16px" android:text="CoderzHeaven" android:layout_gravity="center" android:layout_alignParentLeft="true" android:textColor="@drawable/black" android:layout_weight="1" android:layout_marginLeft="5px"/> <ImageButton android:id="@+id/hide_popup_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerInParent="true" android:layout_margin="2px" android:layout_gravity="center" android:background="@drawable/close"/> </LinearLayout> <TextView android:id="@+id/site_description" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@drawable/black" android:textStyle="italic" android:layout_margin="5px"/> </com.pack.coderzheaven.SlidingPanel> </LinearLayout>
Make sure you have all the resources(images) for the xml.
Now create a folder named “anim” inside “res” folder and create an xml named “popup_hide.xml” and another one named “popup_show.xml”
popup_hide.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="750"/> </set>
popup_show.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="100%p" android:toYDelta="0" android:duration="750"/> </set>
These two files create the animation for the window.
Now create file named gradient_bar.xml in the “res/drawable” folder and copy this code into it.
This is applied as background for the title in the sliding window.
You can edit the animation files to change the duration of the window coming.
Now the main java file
The file is named “PopUpAnimationDemo.java”
package com.pack.coderzheaven; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageButton; import android.widget.TextView; public class PopUpAnimationDemo extends Activity { private Animation animShow, animHide; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); initPopup(); } private void initPopup() { final SlidingPanel popup = (SlidingPanel) findViewById(R.id.popup_window); // Hide the popup initially..... popup.setVisibility(View.GONE); animShow = AnimationUtils.loadAnimation( this, R.anim.popup_show); animHide = AnimationUtils.loadAnimation( this, R.anim.popup_hide); final ImageButton showButton = (ImageButton) findViewById(R.id.show_popup_button); final ImageButton hideButton = (ImageButton) findViewById(R.id.hide_popup_button); showButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { popup.setVisibility(View.VISIBLE); popup.startAnimation( animShow ); showButton.setEnabled(false); hideButton.setEnabled(true); }}); hideButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { popup.startAnimation( animHide ); showButton.setEnabled(true); hideButton.setEnabled(false); popup.setVisibility(View.GONE); }}); final TextView locationName = (TextView) findViewById(R.id.site_name); final TextView locationDescription = (TextView) findViewById(R.id.site_description); locationName.setText("CoderzHeaven"); locationDescription.setText("Heaven of all working codes" + " A place where you can ask, share & even shout for code! Let’s share a wide range of technology here." + " From this site you will get a lot of working examples in your favorite programming languages!." + " Always remember we are only one comment away from you… Let’s shorten the distance between your doubts and your answers…"); } }
Here is the Strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Sliding Window Demo</string> </resources>
Now create a file named colors.xml in the res/values folder and copy this into it
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="select_Category">Select Category</string> <drawable name="white">#ffffff</drawable> <drawable name="black">#000000</drawable> <drawable name="green">#347C2C</drawable> <drawable name="pink">#FF00FF</drawable> <drawable name="violet">#a020f0</drawable> <drawable name="grey">#778899</drawable> <drawable name="red">#C11B17</drawable> <drawable name="yellow">#FFFF8C</drawable> <drawable name="PowderBlue">#b0e0e6</drawable> <drawable name="brown">#2F1700</drawable> <drawable name="Hotpink">#7D2252</drawable> <drawable name="darkgrey">#606060</drawable> </resources>
Click on the ImagButton to open the sliding Window
Download the whole project from here
Please don’t forget to add your valuable comments on this post, because comments are our encouragements for future posts.
Pingback: SlidingDrawer in Android, A simple example.
Hello,
Thank you for making this tutorial. However, I cannot see the code for creating the gradients.xml file. What code should go into that file?
-KO