2014-11-07 15 views
5

Vorrei creare una finestra popup come l'app per Android di Facebook che si apre premendo il pulsante dei commenti. Voglio progettare lo stesso tipo di pop-up per la mia applicazione. Qualcuno può farmi sapere come può essere costruito o semplicemente guidarmi qual è il requisito per progettare quel tipo di cose.come costruire un commento di Facebook come popup in Android?

Grazie.

+1

Usa finestra di dialogo personalizzata. –

+0

usa questo http://stackoverflow.com/questions/13341560/how-to-create-a-custom-dialog-box-in-android e "edittext" nella finestra di dialogo –

+0

Grazie per il suggerimento. –

risposta

7

si può raggiungere attraverso

PopupWindow

Ecco la procedura di finestra popup chiamando sulle attività o un frammento. Facebook con Rebound Library per fantastiche animazioni swing. Ma ho usato normali file di animazione xml per questo.

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> 

comparsa Animazione in style.xml

<!-- 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> 

metodo Java per chiamare 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); 
} 

metodo per aggiungere la lista in Layout

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)); 
    } 

Animazione File 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

grazie amico mi piace la tua implementazione, ma puoi aiutarmi con lo swip da dismisare? – suulisin

+0

@Pamparanpa hai trovato qualche soluzione per eliminare il popup scorrendo verso il basso? – Dharmishtha