自适应UI设计经验总括,窗体应用程序

By admin in 4858.com on 2019年4月10日

 
将来,大家来通晓壹些中央控件。控件是停放在工具箱里的,你可以在界面包车型地铁左手也许经过菜单栏的视图选项找到它。

 
将来,大家来打探部分基本控件。控件是停放在工具箱里的,你能够在界面包车型客车左手或然经过菜单栏的视图选项找到它。

1 自适应图片—玖 patch 图片

有关设计规范的重点就不多说,那篇小说首要通过举例相比,来帮衬大家深入认识两大移动平台(IOS&Android)的设计规范以及它们中间的反差。

    (1)Label 控件
那是1个用于放置文字的控件,因为您不能够在窗体上直接输入文字。

    (1)Label 控件
那是二个用来放置文字的控件,因为你不可能在窗体上平昔输入文字。

与古板的png 格式图片比较, 九.png
格式图片在图纸四周有壹圈三个像素点组成的壹旁,该边沿用于对图片的可扩充区和剧情突显区实行义。 

首先,从阳台的页面布局上看,两大平台布局格局上旗帜明显存在差距,如图:

    (2)TextBox 文本框

    (2)TextBox 文本框

   那种格式的图样在android 环境下全体自适应调节高低的能力。

图1

    (3)Button 按钮

    (3)Button 按钮

   (一)允许开发职员定义可扩大区域,当须要延长图片以填充比图片自身越来越大区域时,可扩大区的始末被延展。

作者们对两大平台独家从页眉、页脚进行详尽解释,先是IOS平台,

    (4)CheckBox 复选框

    (4)CheckBox 复选框

   (二)允许开发人士定义内容显示区,用于显示文字或其余剧情

图2

    (五)Panel  分组容器,类似于HTML中的div

    (5)Panel  分组容器,类似于HTML中的div

 

IOS的页眉,也正是我们说的导航栏,用于落到实处在利用不相同音信层级结构间的领航,有时也可用来管理当前荧屏内容。具体功效,如图三,

    (6)PictureBox 图片框

    (6)PictureBox 图片框

2 神奇的控件属性:layout_weight

图3

自适应UI设计经验总括,窗体应用程序。    (7)WebBrowser 它能够允许用户在窗体内浏览网页,可用于制作浏览器

    (七)WebBrowser 它能够允许用户在窗体内浏览网页,可用来制作浏览器

layout_4858.com,weight 属性

在顶部放1个标题,表示最近页面包车型客车1对内容,在左边有个再次回到按钮,那个按钮是凭借于当下页面是属于第二层级依旧其次层级,假设属于第一层级,就需求有贰个回来的按钮,以及再次来到上一级的题目是怎么,然后右上角有个设置的进口,那样看要么抽象的话,那就一向看实效的,如图四,

 
下边附上作者自制的八个拼图游戏及代码文件:4858.com 1

 
下边附上笔者自制的1个拼图游戏及代码文件:4858.com 2

属性的意思: 设置额外分配给控件的空间,暗中认可为0 ,控件保持不变
,属性大于0,则将显示器剩余的控件分配给控件。

图4

4858.com 34858.com 4

4858.com 54858.com 6

 

