2014-11-07 9 views
5

मैं फेसबुक एंड्रॉइड ऐप जैसे पॉपअप बॉक्स बनाना चाहता हूं जो टिप्पणियां बटन दबाकर खुलता है। मैं अपने आवेदन के लिए उसी तरह के पॉप-अप को डिज़ाइन करना चाहता हूं। क्या कोई मुझे बता सकता है कि यह कैसे बनाया जा सकता है या सिर्फ मुझे मार्गदर्शन कर सकता है कि उस तरह की चीज़ों को डिजाइन करने की आवश्यकता क्या है।एंड्रॉइड में पॉपअप जैसी फेसबुक टिप्पणी कैसे बनाएं?

धन्यवाद।

+1

उपयोग कस्टम संवाद। –

+0

इस http://stackoverflow.com/questions/13341560/how-to-create-a-custom-dialog-box-in-android और 'edittext' संवाद में –

+0

सुझाव के लिए धन्यवाद। –

उत्तर

7

आप के माध्यम से

PopupWindow

यहाँ यह हासिल कर सकते हैं गतिविधि या टुकड़ा से अधिक पॉपअप विंडो को बुलाने की प्रक्रिया है। भयानक स्विंग एनिमेशन के लिए Rebound Library का उपयोग कर फेसबुक। लेकिन मैंने इसके लिए सामान्य एक्सएमएल एनीमेशन फाइलों का इस्तेमाल किया। style.xml में

popup_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:id="@+id/headerLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:minHeight="?attr/actionBarSize" 
     android:orientation="horizontal" 
     android:layout_alignParentTop="true" 
     android:gravity="center"> 

     <TextView 
      android:layout_gravity="center" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Some One and 20 Others Like this" 
      android:textColor="@color/black" 
      android:textStyle="bold" 
      android:layout_margin="5dp"/> 
    </LinearLayout> 

    <ListView 
     android:id="@+id/commentsListView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/headerLayout" 
     android:layout_above="@+id/comment_section" 
     android:layout_marginBottom="0dp"/> 

    <LinearLayout 
     android:id="@+id/comment_section" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:minHeight="50dp" 
     android:layout_alignParentBottom="true" 
     android:layout_marginBottom="5dp" 
     android:orientation="horizontal" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:gravity="center" 
     > 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:maxHeight="30dp" 
      android:minHeight="20dp" 
      android:layout_gravity="center" 
      android:src="@mipmap/ic_launcher" 
      /> 
     <EditText 
      android:id="@+id/writeComment" 
      android:hint="Write a Comment" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:maxLines="2" 
      android:focusable="true" 
      android:layout_marginLeft="2dp" 
      android:textSize="12sp" 
      android:textColor="@color/black" 
      android:background="#00000000"/> 

    </LinearLayout> 

</RelativeLayout> 

पॉपअप एनीमेशन

<!-- PopuP Enter Exit Animation --> 
    <style name="PopupAnimation" parent="Widget.AppCompat.PopupWindow"> 
     <item name="android:windowEnterAnimation">@anim/bottom_up</item> 
     <item name="android:windowExitAnimation">@anim/bottom_down</item> 
    </style> 

जावा विधि लेआउट में सूची जोड़ने के लिए कॉल करने के लिए PopUpWindow

// call this method when required to show popup 
    public void onShowPopup(View v){ 

     LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     // inflate the custom popup layout 
     inflatedView = layoutInflater.inflate(R.layout.popup_layout, null,false); 
     // find the ListView in the popup layout 
     ListView listView = (ListView)inflatedView.findViewById(R.id.commentsListView); 
     LinearLayout headerView = (LinearLayout)inflatedView.findViewById(R.id.headerLayout); 
     // get device size 
     Display display = getWindowManager().getDefaultDisplay(); 
     final Point size = new Point(); 
     display.getSize(size); 
//  mDeviceHeight = size.y; 
     DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics(); 
     int width = displayMetrics.widthPixels; 
     int height = displayMetrics.heightPixels; 


     // fill the data to the list items 
     setSimpleList(listView); 


     // set height depends on the device size 
     popWindow = new PopupWindow(inflatedView, width,height-50, true); 
     // set a background drawable with rounders corners 
     popWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.popup_bg)); 

     popWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); 
     popWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); 

     popWindow.setAnimationStyle(R.style.PopupAnimation); 

     // show the popup at bottom of the screen and set some margin at bottom ie, 
     popWindow.showAtLocation(v, Gravity.BOTTOM, 0,100); 
} 

विधि

void setSimpleList(ListView listView){ 

     ArrayList<String> contactsList = new ArrayList<String>(); 

     for (int index = 0; index < 10; index++) { 
      contactsList.add("I am @ index " + index + " today " + Calendar.getInstance().getTime().toString()); 
     } 

     listView.setAdapter(new ArrayAdapter<String>(MainActivity.this, 
       R.layout.popup_list_item, android.R.id.text1, contactsList)); 
    } 

एनीमेशन फ़ाइल 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="400"/> 
</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="400" /> 

</set> 
+0

धन्यवाद आदमी मुझे आपका कार्यान्वयन पसंद है, लेकिन क्या आप स्वाइप से हटने में मदद कर सकते हैं? – suulisin

+0

@Pamparanpa क्या आपको स्वाइप करके पॉपअप को खारिज करने का कोई समाधान मिला? – Dharmishtha

संबंधित मुद्दे