1.首先定义一个xml文件,制定我们需要的dialog样式
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <LinearLayout android:background="@mipmap/bg_prempt" android:orientation="vertical" android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/iv_prempt_icon" android:background="@mipmap/prempt_success_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv_prempt_text" android:text="评论失败" android:textSize="18sp" android:textColor="@color/main_text" android:layout_marginTop="16dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </RelativeLayout>
2.第二步需要定义一个class类,然后继承dialog
public class PromptDialog extends Dialog { private ImageView ivPremptIcon; private TextView tvPremptText; private String promptMessage; private int promptIconId; public PromptDialog(@NonNull Context context) { super(context); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_prompt); setCanceledOnTouchOutside(true); initView(); initData(); } private void initView() { ivPremptIcon = findViewById(R.id.iv_prempt_icon); // icon tvPremptText = findViewById(R.id.tv_prempt_text); //文字 } private void initData() { if (promptMessage != null && promptMessage.length() != 0) { tvPremptText.setText(promptMessage); } if (promptIconId != 0) { ivPremptIcon.setBackgroundResource(promptIconId); } } /** * 从外界传入iconid * * @param viewId */ public PromptDialog setIcon(int viewId) { promptIconId = viewId; return this; } /** * 从外界传入文本信息 * * @param message */ public PromptDialog setMessage(String message) { promptMessage = message; return this; } /** * 延迟几秒后消失 * @param delay */ public PromptDialog delay(long delay){ TimerTask task = new TimerTask() { public void run() { dismiss(); } }; Timer timer = new Timer(); timer.schedule(task,delay); return this; } }
3.一切都准备好了,最后一步当然是使用了
PromptDialog promptDialog = new PromptDialog(context); promptDialog.setMessage("文本"); promptDialog.setIcon(R.mipmap.prempt_error_icon); promptDialog.delay(3000); promptDialog.show();
还可以链式调用
new PromptDialog(context) .setMessage("文本信息") .setIcon(R.mipmap.prempt_error_icon) .delay(3000) .show();
好啦,今天的分享就到这啦,喜欢的小朋友加个关注吧!