纯熟了IOS页眉的规划,再来看页脚的,IOS的页脚,也正是我们说的工具栏,用于放置操作当前显示器中各指标的控件,如图伍,

  1 using System;
  2 using System.Collections;
  3 using System.Collections.Generic;
  4 using System.ComponentModel;
  5 using System.Data;
  6 using System.Drawing;
  7 using System.Linq;
  8 using System.Text;
  9 using System.Threading.Tasks;
 10 using System.Windows.Forms;
 11 
 12 namespace WindowsFormsApplication1
 13 {
 14     public partial class Form1 : Form
 15     {
 16         public Form1()
 17         {
 18             InitializeComponent();
 19             ImgList = null;
 20         }
 21         #region 定义字段
 22         List<Image> _imgList;
 23         /// <summary>
 24         /// 定义属性
 25         /// </summary>
 26         public List<Image> ImgList
 27         {
 28             get { return _imgList; }
 29             set
 30             {
 31                 _imgList = new List<Image>();
 32                 _imgList.Add(pictureBox1.BackgroundImage);
 33                 _imgList.Add(pictureBox2.BackgroundImage);
 34                 _imgList.Add(pictureBox3.BackgroundImage);
 35                 _imgList.Add(pictureBox4.BackgroundImage);
 36                 _imgList.Add(pictureBox5.BackgroundImage);
 37                 _imgList.Add(pictureBox6.BackgroundImage);
 38             }
 39         }
 40         #endregion
 41         #region 开始按钮
 42         private void button1_Click(object sender, EventArgs e)
 43         {
 44             //随机6个不同的数
 45             Random rd = new Random();
 46             int[] x = new int[6];
 47             for (int i = 0; i < 6; i++)
 48             {
 49                 x[i] = rd.Next(0, 6);
 50                 for (int j = 0; j < i; j++)
 51                 {
 52                     if (x[i] == x[j])
 53                     {
 54                         i--;
 55                         break;
 56                     }
 57                 }
 58             }
 59             //重新设置图像
 60             pictureBox1.BackgroundImage = ImgList[x[0]];
 61             pictureBox2.BackgroundImage = ImgList[x[1]];
 62             pictureBox3.BackgroundImage = ImgList[x[2]];
 63             pictureBox4.BackgroundImage = ImgList[x[3]];
 64             pictureBox5.BackgroundImage = ImgList[x[4]];
 65             pictureBox6.BackgroundImage = ImgList[x[5]];
 66             //倒计时开始,并允许玩家操作
 67             time = 5;
 68             label2.Text="5";
 69             timer1.Start();
 70             pictureBox1.Enabled = true;
 71             pictureBox2.Enabled = true;
 72             pictureBox3.Enabled = true;
 73             pictureBox4.Enabled = true;
 74             pictureBox5.Enabled = true;
 75             pictureBox6.Enabled = true;
 76         }
 77         #endregion
 78         #region 玩家操作
 79         //定义匹配变量
 80         int match = 0;
 81         //存储上一张图片
 82         PictureBox lpb = new PictureBox();
 83         //响应用户操作
 84         private void pictureBox1_Click(object sender, EventArgs e)
 85         {
 86             PictureBox pb = sender as PictureBox;
 87             //截取Name的最后一位作为唯一标识
 88             int n = int.Parse(pb.Name.Substring(10, 1));
 89             //判断是否已经正确归位,如果没有正确归位
 90             if (pb.BackgroundImage != ImgList[n - 1])
 91             {
 92                 //重置参数
 93                 if (match == 2)
 94                 {
 95                     match = 0;
 96                 }
 97                 //交换背景图片
 98                 if (match == 1)
 99                 {
100                     Image img = pb.BackgroundImage;
101                     pb.BackgroundImage = lpb.BackgroundImage;
102                     lpb.BackgroundImage = img;
103                     //判断是否全部归位
104                     if (pictureBox1.BackgroundImage == ImgList[0] && pictureBox2.BackgroundImage == ImgList[1] && pictureBox3.BackgroundImage == ImgList[2] && pictureBox4.BackgroundImage == ImgList[3] && pictureBox5.BackgroundImage == ImgList[4] && pictureBox6.BackgroundImage == ImgList[5])
105                     {
106                         timer1.Stop();
107                         MessageBox.Show("恭喜您,顺利过关!");
108                     }
109                 }
110                 lpb = pb;
111                 match++;
112             }
113         }
114         #endregion
115         #region 计时功能
116         int time = 5;
117         private void timer1_Tick(object sender, EventArgs e)
118         {
119             if (time > 0)
120             {
121                 time--;
122                 label2.Text = time.ToString();
123             }
124             else
125             {
126                 //停止计时,并禁止玩家操作
127                 timer1.Stop();
128                 pictureBox1.Enabled = false;
129                 pictureBox2.Enabled = false;
130                 pictureBox3.Enabled = false;
131                 pictureBox4.Enabled = false;
132                 pictureBox5.Enabled = false;
133                 pictureBox6.Enabled = false;
134                 MessageBox.Show("很遗憾,游戏失败!");
135             }
136         }
137         #endregion
138 
139  
140 
141     }
142 }
  1 using System;
  2 using System.Collections;
  3 using System.Collections.Generic;
  4 using System.ComponentModel;
  5 using System.Data;
  6 using System.Drawing;
  7 using System.Linq;
  8 using System.Text;
  9 using System.Threading.Tasks;
 10 using System.Windows.Forms;
 11 
 12 namespace WindowsFormsApplication1
 13 {
 14     public partial class Form1 : Form
 15     {
 16         public Form1()
 17         {
 18             InitializeComponent();
 19             ImgList = null;
 20         }
 21         #region 定义字段
 22         List<Image> _imgList;
 23         /// <summary>
 24         /// 定义属性
 25         /// </summary>
 26         public List<Image> ImgList
 27         {
 28             get { return _imgList; }
 29             set
 30             {
 31                 _imgList = new List<Image>();
 32                 _imgList.Add(pictureBox1.BackgroundImage);
 33                 _imgList.Add(pictureBox2.BackgroundImage);
 34                 _imgList.Add(pictureBox3.BackgroundImage);
 35                 _imgList.Add(pictureBox4.BackgroundImage);
 36                 _imgList.Add(pictureBox5.BackgroundImage);
 37                 _imgList.Add(pictureBox6.BackgroundImage);
 38             }
 39         }
 40         #endregion
 41         #region 开始按钮
 42         private void button1_Click(object sender, EventArgs e)
 43         {
 44             //随机6个不同的数
 45             Random rd = new Random();
 46             int[] x = new int[6];
 47             for (int i = 0; i < 6; i++)
 48             {
 49                 x[i] = rd.Next(0, 6);
 50                 for (int j = 0; j < i; j++)
 51                 {
 52                     if (x[i] == x[j])
 53                     {
 54                         i--;
 55                         break;
 56                     }
 57                 }
 58             }
 59             //重新设置图像
 60             pictureBox1.BackgroundImage = ImgList[x[0]];
 61             pictureBox2.BackgroundImage = ImgList[x[1]];
 62             pictureBox3.BackgroundImage = ImgList[x[2]];
 63             pictureBox4.BackgroundImage = ImgList[x[3]];
 64             pictureBox5.BackgroundImage = ImgList[x[4]];
 65             pictureBox6.BackgroundImage = ImgList[x[5]];
 66             //倒计时开始,并允许玩家操作
 67             time = 5;
 68             label2.Text="5";
 69             timer1.Start();
 70             pictureBox1.Enabled = true;
 71             pictureBox2.Enabled = true;
 72             pictureBox3.Enabled = true;
 73             pictureBox4.Enabled = true;
 74             pictureBox5.Enabled = true;
 75             pictureBox6.Enabled = true;
 76         }
 77         #endregion
 78         #region 玩家操作
 79         //定义匹配变量
 80         int match = 0;
 81         //存储上一张图片
 82         PictureBox lpb = new PictureBox();
 83         //响应用户操作
 84         private void pictureBox1_Click(object sender, EventArgs e)
 85         {
 86             PictureBox pb = sender as PictureBox;
 87             //截取Name的最后一位作为唯一标识
 88             int n = int.Parse(pb.Name.Substring(10, 1));
 89             //判断是否已经正确归位,如果没有正确归位
 90             if (pb.BackgroundImage != ImgList[n - 1])
 91             {
 92                 //重置参数
 93                 if (match == 2)
 94                 {
 95                     match = 0;
 96                 }
 97                 //交换背景图片
 98                 if (match == 1)
 99                 {
100                     Image img = pb.BackgroundImage;
101                     pb.BackgroundImage = lpb.BackgroundImage;
102                     lpb.BackgroundImage = img;
103                     //判断是否全部归位
104                     if (pictureBox1.BackgroundImage == ImgList[0] && pictureBox2.BackgroundImage == ImgList[1] && pictureBox3.BackgroundImage == ImgList[2] && pictureBox4.BackgroundImage == ImgList[3] && pictureBox5.BackgroundImage == ImgList[4] && pictureBox6.BackgroundImage == ImgList[5])
105                     {
106                         timer1.Stop();
107                         MessageBox.Show("恭喜您,顺利过关!");
108                     }
109                 }
110                 lpb = pb;
111                 match++;
112             }
113         }
114         #endregion
115         #region 计时功能
116         int time = 5;
117         private void timer1_Tick(object sender, EventArgs e)
118         {
119             if (time > 0)
120             {
121                 time--;
122                 label2.Text = time.ToString();
123             }
124             else
125             {
126                 //停止计时,并禁止玩家操作
127                 timer1.Stop();
128                 pictureBox1.Enabled = false;
129                 pictureBox2.Enabled = false;
130                 pictureBox3.Enabled = false;
131                 pictureBox4.Enabled = false;
132                 pictureBox5.Enabled = false;
133                 pictureBox6.Enabled = false;
134                 MessageBox.Show("很遗憾,游戏失败!");
135             }
136         }
137         #endregion
138 
139  
140 
141     }
142 }

