Android复习选项菜单、自定义对话框、隐式跳转制作一个综合小demo

Android复习选项菜单、自定义对话框、隐式跳转制作一个综合小demo

                                       ————安德风QQ1652102745

 

一、最终效果演示:

二、布局设计

1、界面布局设计 Activity_main.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
 4     xmlns:tools="http://schemas.android.com/tools"
 5     android:layout_width="wrap_content"
 6     android:layout_height="wrap_content"
 7     tools:context=".MainActivity"
 8     android:background="@color/colorPrimary"
 9     >
10 
11 
12     <ImageView
13         android:id="@+id/imageView"
14         android:layout_width="422dp"
15         android:layout_height="746dp"
16         app:layout_constraintBottom_toBottomOf="parent"
17         app:layout_constraintEnd_toEndOf="parent"
18         app:layout_constraintStart_toStartOf="parent"
19         app:layout_constraintTop_toTopOf="parent"
20         app:srcCompat="@drawable/menu" />
21 </androidx.constraintlayout.widget.ConstraintLayout>

2、自定义对话框布局设计 (dailog.xml)

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <androidx.constraintlayout.widget.ConstraintLayout
 3     xmlns:android="http://schemas.android.com/apk/res/android"
 4     xmlns:app="http://schemas.android.com/apk/res-auto"
 5     xmlns:tools="http://schemas.android.com/tools"
 6     android:layout_width="match_parent"
 7     android:layout_height="wrap_content"
 8     android:layout_gravity="center_horizontal"
 9     android:background="@drawable/dialog_bg">
10 
11     <TextView
12         android:id="@+id/textView"
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:layout_marginTop="356dp"
16         android:text="您确定要退出吗?"
17         android:textColor="#EF0A0A"
18         android:textSize="40sp"
19         android:textStyle="bold"
20         app:layout_constraintEnd_toEndOf="parent"
21         app:layout_constraintHorizontal_bias="0.62"
22         app:layout_constraintStart_toStartOf="parent"
23         app:layout_constraintTop_toTopOf="parent" />
24 
25     <LinearLayout
26         android:layout_width="409dp"
27         android:layout_height="184dp"
28         android:orientation="horizontal"
29         app:layout_constraintBottom_toBottomOf="parent"
30         app:layout_constraintEnd_toEndOf="parent"
31         app:layout_constraintHorizontal_bias="0.487"
32         app:layout_constraintStart_toStartOf="parent"
33         app:layout_constraintTop_toBottomOf="@+id/textView"
34         android:gravity="center_vertical"
35         app:layout_constraintVertical_bias="0.251">
36 
37         <Button
38             android:id="@+id/yesbutton"
39             android:layout_width="80dp"
40             android:layout_height="50dp"
41             android:layout_weight="1"
42             android:layout_marginLeft="40dp"
43             android:background="@drawable/yes_btn" />
44 
45         <Button
46             android:id="@+id/nobutton"
47             android:layout_width="80dp"
48             android:layout_height="50dp"
49             android:layout_marginRight="40dp"
50             android:layout_marginLeft="20dp"
51             android:layout_weight="1"
52             android:background="@drawable/no_btn" />
53     </LinearLayout>
54 </androidx.constraintlayout.widget.ConstraintLayout>

3、菜单布局设计文件路径(menu/optaionsmenu.xml)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:title="追剧"
        android:id="@+id/zhuiju"/>
    <item android:title="购物"
        android:id="@+id/shopping"
        />
    <item android:title="学习"
        android:id="@+id/study"/>
    <item android:title="音乐"
    android:id="@+id/music"/>
    <item android:title="退出"
        android:id="@+id/exit"/>
</menu>

三、功能实现

1、MainActivity.java

 1 package com.example.optionsmenu;
 2 
 3 import androidx.annotation.NonNull;
 4 import androidx.appcompat.app.AppCompatActivity;
 5 
 6 import android.content.Intent;
 7 import android.net.Uri;
 8 import android.os.Bundle;
 9 import android.view.Menu;
