Android拼图游戏开发全纪录1

2023-05-16

本文转自:http://blog.csdn.net/eclipsexys/article/details/18887567

今天我们继续来讲解Android拼图游戏全纪录的第二篇,今天要完成的任务比较简单:界面布局和资源文件


1资源文件:

我们在开发一个项目的时候,首先要定下这个App的基调,是小清新呢还是重口味,所以我们需要定义一些颜色、style等

首先是颜色等:

[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <color name="app_bg">#000000</color>  
  4.       
  5.     <color name="title_text">#FFFFFF</color>  
  6.       
  7.     <color name="record_title_bg">#F56A47</color>  
  8.     <color name="record_title_text">#FFFFFF</color>  
  9.     <color name="record_title_text_dark">#727272</color>  
  10.       
  11.     <color name="main_bg">#3EC5FF</color>  
  12.     <color name="main_text">#FFFFFF</color>  
  13.       
  14.     <color name="setting_reg_bg">#A2A2A2</color>  
  15.     <color name="setting_text_light">#C3C3C3</color>  
  16.     <color name="setting_text_dark">#111111</color>  
  17.       
  18.     <color name="tv_click">#33444444</color>  
  19. </resources>  

以上就定义好了我们这个App的小清新的风格

然后是字符串资源,这个随意吧

[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.   
  4.     <string name="app_name">XPuzzle</string>  
  5.     <string name="action_settings">Settings</string>  
  6.     <string name="hello_world">Hello world!</string>  
  7.     <string name="puzzle_main_type">选择难度:</string>  
  8.     <string name="puzzle_main_steps">步数:</string>  
  9.     <string name="puzzle_main_img">原        图</string>  
  10.     <string name="puzzle_main_reset">重        置</string>  
  11.     <string name="puzzle_main_back">返        回</string>  
  12.     <string name="puzzle_main_time">时间:</string>  
  13.     <string name="puzzle_main_type_selected">2 X 2</string>  
  14.     <string name="puzzle_main_record">查看记录</string>  
  15.     <string name="puzzle_main_more">了解更多</string>  
  16.   
  17. </resources>  

接下来是自定义的一个带Selector的Shape,这样Button使用这个背景后,就比较配合小清新的风格了
[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  3.   
  4.     <item android:state_pressed="true"><shape android:shape="rectangle">  
  5.   
  6.             <!-- 填充的颜色 -->  
  7.             <solid android:color="#33444444" />  
  8.             <!-- 设置按钮的四个角为弧形 -->  
  9.             <!-- android:radius 弧形的半径 -->  
  10.             <corners android:radius="5dip" />  
  11.   
  12.             <!-- padding:Button里面的文字与Button边界的间隔 -->  
  13.             <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />  
  14.         </shape></item>  
  15.     <item><shape android:shape="rectangle">  
  16.   
  17.             <!-- 填充的颜色 -->  
  18.             <solid android:color="@color/title_text" />  
  19.             <!-- 设置按钮的四个角为弧形 -->  
  20.             <!-- android:radius 弧形的半径 -->  
  21.             <corners android:radius="5dip" />  
  22.   
  23.             <!-- padding:Button里面的文字与Button边界的间隔 -->  
  24.             <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />  
  25.         </shape></item>  
  26.   
  27. </selector>  

这个就是我们在前面图中看见的Button了,是不是很好看啊

嗯 还有个TextView的selector

[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  3.   
  4.     <item android:drawable="@color/tv_click" android:state_pressed="true"></item>  
  5.     <item android:drawable="@android:color/transparent"></item>  
  6.   
  7. </selector>  

下面我们就要开始实现我们的界面了:

首先是首页界面:


布局比较简单,相信大家都看得懂

[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:background="@color/main_bg" >  
  6.   
  7.     <LinearLayout  
  8.         android:id="@+id/ll_puzzle_main_spinner"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:layout_centerHorizontal="true"  
  12.         android:layout_margin="10dip" >  
  13.   
  14.         <TextView  
  15.             android:layout_width="wrap_content"  
  16.             android:layout_height="wrap_content"  
  17.             android:layout_gravity="center"  
  18.             android:text="@string/puzzle_main_type"  
  19.             android:textColor="@color/main_text"  
  20.             android:textSize="@dimen/text_title" />  
  21.   
  22.         <TextView  
  23.             android:id="@+id/tv_puzzle_main_type_selected"  
  24.             android:layout_width="wrap_content"  
  25.             android:layout_height="wrap_content"  
  26.             android:layout_gravity="center"  
  27.             android:background="@drawable/textview_click"  
  28.             android:text="@string/puzzle_main_type_selected"  
  29.             android:textColor="@color/main_text"  
  30.             android:textSize="@dimen/text_title" />  
  31.     </LinearLayout>  
  32.   
  33.     <LinearLayout  
  34.         android:id="@+id/ll_xpuzzle_main_functions"  
  35.         android:layout_width="wrap_content"  
  36.         android:layout_height="wrap_content"  
  37.         android:layout_alignLeft="@+id/gv_xpuzzle_main_pic_list"  
  38.         android:layout_alignParentBottom="true"  
  39.         android:gravity="center"  
  40.         android:layout_alignRight="@+id/gv_xpuzzle_main_pic_list"  
  41.         android:layout_margin="@dimen/padding" >  
  42.   
  43.         <Button  
  44.             android:id="@+id/btn_puzzle_main_record"  
  45.             style="@style/btn_style"  
  46.             android:layout_width="wrap_content"  
  47.             android:layout_height="wrap_content"  
  48.             android:layout_margin="@dimen/padding"  
  49.             android:background="@drawable/white_button"  
  50.             android:text="@string/puzzle_main_record" />  
  51.   
  52.         <Button  
  53.             android:id="@+id/btn_puzzle_main_setting"  
  54.             style="@style/btn_style"  
  55.             android:layout_width="wrap_content"  
  56.             android:layout_height="wrap_content"  
  57.             android:layout_margin="@dimen/padding"  
  58.             android:background="@drawable/white_button"  
  59.             android:text="@string/puzzle_main_more" />  
  60.     </LinearLayout>  
  61.   
  62.     <GridView  
  63.         android:id="@+id/gv_xpuzzle_main_pic_list"  
  64.         android:layout_width="wrap_content"  
  65.         android:layout_height="wrap_content"  
  66.         android:layout_above="@id/ll_xpuzzle_main_functions"  
  67.         android:layout_below="@id/ll_puzzle_main_spinner"  
  68.         android:layout_centerHorizontal="true"  
  69.         android:layout_margin="@dimen/padding"  
  70.         android:gravity="center_horizontal"  
  71.         android:horizontalSpacing="@dimen/padding"  
  72.         android:numColumns="4"  
  73.         android:padding="@dimen/padding"  
  74.         android:verticalSpacing="@dimen/padding" >  
  75.     </GridView>  
  76.   
  77. </RelativeLayout>  

这就OK了。

里面的选择难度是一个popupwindow,所以还有个布局文件

这个。。so easy了

[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content"  
  5.     android:background="@android:color/transparent"  
  6.     android:orientation="horizontal" >  
  7.   
  8.     <TextView  
  9.         android:id="@+id/tv_main_type_2"  
  10.         android:layout_width="wrap_content"  
  11.         android:layout_height="wrap_content"  
  12.         android:layout_marginRight="8dp"  
  13.         android:text="2x2"  
  14.         android:textColor="@color/main_text"  
  15.         android:textSize="@dimen/text_title_sub" />  
  16.   
  17.     <TextView  
  18.         android:id="@+id/tv_main_type_3"  
  19.         android:layout_width="wrap_content"  
  20.         android:layout_height="wrap_content"  
  21.         android:layout_marginRight="8dp"  
  22.         android:text="3x3"  
  23.         android:textColor="@color/main_text"  
  24.         android:textSize="@dimen/text_title_sub" />  
  25.   
  26.     <TextView  
  27.         android:id="@+id/tv_main_type_4"  
  28.         android:layout_width="wrap_content"  
  29.         android:layout_height="wrap_content"  
  30.         android:text="4x4"  
  31.         android:textColor="@color/main_text"  
  32.         android:textSize="@dimen/text_title_sub" />  
  33.   
  34. </LinearLayout>  

最后是拼图的布局界面:如下图


就是这样啦,其实界面也很简单

[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/rl_puzzle_main_main_layout"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:background="@color/main_bg" >  
  7.   
  8.     <LinearLayout  
  9.         android:id="@+id/ll_puzzle_main_spinner"  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="wrap_content"  
  12.         android:layout_margin="@dimen/padding"  
  13.         android:gravity="center_horizontal" >  
  14.   
  15.         <TextView  
  16.             android:layout_width="wrap_content"  
  17.             android:layout_height="wrap_content"  
  18.             android:layout_gravity="center"  
  19.             android:text="@string/puzzle_main_steps"  
  20.             android:textColor="@color/title_text"  
  21.             android:textSize="@dimen/text_title" />  
  22.   
  23.         <TextView  
  24.             android:id="@+id/tv_puzzle_main_counts"  
  25.             android:layout_width="wrap_content"  
  26.             android:layout_height="wrap_content"  
  27.             android:layout_gravity="center"  
  28.             android:gravity="center"  
  29.             android:paddingRight="50dip"  
  30.             android:text="1"  
  31.             android:textColor="@color/title_text"  
  32.             android:textSize="@dimen/text_title" />  
  33.   
  34.         <TextView  
  35.             android:layout_width="wrap_content"  
  36.             android:layout_height="wrap_content"  
  37.             android:layout_gravity="center"  
  38.             android:text="@string/puzzle_main_time"  
  39.             android:textColor="@color/title_text"  
  40.             android:textSize="@dimen/text_title" />  
  41.   
  42.         <TextView  
  43.             android:id="@+id/tv_puzzle_main_time"  
  44.             android:layout_width="wrap_content"  
  45.             android:layout_height="wrap_content"  
  46.             android:layout_gravity="center"  
  47.             android:gravity="center"  
  48.             android:text="1"  
  49.             android:textColor="@color/title_text"  
  50.             android:textSize="@dimen/text_title" />  
  51.     </LinearLayout>  
  52.   
  53.     <LinearLayout  
  54.         android:id="@+id/ll_puzzle_main_btns"  
  55.         android:layout_width="wrap_content"  
  56.         android:layout_height="wrap_content"  
  57.         android:layout_alignParentBottom="true"  
  58.         android:layout_centerHorizontal="true"  
  59.         android:layout_margin="@dimen/padding" >  
  60.   
  61.         <Button  
  62.             android:id="@+id/btn_puzzle_main_img"  
  63.             style="@style/btn_style"  
  64.             android:layout_width="wrap_content"  
  65.             android:layout_height="wrap_content"  
  66.             android:layout_margin="@dimen/padding"  
  67.             android:background="@drawable/white_button"  
  68.             android:text="@string/puzzle_main_img" />  
  69.   
  70.         <Button  
  71.             android:id="@+id/btn_puzzle_main_restart"  
  72.             style="@style/btn_style"  
  73.             android:layout_width="wrap_content"  
  74.             android:layout_height="wrap_content"  
  75.             android:layout_margin="@dimen/padding"  
  76.             android:background="@drawable/white_button"  
  77.             android:text="@string/puzzle_main_reset" />  
  78.   
  79.         <Button  
  80.             android:id="@+id/btn_puzzle_main_back"  
  81.             style="@style/btn_style"  
  82.             android:layout_width="wrap_content"  
  83.             android:layout_height="wrap_content"  
  84.             android:layout_margin="@dimen/padding"  
  85.             android:background="@drawable/white_button"  
  86.             android:text="@string/puzzle_main_back" />  
  87.     </LinearLayout>  
  88.   
  89.     <GridView  
  90.         android:id="@+id/gv_puzzle_main_detail"  
  91.         android:layout_width="wrap_content"  
  92.         android:layout_height="wrap_content"  
  93.         android:layout_above="@id/ll_puzzle_main_btns"  
  94.         android:layout_below="@id/ll_puzzle_main_spinner"  
  95.         android:layout_centerInParent="true"  
  96.         android:layout_margin="@dimen/padding" >  
  97.     </GridView>  
  98.   
  99. </RelativeLayout>  

好了,今天的东西都是些准备工作,所以比较简单。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android拼图游戏开发全纪录1 的相关文章

  • React Native 从 JavaScript 代码内部访问 strings.xml

    有没有办法访问当前值android app src main res values strings xml从 JavaScript 代码内部 我想为每个构建放置不同的端点 URL 但我什至无法检测到反应本机代码内的构建类型 而不必求助于 D
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • Android Activity 生命周期函数基础知识

    我正在测试这段代码 它显示活动所处的状态 public class Activity101Activity extends Activity String tag Lifecycle Called when the activity is
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 如何使用 IF 检查 TextView 可见性

    我有一个 onCheckedChangeListener 来根据选择的单选按钮显示文本视图 我有 1 个疑问和 1 个难题 想知道是否有人可以帮助我 问题 您能否将单选组默认检查值设置为 否 单选按钮 以便一开始就不会检查任何内容 问题 如
  • Google 云端硬盘身份验证异常 - 需要许可吗? (v2)

    我一直在尝试将 Google Drive v2 添加到我的 Android 应用程序中 但无法获得授权 我收到 UserRecoverableAuthIOException 并显示消息 NeedPermission 我感觉 Google A
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • Android Studio 0.4.3 Eclipse项目没有gradle

    在此版本之前 在 Android Studio 中按原样打开 Eclipse 项目似乎很容易 无需任何转换 我更喜欢 Android Studio 环境 但我正在开发一个使用 eclipse 作为主要 IDE 的项目 我不想只为这个项目下载
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • Android:膨胀布局时出现 StackOverFlowError 和 InvokingTargetException

    首先 对不起我的英语 我在膨胀布局时有一个问题 我有一个自定义视图 从 LinearLayout 扩展而来 称为按钮帮助 我在名为的布局上使用该视图加载活动 我的以下代码在所有设备和模拟器上都能完美运行 但具有 QVGA 屏幕 例如 Sam
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 强制 Listview 不重复使用视图(复选框)

    我做了一个定制Listview 没有覆盖getView 方法 Listview 中的每个项目都具有以下布局 联系布局 xml

随机推荐

  • android rc文件的启动

    记录hostapd 启动方式 xff0c 多种方式可以启动一个bin hostapd android rc init rc fragment for hostapd on Android Copyright c 2002 2016 Joun
  • MTK WLAN支持多种NVRAM方案

    背景 硬件差异的前提 wifi功率会有差异 软件上可以做功率补偿方案 但是需要知道整机状态 然后设定一个flag 软件根据flag 选择使用预制的多NVRAM 简单点来说就是 根据不同条件 加载不同的NVRAM 实现原理 1 根据不同的射频
  • C51矩阵键盘

    对于键盘按键之前也是似懂非懂 xff0c 手里有一块浩豚电子的51板子 xff0c 现在跟着使用说明看一遍学习 矩阵键盘 xff0c 称为行列键盘 xff0c 在单片机上使用4条I O口作为行线 xff0c 4条I O口作为列线 xff0c
  • Ubuntu 获取 root 权限 (临时&永久)

    xfeff xfeff xfeff xfeff Ubuntu 获取 root 权限 操作环境 xff1a Win7 43 VMware Workstation 12 0 1 43 Ubuntu 12 04 1 临时获取 root 权限 xf
  • 广播Boradcast socket sendto出错 errno: 101 Network is unreachable

    关键字 xff1a linux 广播 255 255 255 255 sendto error Network is unreachable 全网广播 场景 xff1a 今天调试linux 网络编程的广播 xff0c 当向255 255 2
  • ubuntu下查看某个包是否已安装

    dpkg l dpkg l grep package name dpkg status package name 查看 var lib dpkg status 内容
  • 查看一个可执行文件或者库的依赖库

    经常需要查看一个可执行文件或者库依赖那些库文件 通常情况下这很好办 xff0c 使用ldd命令就可以了 xff0c 比如 xff1a 1 2 3 4 5 6 ldd bin bash linux vdso so 1 61 gt 0x0000
  • 构建gcc交叉编译工具链

    如何构建一个GCC 交叉编译工具链 GCC不仅是一个编译器 xff0c 它是一个开源工程 xff0c 可以让你建立各种编译器 一些编译器支持多线程 xff0c 一些支持共享库 xff0c 一些支持 Multilib xff08 典型的应用是
  • buildroot VS yocto

    翻译自Buildroot vs OpenEmbedded or Yocto Project A Four Hands Discussion 2016 pdf Buildroot 和 yocto的对比 对比内容 xff1a xff08 1 x
  • git查看各个branch之间的关系图

    提供两种方法 xff1a 1 使用git log命令 git log graph decorate oneline simplify by decoration all 说明 xff1a decorate 标记会让git log显示每个co
  • CUDA入门(一)

    最近我也都在看CUDA xff0c 自己看书和练习也都搞了一个月了 而且经常在CSDN上逛 xff0c 也发现了很多问题 xff0c 所以决定自己写点这方面的东西 xff0c 方便自己也方便后来人 根据我的调查 xff0c 我发现现在的初学
  • Openwrt Package xxx is missing dependencies for the following libraries 问题分析

    Openwrt编译时通常会遇到如下问题 xff1a Openwrt Package xxx is missing dependencies for the following libraries libxxx so 首先检查package
  • shell command命令

    近期遇到一个比较少见的命令command xff0c 详细如下 xff1a command 是一些shell的内建命令 我本机使用的是dash xff0c 服务器使用的是bash xff0c 其他shell没有测试 dash user sp
  • 深入理解Linux内核-第五章笔记

    内核同步 内核同步 内核如何为不同的请求提供服务 内核抢占 同步原语 每CPU变量原子操作优化和内存屏障自旋锁顺序锁读 拷贝 更新RCU信号量完成量禁止本地中断 对内核数据结构的同步访问避免竞争条件的实例 内核如何为不同的请求提供服务 内核
  • 一些截图

  • 基于busybox的bootchart分析

    一 Bootchart简介 Bootchart官网http www bootchart org xff0c 已经很久没有更新了 Bootchart的目的是将启动阶段的性能可视化 xff08 Boot Process Performance
  • 用Android手机spydroid-ipcamera搭载局域网监控环境

    相比有很多人都想用手机实现视频监控吧 xff0c 今天这个教程 xff0c 将会教大家用spydroid ipcamera搭建局域网监控环境 准备工作 xff1a 1 准备一部带有摄像头的 xff0c API level在9以上的手机 xf
  • 3D数学--学习笔记(三):3D中绕任意轴的旋转

    本文转自 xff1a http blog csdn net zjc game coder article details 24269757 不要小看我们在Unity或者3DMAX中的一个简单的旋转物体操作 题记 这里需要用到的知识 xff1
  • Android拼图游戏开发全纪录0

    本文转自 xff1a http blog csdn net eclipsexys article details 18881849 最近刚完成一个Android的小项目 拼图游戏 项目并不复杂 xff0c 但也是一个完整的项目 xff0c
  • Android拼图游戏开发全纪录1

    本文转自 xff1a http blog csdn net eclipsexys article details 18887567 今天我们继续来讲解Android拼图游戏全纪录的第二篇 xff0c 今天要完成的任务比较简单 xff1a 界