上中下3块布局,中间的局地自适应

图5

View Code

View Code

通过relationlayout 中的最终2个子项,设置
             android:layout_width=“fill_parent”

工具栏上既能够放icon,也足以放文字,看个有血有肉事例就知道怎么用了,如图六豆青圈中情势,

 

 

             android:layout_height=“fill_parent”

图6

开展自动适应

关于采用icon照旧文字,要依据真实意况选择,即使效果入口很多,icon是更加好的取舍。假设效果未有那么多又想表明更为清晰的情趣,提议利用文字。

* *

IOS的页脚除了是工具栏外,还足以是标签栏。标签栏能够让用户在差别的职分、界面和形式中开始展览切换,图柒是普遍的设计方式,

原理:利用 相对布局先安装好光景相对地点,后 中间的控件的职位就能半自动适应

图7

* *

切切实实的可以看下appstore的设计,

4 界面布局时,小分辨率的配备,放置不下。

图8

   放置不下的部分,直接用滚动条

唯独值得注意的是,底部标签不要太多,最多四个。

 

在明白了IOS平台页眉页脚的设计规范后,那时候来相比较下Android平台在这方面包车型客车统一筹划有什么差别,首先依旧从页眉上表明;

5 在设置控件的尺码时,用dp 而不用px

Android的页眉放置的是操作栏(action
bar),用于落到实处app内视图的切换和层级间的导航(再次来到上层),还会停放壹些重点控件。常见的陈设方法如图九,

