1.自定义的一个Toast显示
public class MainActivity extends AppCompatActivity {
private Button mybut;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mybut=findViewById(R.id.mybut);
mybut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast toast=Toast.makeText(MainActivity.this,"loginSucceful",Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER,0,0);
LinearLayout linearLayout=(LinearLayout)toast.getView();//getview获取的是一个LinearLayout对象
ImageView img=new ImageView(getApplicationContext());//使用了getApplicationContext获取context
img.setImageResource(R.drawable.ic_launcher_background);
linearLayout.addView(img,0);//0是该图片在父容器中的索引位置
toast.show();
}
});
}
}
2.从布局页面(xml)自定义的一个Toast
布局页面toastlayout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/myimg"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/mytext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
java文件
public class MainActivity extends AppCompatActivity {
private Button mybut;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mybut=findViewById(R.id.mybut);
mybut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toastShow(mybut.getText().toString(),R.drawable.navigate01);
}
});
}
public void toastShow(String content,int image){
Toast toast=Toast.makeText(MainActivity.this,"loginSucceful",Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER,0,0);
//从布局文件里转化视图控件
View view= LayoutInflater.from(MainActivity.this).inflate(R.layout.toastlayout,null);
TextView toastText=view.findViewById(R.id.mytext);//从布局里寻找id
ImageView toastImage=view.findViewById(R.id.myimg);
toastText.setText(content);
toastImage.setImageResource(image);
toast.setView(view);
toast.show();
}
}
3.从布局页面(xml)自定义的一个popupWindow
创建布局页面popwindow.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/myimg"
android:src="@drawable/navigate02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/mytext"
android:text="mytext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
activity文件
public class MainActivity extends AppCompatActivity {
private Button mybut;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mybut=findViewById(R.id.mybut);
mybut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popshow();
}
});
}
public void popshow(){
//从布局文件转视图
View view=LayoutInflater.from(MainActivity.this).inflate(R.layout.popwindow,null,false);
//设置窗口的内容,位置参数,聚焦参数
PopupWindow popupWindow=new PopupWindow(view, LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,true);
popupWindow.setTouchable(true);//设置可触摸性
//设置窗口的出现位置,基于mybut偏移一定的位置
//popupWindow.showAsDropDown(mybut,0,0,Gravity.BOTTOM);
popupWindow.showAtLocation(getWindow().getDecorView(), Gravity.BOTTOM,0,0);
}
}
4.Alertdialog
public class MainActivity extends AppCompatActivity {
private Button mybut;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mybut=findViewById(R.id.mybut);
mybut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog();
}
});
}
public void alertDialog(){
AlertDialog alertDialog=new AlertDialog.Builder(MainActivity.this).create();
alertDialog.setTitle("myAlertDialog");
alertDialog.setIcon(R.drawable.navigate05);
alertDialog.setMessage("please read the message clearly");
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "conform", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"u click the conformButton",Toast.LENGTH_SHORT).show();
}
});
alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE,"digree",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"u click the degree",Toast.LENGTH_SHORT).show();
}
});
alertDialog.show();
}
}
4.自定义Alertdialog
自定义的dialoglayout布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/lisence"
android:text="sdfajsdfkl;ajsdfkl;asdjf;ldajs"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<CheckBox
android:id="@+id/mycheck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/mybut"
android:text="agree"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
自定义CustomDialog类文件
public class CustomDialgo extends Dialog {
//自定义的构造函数
public CustomDialgo(@NonNull Context context ,OnCustomDialogListener customDialogListener) {
super(context);
}
//创建一个时间监听的接口
public interface OnCustomDialogListener{
public void btnComfirmLicenseClicked(boolean isConfirm);
}
private OnCustomDialogListener CustomDialogListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialoglayout);
//设定视图的宽度
Window window=this.getWindow();
WindowManager.LayoutParams layoutParams = window.getAttributes();
layoutParams.width=WindowManager.LayoutParams.MATCH_PARENT;
this.getWindow().setAttributes(layoutParams);
Button button=findViewById(R.id.mybut);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//拿到布局的checkbox
CheckBox checkBox=findViewById(R.id.mycheck);
CustomDialogListener.btnComfirmLicenseClicked(checkBox.isChecked());
}
});
}
}
Activity文件
public class MainActivity extends AppCompatActivity {
private Button mybut;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mybut=findViewById(R.id.mybut);
mybut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog();
}
});
}
public void alertDialog(){
CustomDialgo customDialgo=new CustomDialgo(MainActivity.this, new CustomDialgo.OnCustomDialogListener() {
@Override
public void btnComfirmLicenseClicked(boolean isConform) {
if (isConform==true){
Toast.makeText(MainActivity.this,"custom dialog",Toast.LENGTH_SHORT).show();
}
}
});
customDialgo.show();
}
}