Material Design风格适用于后台access数据库管理系统统网站吗

Material Design_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Material Design
人人都是产品经理社区(www.woshipm.com)是...|
总评分0.0|
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩5页未读,
定制HR最喜欢的简历
你可能喜欢教你实现Material Design风格的知乎主页(详解多种控件的综合使用)
本文讲主要来说说Toolbar、RecyclerView、CardView、DrawerLayout、以及SwiperefreshLayout的综合使用,其中Toolbar和RecyclerView在前几篇博客已经详细讲述其用法了,有兴趣的可以去看看。现在利用这几个控件实现Material Design风格的知乎主页( v3.3版 知乎),在讲到相关控件的时候,我也会提及一下这个控件的用法。那么,让我们开始控件之旅吧。
在动手写代码之前,我们先要看看最终的实现效果是什么:
首先,顶部导航栏是Toolbar,下面是RecyclerView,而RecyclerView内部的item view则是一个个CardView。
接着,向右滑动,会出现一个侧边菜单栏,这个是用DrawerLayout实现的,下面会详细说明。
最后,还实现了下拉刷新功能,这个是用SwiperefreshLayout实现的。
以上效果大致和手机上的知乎效果一样(v3.3版),但最新的知乎已经更新到了4.0,改动很多,就不是以上的效果了。但无碍我们接下来的学习。vcD4NCjxoMSBpZD0="动手实践">动手实践
part 1.侧滑菜单的布局:DrawerLayout
根据以上的效果,我们首先要创建一个DrawerLayout布局,它是一个ViewGroup,因此能放下其他的View,显然左边滑出来的部分放我们的侧滑菜单选项,而右边则是我们的主页部分,新建activity_main.xml文件:
&code class=&language-xml hljs &&&android.support.v4.widget.drawerlayout xmlns:android=&http://schemas.android.com/apk/res/android& android:id=&@+id/drawer_layout& android:layout_width=&match_parent& android:layout_height=&match_parent&&
&!--{cke_protected}{C}%3C!%2D%2D%20main%20content%20%2D%2D%3E--&
&include layout=&@layout/content_main&&&/include&
&!--{cke_protected}{C}%3C!%2D%2D%20The%20navigation%20drawer%2D%2D%3E--&
&include layout=&@layout/drawermenu&&&/include&
&/android.support.v4.widget.drawerlayout&&/code&
这里简单介绍一下DrawerLayout的用法:在布局内部放两个子布局,分别是content_main和drawermenu,放在上面的布局会默认显示为主页,而下面的布局则会隐藏,需要滑动才能显示。因此,主页的view一般放在drawerlayout的第一个子View位置,同时宽高设置应为match_parent。而侧滑菜单的高度为match_parent,但宽度应该设置为一个固定的值(一般侧滑菜单不会完全覆盖主内容),同时它的layout_gravity要指定一个值,比如本例,是从左滑出的,因此要设置为android:layout_gravity=&left&,表示在父布局的左侧,否则会失去侧滑的效果。更多DrawerLayout的具体使用方法可以参考安卓官方指南:。
Part 2.侧滑菜单:ListView
为了方便起见,侧滑菜单采用了listView的列表呈现,新建drawermenu.xml文件,代码如下:
&relativelayout xmlns:android=&http://schemas.android.com/apk/res/android& android:layout_width=&match_parent& android:layout_height=&match_parent& android:layout_gravity=&left& android:background=&#ffffff&&
&linearlayout android:id=&@+id/admininfo& android:layout_width=&match_parent& android:layout_height=&wrap_content& android:background=&#58a5ff& android:orientation=&vertical&&
&imageview android:id=&@+id/adminicon& android:layout_width=&80dp& android:layout_height=&80dp& android:layout_margin=&5dp& android:src=&@mipmap/ic_usericon&&
&textview android:id=&@+id/adminname& android:layout_width=&wrap_content& android:layout_height=&wrap_content& android:layout_margin=&5dp& android:paddingleft=&10dp& android:text=&Chen Yu& android:textsize=&23sp&&
&/textview&&/imageview&&/linearlayout&
&listview android:id=&@+id/listview& android:layout_width=&match_parent& android:layout_height=&wrap_content& android:layout_below=&@id/admininfo& android:padding=&15dp& android:pider=&@null&&
&imageview android:id=&@+id/pider& android:layout_width=&match_parent& android:layout_height=&2dp& android:background=&?android:attr/listDivider& android:layout_above=&@+id/qiehuanzhuti& android:layout_alignparentstart=&true&&
&textview android:id=&@+id/qiehuanzhuti& android:layout_width=&wrap_content& android:layout_height=&wrap_content& android:text=&切换主题& android:textsize=&20sp& android:layout_marginleft=&15dp& android:layout_margintop=&15dp& android:layout_below=&@id/listview&&
&textview android:layout_width=&wrap_content& android:layout_height=&wrap_content& android:text=&设置& android:textsize=&20sp& android:layout_marginleft=&15dp& android:layout_margintop=&15dp& android:layout_below=&@id/qiehuanzhuti&&
&/textview&&/textview&&/imageview&&/listview&&/relativelayout&&/code&
同时,需要为listview的每一个Item创建一个item view,因此,新建list_item.xml:
&linearlayout xmlns:android=&http://schemas.android.com/apk/res/android& android:orientation=&horizontal& android:layout_width=&match_parent& android:layout_height=&wrap_content&&
&imageview android:id=&@+id/actionicon& android:layout_width=&30dp& android:layout_height=&30dp& android:src=&@mipmap/ic_format& android:layout_margin=&5dp&&
&textview android:id=&@+id/choice& android:layout_width=&wrap_content& android:layout_height=&wrap_content& android:text=&选项& android:textsize=&18sp& android:layout_gravity=&center_vertical& android:layout_marginleft=&15dp&&
&/textview&&/imageview&&/linearlayout&&/code&
既然有了listView,那么就需要一个适配器,因此我们新建MenuAdapter.java:
public class MenuAdapter extends BaseAdapter {
private LayoutInflater mI
private List mD
private List mDataI
public MenuAdapter(Context context, List data,List dataicon) {
this.mInflater = LayoutInflater.from(context);
this.mData =
this.mDataIcon =
public int getCount() {
return mData.size();
public Object getItem(int position) {
return mData.get(position);
public long getItemId(int position) {
public View getView(int position, View convertView, ViewGroup parent) {
View view = mInflater.inflate(R.layout.list_item,null);
TextView textView = (TextView) view.findViewById(R.id.choice);
ImageView imageView = (ImageView) view.findViewById(R.id.actionicon);
//为每一个item设置一个图标和相应的文字
imageView.setImageResource(mDataIcon.get(position));
textView.setText(mData.get(position));
该adapter继承自BaseAdapter,相信熟悉ListView的都对适配器比较熟悉了,因此这里不再展开来讲了。
Part 3.主页布局
1、实现下拉刷新:SwiperefreshLayout
先新建主页布局文件:content_main.xml,我们看一下上面的图,主页布局主要由如下三者组成:一个toolbar导航栏,一个RecyclerView用于展示数据,以及一个刷新的小圆圈。那么我们的实现思路如下:首先toolbar应该是位于最顶层的,接着利用swiperefreshlayout布局,装载一个RecycleView。代码如下所示:
&code class=&language-xml hljs &&&linearlayout xmlns:android=&http://schemas.android.com/apk/res/android& xmlns:toolbar=&http://schemas.android.com/apk/res-auto& android:layout_width=&match_parent& android:layout_height=&match_parent& android:orientation=&vertical&&
&android.support.v7.widget.toolbar android:id=&@+id/toolbar& android:layout_width=&match_parent& android:layout_height=&wrap_content& android:background=&?attr/colorPrimary& toolbar:titletextcolor=&@android:color/white& toolbar:subtitletextcolor=&@android:color/white& toolbar:popuptheme=&@style/ToolbarPopupTheme&&
&/android.support.v7.widget.toolbar&
&android.support.v4.widget.swiperefreshlayout android:layout_width=&match_parent& android:layout_height=&match_parent& android:orientation=&vertical& android:id=&@+id/swiperefreshlayout&&
&android.support.v7.widget.recyclerview android:id=&@+id/recyclerview& android:layout_width=&match_parent& android:layout_height=&match_parent&&
&/android.support.v7.widget.recyclerview&&/android.support.v4.widget.swiperefreshlayout&
&/linearlayout&&/code&
关于Toolbar的使用,这里就省略了关于Toolbar中的menu的xml文件,可以参考完整的。接下来我们看看SwiperefreshLayout这个的使用:
这个组件是在v4包里面的,它实际上是一个ViewGroup,但是它内部只能有一个子View,因此,我们可以把RecyclerView放在里面,在布局文件里面的写法很简单,那么我们在Activity内怎么初始化这个控件呢?
与一般控件一样,它都是使用如下方法来获取实例:
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swiperefreshlayout);
接着我们看它几个常用的方法:
//该方法用于指定刷新时进度条的颜色变化,第一个颜色表示进度条出现的初始颜色,这里引用的是资源文件
public void setColorSchemeResources (int... colorResIds)
/**该方法用于设置刷新监听器,用于监听用户下拉刷新的操作
* 接收的参数是SwipeRefreshLayout.OnRefreshListener,并需要重写该接口的onRefresh()方法。
* 设置该监听器后,可以使得用户在下拉刷新的时候回调该方法
public void setOnRefreshListener (SwipeRefreshLayout.OnRefreshListener listener)
//该方法用于设置刷新状态,比如设置为false,那么是停止刷新圆圈的转动
public void setRefreshing (boolean refreshing)
2、数据内容:CardView
CardView是v7的一个控件,在使用它的时候需要先引入,在build.gradle中修改如下:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:cardview-v7:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
这个控件的优点在于,它是一个卡片式的布局,能轻松实现卡片式效果,并且能实现阴影、圆角效果。我们先看它的几个重要的xml属性:
app:cardElevation 阴影的大小
app:cardMaxElevation 阴影最大高度
app:cardBackgroundColor 卡片的背景色
app:cardCornerRadius 卡片的圆角大小
app:contentPadding 卡片内容于边距的间隔
以上app是自定义的命名空间。通过设置以上的属性,就能配置好一个漂亮的卡片了,接下来为卡片添加各种子View内容,新建item_cardview.xml:
&android.support.v7.widget.cardview xmlns:android=&http://schemas.android.com/apk/res/android& xmlns:app=&http://schemas.android.com/apk/res-auto& android:orientation=&vertical& android:layout_width=&match_parent& android:layout_height=&wrap_content& android:layout_margin=&5dp& app:cardelevation=&15dp& app:contentpaddingtop=&2dp& app:contentpaddingbottom=&4dp&&
&relativelayout android:layout_width=&match_parent& android:layout_height=&match_parent&&
&relativelayout android:id=&@+id/relativelayout& android:layout_width=&match_parent& android:layout_height=&wrap_content&&
&imageview android:id=&@+id/usericon& android:layout_height=&35dp& android:layout_width=&35dp& android:src=&@mipmap/ic_launcher& android:layout_marginleft=&4dp& android:layout_centervertical=&true&&
&textview android:id=&@+id/username& android:layout_height=&50dp& android:layout_width=&wrap_content& android:text=&罗杰斯& android:textsize=&17sp& android:textcolor=&#8cc3ff& android:gravity=&center& android:layout_torightof=&@id/usericon&&
&textview android:layout_width=&wrap_content& android:layout_height=&50dp& android:text=&赞同了该答案& android:textsize=&17sp& android:gravity=&center_vertical& android:layout_alignparenttop=&true& android:layout_torightof=&@id/username&&
&textview android:id=&@+id/count& android:layout_width=&50dp& android:layout_height=&25dp& android:text=&1.0k& android:textsize=&17sp& android:textcolor=&#408aff& android:background=&#a9d3ff& android:gravity=&center& android:layout_centervertical=&true& android:layout_alignparentright=&true& android:layout_marginright=&15dp&&
&/textview&&/textview&&/textview&&/imageview&&/relativelayout&
&textview android:id=&@+id/title& android:layout_width=&match_parent& android:layout_height=&wrap_content& android:textsize=&18sp& android:text=&Android开发测试Demo示例& android:layout_below=&@id/relativelayout& android:padding=&4dp&&
&textview android:id=&@+id/content& android:layout_width=&match_parent& android:layout_height=&wrap_content& android:textsize=&17sp& android:lines=&3& android:ellipsize=&end& android:text=&测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容& android:layout_below=&@id/title& android:padding=&4dp&&
&/textview&&/textview&&/relativelayout&
&/android.support.v7.widget.cardview&&/code&
3、数据列表:RecyclerView
接着,我们继续完善主页,我们需要一个数据呈现的控件,RecyclerView,上面所说的CardView正是这里RecyclerView的一个子Item view,我们新建一个MyAdapter.java,即RecyclerView的数据适配器:
public class MyAdapter extends RecyclerView.Adapter {
private List mD
public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_cardview,viewGroup,false);
MyViewHolder vh = new MyViewHolder(v);
public MyAdapter(List data){
public void onBindViewHolder(MyViewHolder myViewHolder, int i) {
myViewHolder.mUsername.setText(mData.get(i).getUsername());
myViewHolder.mUserIcon.setImageResource(mData.get(i).getIcon());
myViewHolder.mCount.setText(mData.get(i).getCount());
myViewHolder.mTitle.setText(mData.get(i).getTitle());
myViewHolder.mContent.setText(mData.get(i).getContent());
public int getItemCount() {
return mData.size();
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView mU
public TextView mC
public TextView mT
public TextView mC
public ImageView mUserI
public MyViewHolder(View itemView) {
super(itemView);
mUsername = (TextView) itemView.findViewById(R.id.username);
mUserIcon = (ImageView) itemView.findViewById(R.id.usericon);
mCount = (TextView) itemView.findViewById(R.id.count);
mTitle = (TextView) itemView.findViewById(R.id.title);
mContent = (TextView) itemView.findViewById(R.id.content);
接着,我们要写一个消息实体类,因为每一个ItemView的内容都是通过网络加载或者本地缓存都获得的,因此,我们新建MessageObj.java:
public class MessageObj {
public MessageObj(String username,int icon ,String count, String title, String content) {
this.username =
this.count =
this.title =
this.content =
this.icon =
public String getUsername() {
public String getContent() {
public String getTitle() {
public String getCount() {
public int getIcon() {
到目前为止,通过使用RecyclerView+CardView实现了数据列表的呈现,通过SwiperefreshLayout实现了下拉刷新的功能,通过Toolbar实现了导航的功能,通过DrawerLayout实现了侧滑菜单的功能。那么最后,我们需要在Activity中,对以上一系列控件初始化以及准备数据的提供。
Part 4.MainActivity
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerV
private SwipeRefreshLayout swipeRefreshL
private DrawerLayout drawerL
private ActionBarDrawerToggle actionBarDrawerT
private ListView listV
private List mD
private List
private List choiceI
private MyAdapter recyclerA
private Handler mHandler = new Handler(){
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
swipeRefreshLayout.setRefreshing(false);
recyclerAdapter.notifyDataSetChanged();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
initViews();
private void initViews() {
初始化Toolbar
toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle(&首页&);
//设置导航图标、添加菜单点击事件要在setSupportActionBar方法之后
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.mipmap.ic_drawer_home);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_search:
Toast.makeText(MainActivity.this, &Search !&, Toast.LENGTH_LONG).show();
case R.id.action_notifications:
Toast.makeText(MainActivity.this, &Notification !&, Toast.LENGTH_LONG).show();
初始化RecyclerView
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerAdapter = new MyAdapter(mData);
recyclerView.setAdapter(recyclerAdapter);
初始化swipeRefreshLayout
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swiperefreshlayout);
swipeRefreshLayout.setColorSchemeResources(R.color.color_blue);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
public void onRefresh() {
new Thread(new Runnable() {
public void run() {
Collections.reverse(mData);
Thread.sleep(1000); //模拟耗时操作
} catch (InterruptedException e) {
e.printStackTrace();
mHandler.sendEmptyMessage(1);
}).start();
初始化侧滑菜单 DrawerLayout
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
actionBarDrawerToggle = new ActionBarDrawerToggle(
drawerLayout,toolbar,R.string.drawer_open,R.string.drawer_close
drawerLayout.setDrawerListener(actionBarDrawerToggle);
listView = (ListView) findViewById(R.id.listview);
ListAdapter adapter = new MenuAdapter(this,choices,choiceIcon);
listView.setAdapter(adapter);
private void initData() {
mData = new ArrayList();
MessageObj obj1 = new MessageObj(&神盾局&,R.mipmap.shield,&5.6K&,&神盾局是怎么样的一个组织?&,
&神盾局,全称为国土战略防御攻击与后勤保障局,由斯坦&李与杰克&科比联合创造。神盾局是国际安全理事会专门用于处理各种奇异事件的特殊部队&);
mData.add(obj1);
MessageObj obj2 = new MessageObj(&Stark&,R.mipmap.stark,&7.8K&,&钢铁侠是谁?&,
&托尼&斯塔克(小罗伯特&唐尼饰)是&斯塔克工业&的董事长,作为钢铁侠 官方剧照钢铁侠军火商他毁誉不一,但还是过着上流生活。此时,&);
mData.add(obj2);
MessageObj obj3 = new MessageObj(&索尔&,R.mipmap.thor,&7.8K&,&雷神索尔的能力如何?&,
&北欧神话里挥舞着大铁锤、掌控着风暴和闪电的天神,还能用铁锤打开时空之门。暴脾气的他因为自大鲁莽的行为重新点燃了一场古老战争的战火,之后被贬到凡间被迫与人类一起生活。&);
mData.add(obj3);
MessageObj obj4 = new MessageObj(&罗杰斯&,R.mipmap.steven,&7.8K&,&怎么评价美国队长3?&,
&该片根据漫威2006年出版的漫画大事件《内战》改编,背景故事承接于《复仇者联盟2:奥创纪元》事件的余波中,讲述了奥创事件后引发的&);
mData.add(obj4);
MessageObj obj5 = new MessageObj(&黑寡妇&,R.mipmap.widow,&7.8K&,&黑寡妇是一个怎么样的角色?&,
&1928年出生于前苏联的斯大林格勒,自幼被前苏联特工人员训练成特工,身体经前苏联政府基因改造后大大延缓了其衰老速度,并增强其免疫以及抗击打能力,加上本身多年的各种体能及精神上的训练&);
mData.add(obj5);
choices = new ArrayList();
choiceIcon = new ArrayList&&();
choices.add(&首页&);
choices.add(&发现&);
choices.add(&关注&);
choices.add(&收藏&);
choices.add(&圆桌&);
choices.add(&私信&);
choiceIcon.add(R.mipmap.ic_main);
choiceIcon.add(R.mipmap.ic_find);
choiceIcon.add(R.mipmap.ic_attention);
choiceIcon.add(R.mipmap.ic_collect);
choiceIcon.add(R.mipmap.ic_circle);
choiceIcon.add(R.mipmap.ic_message);
public boolean onCreateOptionsMenu(Menu menu) {
// I this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
最后,可以运行一下,就会发现结果和一开始的效果是一样的了。
源码地址:优秀设计联盟-SDC-优设网-设计师交流学习平台-听讲座,聊设计,找素材,尽在优设网
下一篇 继续涨姿势
阅读本文需 4 分钟
前端框架对于不懂设计的程序员来说,可以说是极好的素材,如果想开发一个项目但又找不到设计师帮忙设计,那么我们可以直接使用前端框架来完成,而且能省去很多前端JS的工作,比如今天这款,质量就特别高 &&&
今天为大家分享一套新出的 Material Design 框架,谷歌的Magerial我想大家都听过,这是今年流行的设计趋势之一,其外观时尚、交互友好,在不同设备浏览都有很好的表现。
小编下载下来研究了一下,当前的设计元素很丰富,常用的都有了,唯一缺点就是手机APP的UI设计元素太少,当然可以自己丰富它。
PS: 如果还不知道Material是什么,请查看介绍。
该框架编写方式采用类似Bootstrap的class,比如栅格系统、表单元素,都有点像Bootstarp,这样对熟悉Bootstrap的用户可以直接上手了。
下面我们一起看看这套Material Design框架的组件和样式元素介绍:
多种不同样式的卡片设计。
弹窗 Modal
包含中间弹窗,左下角提示弹出等多个样式。
总体来说自带的组件元素不算多,但用于小项目,估计可以接受,对于小型的网站来说已经足够了,喜欢尝试新鲜的用户可以用这个框架做一个Material Design风格的产品出来吧!
框架名称:Material
下载地址:
【优设四月免费神器+资源下载人气榜】
Top 1:超级好用的免费切图神器!
Top 2:无代码做APP动效的最佳帮手!
Top 3:四月份的免费英文字体打包下载
原文地址:
【优设网 原创文章 投稿邮箱:】
================关于优设网================
“优设网“是国内人气最高的网页设计师学习平台,专注分享网页设计、无线端设计以及PS教程。
【特色推荐】
设计师需要读的100本书:史上最全的设计师图书导航:。
设计微博:拥有粉丝量94万的人气微博 ,欢迎关注获取网页设计资源、下载顶尖设计素材。
设计导航:全球顶尖设计网站推荐,设计师必备导航:
———————————————————–
想在手机上、被窝里获取设计教程、经验分享和各种意想不到的”福利”吗?
添加 优秀网页设计 微信号:【youshege】优设哥的全拼
您也可以通过扫描下方二维码快速添加:
PS合成教程!教你创建冰火两重天的悍勇女战士
编者按:今天的教程适合稍微有PS基础的同学,细节木有一一截图,不过操作步骤都有,关键是修饰素材和调整色调,参数可以按自己的脑洞来,考...
之前分享过一篇关于汽车用户界面的文章:《汽车UI界面怎么做?来看特斯拉和APPLE CARPLAY等高手的案例!》。这次带来的是Adhithya的一系列的关...编者按:今天这篇同时有设计师@Akane_Lee 和工程师同学的现身说法,在动效流行的今天,想制作一个酷炫的动画效果,该如何与工程师沟通才能好好合作不动手呢...现如今UI设计正向着移除不必要元素并聚焦核心功能的方向发展着。核心功能成为当之无愧的UI设计焦点,视觉和细节的设计的重要性也日渐凸显,新时期里的视觉设计不仅...编者按:本文的亮点是结合了今年最热的H5案例,且附上微信号供扫描体验,@腾讯ISUX 将微信案例分门别类,通过它们深入浅出谈谈设计思路与方法 &&gt...编者按:这可能是有史以来最值得阅读转发的一篇UI设计自学指南。作者是个全栈设计师,在临摹了大量教程,掌握了PS、AI等软件后才发现自己对于真正的设计一无所知...编者按:今天这个UI自学系列教程,不聊软件操作,不谈精美效果的实现,我们来聊聊真正有助于你成为设计师的方法。今天第一篇,聊聊什么是UI,学会哪些软件才能成为...UI和交互设计中常常会强调某项设计需要足够的“直觉性”,但是直觉性的设计说来容易,实现却往往差强人意。但是不得不承认,它是目前交互和UI设计的刚需。 仔细想...说道对比,你会想到什么?也许是黑白对比,大小对比,但是对比所存在的形式还有很多,远不止于此。 事实上,对比度是最重要的设计原则之一,它也是每个设计项目中必不...悬浮操作按钮(Floating Action Button,FAB),或者说悬浮按钮,是 Android 应用中最常见的一个控件。悬浮按钮通常是圆形,底部的...
我们的团队
大家在关注
一扫"掌"握!
把好文章收藏到微信
打开微信,扫码分享学设计 优设网 在这里}

我要回帖

更多关于 access数据库管理系统 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信