图9

在此间不得不提一下,在图九中来看的“下拉菜单”是android四.0的陈设性风格,进入android伍.0后,Material
Design被广泛应用,那时候的操作栏大家叫应用栏了,是用来展现选拔的标识、应用导航、内容搜索以及别的操作,比如那样的,

图10

从上面图中不难看出,android四.0和5.0的区别在于下拉菜单变成右边抽屉导航,看下相比较图,

图11

在此地也有个规划小技巧,上边我们列的都以顶尖导航,当导航条目很多时,大家就会设想规划二级导航,而那时候假如选取把二级导航直接加在拔尖抽屉导航里,像那样,

图12

假如是选项这么的安顿,不难看出,左侧导航条目变得卓殊多,也不便宜用户展开切换。那么此时,我们能够把左手的二级导航放到页面中,完成在某贰个骨干航下边进行子导航的三个切换,如图:

图13

如上是IOS和android在页面布局上的两样,而在控件上,两者也存在着差别,大家得以列举多少个普遍的,比如滑块控件、开关控件等,具体的可到官网下载相关控件进行相比,那里不1一列举了,

图14

图15

除此而外页面布局和控件上的分歧,两大平台在手势操作上也有些差别,大家广大的手势有点击、双击、长按等,

图16

那在操作上,各类手势所达成的效果也不如,而IOS平台跟Android平台在同1个功力上所运用的手势也会有所分化,比如删除行为,IOS使用轻扫手势,而Android则是长按删除。

图17

如上正是对两大平台间在设计规范上的粗略介绍,而在切实可行细节上的两样,可参看下边包车型地铁导图,

图18

在安插时遵从最基本的尺度也是反映三个互为设计师的专业性,认识设计规范也是为着防止在劳作上犯了最不该犯的错,希望上边的总计对你富有帮忙。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有