10 import android.view.MenuItem;
11 
12 public class MainActivity extends AppCompatActivity {
13 
14     @Override
15     protected void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.activity_main);
18 
19     }
20 
21     @Override
22     public boolean onCreateOptionsMenu(Menu menu) {
23         getMenuInflater().inflate(R.menu.optionsmenu,menu);
24         return true;
25     }
26 
27     @Override
28     public boolean onOptionsItemSelected(@NonNull MenuItem item) {
29        switch (item.getItemId()){
30            case R.id.zhuiju:
31                Intent intent=new Intent();
32                intent.setAction(Intent.ACTION_VIEW);
33                intent.setData(Uri.parse("https://www.iqiyi.com/"));
34                startActivity(intent);break;
35            case R.id.shopping:
36                Intent intent2=new Intent();
37                intent2.setAction(Intent.ACTION_VIEW);
38                intent2.setData(Uri.parse("https://www.quanbk.cn"));
39                startActivity(intent2);break;
40            case R.id.music:
41                Intent intent3=new Intent();
42                intent3.setAction(Intent.ACTION_VIEW);
43                intent3.setData(Uri.parse("https://www.quanbk.cn/yy"));
44                startActivity(intent3);break;
45            case R.id.study:
46                Intent intent4=new Intent();
47                intent4.setAction(Intent.ACTION_VIEW);
48                intent4.setData(Uri.parse("https://www.bilibili.com/"));
49                startActivity(intent4);break;
50            case R.id.exit:
51                mydialog mydialog=new mydialog(this,R.style.mydialog);
52                //实例化mydialog设置参数( 参数1:环境上下文 (这里设置this), 参数2:导入样式R.style/样式名)
53                mydialog.show();//展示效果
54                break;
55 
56 
57 
58 
59        }
60 
61         return super.onOptionsItemSelected(item);
62     }
63 }

2、自定义对话框功能实现 mydailog.java

 1 package com.example.optionsmenu;
 2 
 3 import android.app.Dialog;
 4 import android.content.Context;
 5 import android.view.View;
 6 
 7 import androidx.annotation.NonNull;
 8 
 9 public class mydialog extends Dialog {
10     public mydialog(@NonNull Context context, int themeResId) {
11         super(context, themeResId);
12         setContentView(R.layout.dialog_main);
13 
14         //YES按钮安装监听器,实现响应功能
15         findViewById(R.id.yesbutton).setOnClickListener(new View.OnClickListener() {
16             @Override
17             public void onClick(View v) {
18                 System.exit(0);      //自定义对话框点击YES按钮时,执行退出
19             }
20         });
21         //NO按钮安装监听器,实现响应功能
22         findViewById(R.id.nobutton).setOnClickListener(new View.OnClickListener() {
23             @Override
24             public void onClick(View v) {
25                 dismiss();  //自定义对话框点击NO按钮时,取消
26             }
27         });
28     }
29 
30 }

四、Values属性值设置:

1、color.xml 颜色设置

1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3     <color name="colorPrimary">#FBDA03</color>
4     <color name="colorPrimaryDark">#FBDA03</color>
5     <color name="colorAccent">#FBDA03</color>
6  
7 </resources>

2、Style.xml 样式设置

 1 <resources>
 2 
 3     <!-- Base application theme. -->
 4     <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
 5         <!-- Customize your theme here. -->
 6         <item name="colorPrimary">@color/colorPrimary</item>
 7         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
 8         <item name="colorAccent">@color/colorAccent</item>
 9     </style>
10     <!--  设置自定义对话框样式:①导入对话框样式模板  -->
11     <style name="mydialog" parent="android:style/Theme.Dialog">
12         <item name="android:windowNoTitle">true</item>
13         <!--   设置关闭自定义对话框标题    -->
14         <item name="android:windowBackground">@android:color/transparent</item>
15         <!--   设置自定义对话框背景颜色为透明    -->
16     </style>
17 </resources>
原文地址:https://www.cnblogs.com/adf520/p/12793744.html