‘壹’ UI设计师需要完成数据库设计吗
不需要。
在开发当中,第一件事就算根据UI设计师的设计图片来进行数据库的定制,定制数据库是整个开发首当其冲最为重要一层,就好比基建的地基一样,一旦没有建设好,重蹈覆彻的时间、精力成本将会大大的增加。在项目初期务必和团队协商完成数据库的设计。
当前UI设计师的工作内容也可细分为五种,软件界面的美术设计、创意工作和制作工作,根据各种相关软件的用户群,提出构思新颖、有高度吸引力的创意设计,对页面进行优化,使用户操作更趋于人性化,维护现有的应用产品,收集和分析用户对于GUI的需求。
‘贰’ IOS开发要学习哪些方面的知识
第一步:编程入门课
时间预计:4个星期
推荐看公开课,Udacity也行,网易公开课也行,自己找一个面对对象语言(一般是JAVA, C++, Python)的课。我是在网易公开课看的斯坦福的CS106A,学的JAVA。
如果你纯粹学iOS开发,不推荐看哈佛CS50,CS50是给CS系的学生介绍整个计算机世界的框架,讲的内容比较多,进度比较快,对iOS开发其实有点累赘了。(臣妾有点跟不上啊!!)
计划安排是一天一课,看课程要求的书(至少看完一本)及大部分作业。这一阶段重点不是语法,而是以下3个目标。
目标:
1. 让自己对编程这件事感到适应。
写hello world。
怎么写function, 怎么调用function。
全局变量,局部变量这类基本知识点。
都是基本的东西。看看书,写多两个程序就欧啦。
2. 掌握编程语言的基本要素。
编程语言4个要素:
a. 基本的数据类型:整数,实数,character, string, boolean
b. 基本的运算符号:+-×/><++--那啥的
c. 怎样输入输出
d. 怎样控制程序:sequence,selection,loop
3. 了解编程范式
面对过程编程。
面向对象编程。
第二步:上手iOS!
时间预计:2星期
强烈推荐CS193P,老头子讲的超级好!我的很多东西(对象思维啥的)是在这里跟着做练习的时候才真正明白的(好啦,也可能是上一堂课练习做得少的原因)。如果等到9月应该itunes U上会开始教iOS 7了。网易公开课的是2010年iOS 5版的,前10堂课,也行。(iTunes U上有完整的课)
CS193P说有prerequisite,一开始被吓到,事实证明还是可以学下去的。头两节课一头雾水,没关系,把itunes U上的课件下载下来,把所有代码打出来,然后一个个元素对应之前学的语言匹配,再不懂先放着,继续学后边的,过几天打多点代码就懂了。
感觉学5、6堂课,一个星期左右就可以开始进入下一阶段自己做东西了。之后用啥学啥,每堂课都有主题的。速度慢点的同学们,这阶段跟我一样准备两个星期吧!
第三步:开发app!
时间预计:2星期(本人...1个半月,实在不好意思说出口)
这个时间就可长可短啦,还包括美工,交互啥的。坚持要用啥学啥的原则,其实就是知道iOS SDK都有什么组件,每个组件有什么function而已。stackoverflow, Github, apple sample code多上,搜索引擎多用。如果有个师傅,这个阶段真的是进步神速。
好的!不出意外,你的第一个app就这么新鲜出炉了!从今天开始,成为一个冷艳逼格高尚的iOS开发者吧!
‘叁’ UI设计常用的UI控件有哪些
uI控件的三要素:绘制、数据、控制。
‘肆’ 安卓如何获取程序最上层ui控件信息,比如说控件上的文本内容
比较简单的写法,在你需要读取的时候,直接string str="";this.Invoke((EventHandler)(delegate{ // 这里写你的控件代码,比如 //str= target.SelectedText; }));至于普通的写法怎么写,你搜索一下C#跨线程访问就算。
‘伍’ 如何实时更新ui,datagridview 跨线程访问控件
很多时候,我开发软件的时候需要开启线程到后台处理大数据,不断更新数据库,但又要同时修改前台UI,比如迅雷的下载任务,开多个线程去下载,显示层UI也要同时体现给用户知道,显示当前用户下载进度等,这样必须用到多线程,但是C#中多线程处理问题涉及到一个“界面控件不能跨线程”,因为微软认为这样会导致线程不安全问题,那么我们一般怎么处理这样的问题,既要处理数据,又要实时显示 。转载
看设计界面
数据库用到的是sqlite 英文sqlite是多线程的 但同一时间只能一个线程操作数据库,
所以要用到线程同步问题
我用LOCK进行线程同步处理
lock (ModifStatic.o)
{
queue = queueBLL.GetModel(i);
queueNew = queue;
queueNew.remainNum++;
queueBLL.Update(queueNew);
}
这里又一点要注意
因为lock 里面的对象必须是一个对象,而且是全局 的 所以我吧它放到一个静态类里面
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test.BLL
{
public static class ModifStatic
{
private static int id = 1;
public static int Id
{
get { return ModifStatic.id; }
set { ModifStatic.id = value; }
}
public static object o = new object();
}
}
这个静态类还有一个 就是记录当前是修改哪一个id的数据的
这样我们就可以只针对某个row进行修改 而不是全部整个datagridview修改,否则就显得很卡
用户会感觉界面一闪一闪的
这个程序是模拟的
写一个类来专门处理修改数据库的 开一个线程用来处理
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test.BLL
{
[Serializable]
public class ChangeDB
{
int i = 0;
Random r = new Random();
Test.Model.queue queue = null;
Test.Model.queue queueNew = null;
Test.BLL.queue queueBLL = new Test.BLL.queue();
public void DBAdd()
{
while (true)
{
i = r.Next(1,8);
lock (ModifStatic.o)
{
queue = queueBLL.GetModel(i);
queueNew = queue;
queueNew.remainNum++;
queueBLL.Update(queueNew);
}
ModifStatic.Id = i;
System.Threading.Thread.Sleep(5000);
}
}
}
}
主页面UI
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
[Serializable]
public partial class FormMain : Form
{
Test.Model.queue queue = null;
Test.BLL.queue queueBLL = new Test.BLL.queue();
Test.BLL.ChangeDB changeDbBLL = new Test.BLL.ChangeDB();
private delegate void myDelegate(int id);//定义委托
//初始化UI
public FormMain()
{
InitializeComponent();
this.dataGridView1.DataSource = queueBLL.GetAllList();
this.dataGridView1.DataMember = "ds";
}
//启动更新线程
Thread myThread;
private void FormMain_Load(object sender, EventArgs e)
{
myThread = new Thread(startFillDv);//实例化线程
myThread.IsBackground = true;
myThread.Start();
}
//不断更新UI
private void startFillDv()
{
while (true)
{
lock (Test.BLL.ModifStatic.o)
{
Grid(Test.BLL.ModifStatic.Id);
}
Thread.Sleep(3000);//更新频率为3秒
}
}
//更新UI
private void Grid(int id)
{
if (this.InvokeRequired)
{
this.Invoke(new myDelegate(Grid), new object[] { id });
}
else
{
try
{
//修改改id对应的行
for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
{
if (Convert.ToInt32(this.dataGridView1.Rows[i].Cells[0].Value) == id)
{
queue = queueBLL.GetModel(id);
this.dataGridView1.Rows[i].Cells[1].Value = queue.remainNum;
}
}
}
catch
{
}
}
}
//结束线程
private void FormMain_FormClosed(object sender, FormClosedEventArgs e)
{
if (this.myThread.IsAlive)
{
this.myThread.Abort();
}
}
//修改数据库
Thread th = null;
private void buttonModif_Click(object sender, EventArgs e)
{
th = new Thread(new ThreadStart(changeDbBLL.DBAdd));
th.IsBackground = true;
th.Start();
}
}
}
‘陆’ c#怎么根据数据库的变化来控制用户控件数量显示与ui界面
mvc的话在js中设置,每隔几秒通过ajax进行查询数据库,根据结果进行相应操作;
winform或webform直接在后台进行上述操作