2013-04-16 1 views
0

enter image description hereAndroid Диалог как WeChat

Кто-нибудь знает, как создать DialogBox как изображение показывая выше?

  1. Закругленный угол.
  2. Прозрачный фон.
  3. Без названия, кнопки, границы.
  4. Затухание в течение 5 секунд - исчезновение.

* Я видел тост, всплывающее окно, диалог, диалоговое окно предупреждения, какой из них лучше всего подходит выше? :)


Было бы неплохо, если бы был какой-то фрагмент кода, я достаточно новое для андроид :)

+2

Создать изображение в фотошопе с закругленными углами и трансформировать затем установить его как фон для всплывающего окна – Pragnani

+0

+1 всплывающее окно? можете ли вы вести меня с кодом для этого окна? Извините, я довольно новичок в android. – Roylee

+1

Проверьте мой ответ ... Я дал вам справочный материал, использую его для вашего макета – Pragnani

ответ

1

Для диалоговых проверок http://www.c-sharpcorner.com/UploadFile/2fd686/androd-dialogs/

private void createCustomDialog(){ 
     //Create a dialog object 
     final Dialog dialog = new Dialog(MainActivity.this); 
     //Set its layout 
     dialog.setContentView(R.layout.custom_dialog_layout); 
     //Set the title 
     dialog.setTitle("This is custom layout"); 
     //Make it cancelable 
     dialog.setCancelable(true); 
     //We need to dismiss the dialog so we add a listener to the ok button 
     dialog.findViewById(R.id.okButton).setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       dialog.dismiss(); 
      } 
     }); 

     dialog.show(); 
    } 
} 

Для темного альфа-фона можно создать вытяжку. Ниже код даст вам полупрозрачный фон с круглыми углами.

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
     <item> 
      <shape android:shape="rectangle"> 
       <gradient 
        android:startColor="#AA000000" 
        android:endColor="#AA000000" 
        android:angle="-90" 
        android:type="linear" 
        /> 
       <corners android:radius="10dp" /> 
      </shape> 
     </item> 
</layer-list> 

Для автоматического скрытия части вы можете использовать

Animation anim = new AlphaAnimation(1,0); 
anim.setDuration(300); 
anim.setStartOffset(5000); 
anim.setInterpolator(new LinearInterpolator()); 
anim.setFillAfter(false); 

myView.startAnimation(anim); 
+0

+1 Это замечательно! как насчет округлого угла? – Roylee

+1

<углы android: radius = "10dp" /> Это для закругленных углов – Naveen

+0

Как я могу определить custom_dialog_layout? Просто LinearLayout с фоном? – Roylee

1

Это не проблема вообще. Просто создайте 9n-й патч с возможностью задержки и затухания и поместите его как bg для диалога.

+0

Ic, как я могу автоматизировать задержки, например, в течение 5 секунд. – Roylee

+1

вы можете использовать метод TimerTask для проверки после некоторой задержки. Который будет выполнять ваш метод после задержки, что вам нужно. –

1

Попробуйте

Создание XML с с нужным содержанием, а затем установить прозрачное изображение в этой

я обеспечиваю вас image, используйте это

и

Объявление поля типа PopupWindow. PopupWindow popup;

раздуть макет здесь

View v = inflatter.inflate(R.layout.yourlayout, null); 

установить макет в всплывающем окне

v1.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); 
int height1 = v1.getMeasuredHeight(); 
popup= new PopupWindow(v, (int) (width * 0.8), height1, true); 
popup.showAtLocation(mainlayout, Gravity.CENTER, 0, 0); 

mainlayout ваша деятельность вид группы

это кусок кода, который я использовал в мое приложение.

Transparent Backgrouund

Пример я использовал что-то подобное в моем приложении

popup example

+0

+1 Какая разница в работе над диалогом и всплывающим окном? – Roylee

+1

@Roylee Когда вы используете диалог, вы можете размыть макет родительской активности, но это невозможно, если вы используете всплывающее окно. Но использование всплывающего окна простое, и вы можете поместить всплывающее окно в указанную позицию на экране, но невозможно открыть диалог – Pragnani

+0

Отличный ответ, и знаю, что знаю разницу :) спасибо @ Прагани – Roylee

1

Пользовательские Тост будет делать все для вас, просто подготовить свой XML и установить его на тост, вот пример :

public class CustomToast { 

public CustomToast(Context ctx, CharSequence text) { 

    LayoutInflater inflater = LayoutInflater.from(ctx); 
    View layout = inflater.inflate(R.layout.toast_layout, null); 

    TextView txt = (TextView) layout.findViewById(R.id.toastText); 
    txt.setText(text); 

    Toast myToast = new Toast(ctx.getApplicationContext()); 
    myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 100); 
    myToast.setDuration(Toast.LENGTH_SHORT); 
    myToast.setView(layout); 
    myToast.show(); 
    } 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^