会自定义对于我们来说非常的重要,自定义精通了,离中级开发工程师就更近了,我在项目中写的Dialog,运行什么都没问题,但是在一些老手机上,直接闪退,居然出现版本不兼容,一生气写了个自定义,一些问题就远远的离我而去了。。
下面是自定义Dialog需要的布局:
popo.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_vertical"
>
<RelativeLayout
android:layout_width="200dp"
android:layout_height="200dp"
android:background="#28c8b7"
android:layout_gravity="center"
>
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
/>
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="关闭"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
</LinearLayout>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击"
/>
</RelativeLayout>
下面直接上代码:(代码里面有注释,我就不细讲了)
MyDialog.class
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
/**
* 自定义的对话框:推荐使用
*
* 对话框样子可以根据自己需求自己定
* */
public class MyDialog extends AlertDialog implements android.view.View.OnClickListener{
private Button mBtn;
//1.选择一个参数的构造方法
protected MyDialog(Context context) {
super(context);
//点击外部可以消失对话框
// setCanceledOnTouchOutside(true);
}
//2.重写oncreat方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//3.导入需要的样式布局
setContentView(R.layout.popo);
//4.具体操作
mBtn=(Button) findViewById(R.id.btn1);
mBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
dismiss();//点击自己消失
}
}
//主要实现代码:
MainActivity.class
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener {
private Button mBtn;
//声明自定义写的对话框
private MyDialog my;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
my=new MyDialog(this);
mBtn=(Button) findViewById(R.id.btn);
mBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
my.show();
}
}
(本人上传都是亲自体验,代码完整,如果喜欢请关注一下,慢慢给大家传递技术)