首页 文章 精选 留言 我的

精选列表

搜索[原生UI],共10004篇文章
优秀的个人博客,低调大师

跨平台原生 UI 框架 AtomUI OSS 5.0.0 发布

很高兴在这里宣布 AtomUI OSS 5.0.0 版本发布,本次更新给各位开发者朋友带来了新的 Steps 控件以及优化对 Application 类的控制权,同时修复了若干 BUG。 新特性 新增 Steps 控件 数据表格新增操作提示器 优化 优化 NavMenu 控件结构,重写底层结构,支持用数据源绑定的方式生成导航菜单 优化对 Application 的接管,改用 IThemeManager 的方式,方便Prism 等框架进行整合 优化 combobox 控件的 Popup,支持开发者自己指定显示条目的数量 优化 CircleProgress,现在支持自己指定成功和失败的图标 优化 SelectableTextBlock 控件 优化 LoadingIndicator,重名为 Spin,并且彻底重写 Bug 修复 修复在苹果系统下编译方法不存在的问题 修复点击 DataGrid 的行标题报异常 修复系统字体干扰问题 修复 Button 设置字体为斜体的时候,部分字母显示不全 修复 ColorPicker 关闭色彩选择框后,再打开就失效了 修复 atom:Window 的 IsTitleBarVisible 属性无效 关于 5.0.0 版本的说明 开发者朋友可能比较疑惑,为什么 AtomUI OSS 的版本一下飙升到 5.0,这里我给大家进行说明一下。因为 AtomUI OSS 本质上是 Ant Design 5.0 设计语言的 Avalonia/.NET 实现,为了降低对开发者的解释成本,AtomUI OSS 从这个版本开始锚定 Ant Design 的主版本。 例如: AtomUI OSS 5.0 -> Ant Design 5.0 AtomUI OSS 6.0 -> Ant Design 6.0 AtomUI OSS 7.0 -> Ant Design 7.0 并且以此类推 AtomUI OSS 发展离不开开发者朋友的支持和帮助,如果您在使用过程中,发现任何问题欢迎在我们的开发者群和 Gitee 或者 Github 上给我们留下宝贵的意见,谢谢! 北京秦派软件科技有限公司 (Qinware TechnologiesCo., Ltd.)是一家致力于开发生产力工具软件的技术公司,成立之初立志要在工具软件领域深耕,践行精益求精的研发精神,努力推出优质的生产力工具软件服务国内外的开发者,提升开发者的工作效率,同时创造出商业价值和社会价值。

优秀的个人博客,低调大师

layui 2.6.8 发布,原生态前端 UI 框架

更新日志: # 2.6.8 [重写] sort 方法,以便对数字、非数字及混合类等所有内容的排序进行支持 [新增] dropdown 组件的 align 参数,用于控制下拉菜单水平对齐方式(支持 left、center、right) [新增] table 组件的 escape 参数,用于是否开启 xss 字符过滤(默认 false) [加强] table 组件的自定义模板功能,返回 LAY_COL 字段,可得到当前列的表头配置信息 [加强] form 组件对验证不通过的表单项自动定位到可视区域,不再是只对输入框自动获焦定位 #I3O5TC [加强] form 组件对 url 的验证 [修复] form 相关 css 的 layui-checkbox-disabled 书写错误(之前为 disbaled) #I1NGDC [修复] form 组件的 select option 内容出现换行时的样式异常问题 #I3T5ZC [修复] colorpicker 颜色选择组件在 Firefox 下选择颜色时的若干兼容问题 #I3POP2 [加强] colorpicker 组件的坐标定位计算方式 [修复] 低版本 ie 若干报错问题 该版本是 2.6.x的一个收尾版,基本很稳定,推荐官网下载升级(www.layui.com)。 那么下一个版本 2.7也将会开启另外一个篇章

优秀的个人博客,低调大师

layui 2.6.7 发布,原生态 Web UI 组件库

更新日志: [新增] layui._typeof(operand) / layui._isArray(obj) 两个基础方法。 分别为"获取详细数据类型"、"对象是否为泛数组" [重写] layui.each() 基础方法,以兼容各种对象遍历 [修复] layui.sort(obj) 基础方法,在比较某些值相等时出现排序异常的问题 [修复] form 组件当 layui-form 元素出现层级嵌套,其提交的表单未按当前层级的问题 [修复] layer.photos 层在 iframe 页面中通过 parent 无法弹出的历史弥久问题 [修复] laydate 组件范围选择的若干问题 [优化] upload 组件 before 回调,若 return false,则表明阻止上传 #!55 [优化] element nav 鼠标移至滑动块致其闪动的问题 [优化] 若干样式细节 Gitee 主页:https://gitee.com/sentsin/layui

优秀的个人博客,低调大师

layui 2.6.6 发布,原生态 Web UI 组件库

本次更新日志 [优化] layer 组件容器构建的核心代码,以解决自 2.6.0 以来在特殊场景下存在的某些异常问题 [优化] layer 组件当点击最小化时,让遮罩消失,窗口还原时恢复遮罩 [新增] layer 组件的 minStack 参数,用于控制最小化后是否默认堆叠在左下角 [新增] element nav 组件水平导航的子级菜单的两种对齐方式:右对齐,居中对齐 [新增] element nav 组件的 lay-bar="disabled" 属性,用于禁用滑块跟随功能 [优化] element nav 组件各种样式细节,其中包括下拉图标、子菜单等 [优化] element nav 组件在垂直导航场景时的滑块跟随功能 [优化] element tab 组件 tabAdd 方法,可将任意额外参数 {key} 组成 lay-{key}="{value}" 属性 [优化] element tab 组件当标题栏包含 a 标签时,点击 tab 切换,但未触发 a 标签跳转的问题 [新增] laydate 组件的 isPreview 参数,用于控制是否显示当前选择值的预览(默认 true) [优化] laydate 组件的日期范围选择,因左右日期面板独立,固取消范围区间标注,增加开始-结束文本预览 [优化] laydate 组件的 range 参数,可支持传入数组,用于分别指定开始日期和结束日期的选择器 [优化] laydate 组件的时间范围选择,初始结束时间为 23:59:59 [优化] laydate 组件的当前日期不在设定的最小(min)和最大(max)日期内,则自动校正面板可选的初始日期 [优化] laydate 组件的选中完毕的赋值逻辑,对非 input 元素,如果存在子元素,则不进行默认赋值操作,由回调去处理 [优化] laydate 组件之前版本一直存在的初始处全局事件重复绑定的问题 [修复] laydate 组件当开启范围选择,未触发 change 回调的问题 [修复] laydate 组件在 ie11 因 laydate-day-mark 的 height:100% 导致的异常 [优化] upload 组件的多文件上传,可更好的对每个文件显示上传进度 [优化] flow 组件的 flow.lazyimg() 方法,对图片懒加载支持占位图显示(占位图 src,预加载图 lay-src) [优化] util 组件的 util.toDateString((msec, format) 方法,可对第一个参数进行自动纠正和毫秒数无效的提示 [新增] 对名为 LAYUI_GLOBAL 的全局对象的识别,当对 layui.js 本身进行动态加载等特殊场景下,可通过该对象更好地解决部分组件依赖文件(css)的路径问题 [优化] 底层 layui.each() 核心代码 [优化] layout admin 大框架布局,可适配各个终端 [提示] Google 在近期发布的 Chrome v90 第三个维护版本 Chrome 90.0.4430.93,修复了上两个版本因关闭打印窗口导致的浏览器卡顿问题(之前 layui table 的打印亦受此影响)

优秀的个人博客,低调大师

Android UI学习 - ListView

ListActivity ListActivity是一个专门显示ListView的Activity类,它内置了ListView对象,只要我们设置了数据源,就会自动地显示出来。 使用custom view for screen layout 虽然ListActivity内置了ListView对象,但我们依然可以使用custom view,通过在onCreate()里面调用setContentView(resources id)。 不过要注意的是,在自定义的Layout里面,要设置ListView对象的id为"@android:id/list";在Java代码里使用android.R.id.list。 下面的例子,通过添加一个id为android:empty的TextView,当ListView里面没有data的时候,就会显示"No data"。 自定义的View (listview.xml): <? xml version ="1.0" encoding ="utf-8" ?> < LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:orientation ="vertical" android:layout_width ="fill_parent" android:layout_height ="fill_parent" > < ListView android:id="@id/android:list" android:layout_width ="fill_parent" android:layout_height ="fill_parent" android:layout_weight="1" /> < TextView android:id="@id/android:empty" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="No data" android:textColor ="#ff0000" /> </ LinearLayout > 加载Layout: @Override public voidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview); //没有设置data source } Row Layout 官方提供了多种ListItem的Layout (R.layout),以下是较为常用的,更多的请查看API DOC的R.layouthttp://androidappdocs.appspot.com/reference/android/R.layout.html: android.R.layout.simple_list_item_1 一行text android.R.layout.simple_list_item_2 一行title,一行text android.R.layout.simple_list_item_single_choice 单选按钮 android.R.layout.simple_list_item_multiple_choice 多选按钮 android.R.layout.simple_list_item_checked checkbox 我们可以自定义自己的Layout (list_item.xml): <? xml version ="1.0" encoding ="utf-8" ?> < LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:orientation ="horizontal" android:layout_width ="fill_parent" android:layout_height ="fill_parent" > < ImageView android:id ="@+id/icon" android:layout_width ="48dip" android:layout_height ="48dip" /> < TextView android:id ="@+id/text" android:layout_gravity ="center_vertical" android:layout_width ="0dip" android:layout_weight ="1" android:layout_height ="wrap_content" /> </ LinearLayout > 使用时,以R.layout.list_item引用就行了。可以参考http://androidappdocs.appspot.com/resources/tutorials/views/hello-listview.html。 绑定数据 通过调用SetListAdapter(ListAdapter adapter)就可实现。我们可以implements ListAdapter来自定义自己的数据源。API内置了几个implements ListAdapter的Adapter:BaseAdapter,SimpleAdapter(以Map的形式存储静态数据),SimpleCursorAdapter(用于游标查询的结果)等等。通常我们更多地extends BaseAdapter来编写自己的Adapter类,因为BaseAdapter类是其他Apdater类的基类。扩展BaseAdapter类一般都需要重写以下方法: int getCount() 获取当前Adapter的Items数目 Object getItem(int position) 获取相应position的Item long getItemId(int position) 获取相应position的Item在List中的row id View getView(int position, View convertView, ViewGroup parent) 获取在指定position所要显示的data的View 详细内容可以查看BaseAdapter类的继承android.widget.Adapter的方法,有时也需要重写ListAdapter的boolean isEnabled(int position)来实现某些效果。 接下来看看几个绑定数据的例子: 1. 使用ArrayAdapter public voidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //参考ArrayAdapter的构造函数 setListAdapter( newArrayAdapter<String>( this, android.R.layout.simple_list_item_1, mStrings)); //在ListView上输入字母,就会自动筛选出以此内容开头的Item getListView().setTextFilterEnabled( true); } privateString[] mStrings = { "A", "Android", "机器人", "Google"}; 2. 使用SimpleCursorAdapter 这是Sample里面List3例子,通过读取通讯录android.provider.Contacts.Phones的资料,显示出来。 protected voidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Get a cursor with all phones Cursor c = getContentResolver().query(Phones.CONTENT_URI, null, null, null, null); startManagingCursor(c); // Map Cursor columns to views defined in simple_list_item_2.xml ListAdapter adapter = new SimpleCursorAdapter( this, android.R.layout.simple_list_item_2, c, newString[] { Phones.NAME, Phones.NUMBER }, new int[] { android.R.id.text1, android.R.id.text2 }); setListAdapter(adapter); } 3. ListItem为单选按钮 public voidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //参考ArrayAdapter的构造函数 setListAdapter( newArrayAdapter<String>( this, android.R.layout.simple_list_item_single_choice, mStrings)); finalListView listView = getListView(); listView.setItemsCanFocus( false); listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); //设置单选模式 } privateString[] mStrings = { "A", "Android", "机器人", "Google"}; 4. ListItem为多选按钮 把例子3的设置为android.R.layout.simple_list_item_multiple_choice以及选择模式ListView.CHOICE_MODE_MULTIPLE。 更多的例子可以参考官方的Sample,在此列出相关List的示例说明: List1 - 使用ArrayAdapter并setTextFilterEnabled(true) List2 - 使用SimpleCursorAdapter读取通讯录People.NAME List3 - 使用SimpleCursorAdapter读取通讯录Phones,两行显示Item List4 - 使用自定义Adapter以及自定义ItemView List5 - 带有separator的ListView,通过自定义Adapter,重写boolean isEnabled(int position) List6 - 使用自定义Adapter以及自定义ItemView,可伸展隐藏内容 List7 - 使用SimpleCursorAdapter读取数据 List8 - 展现使用setEmptyView效果 List9 - 涉及OnScrollListener List10 - ListItem为单选按钮 List11 - ListItem为多选按钮 List12 - 可以动态添加ListItem List13 - 如何加快操作显示,during scrolls or flings的时候 List14 - 如何编写高效的List Adapter 其中List14,官方告诉我们: To work efficiently the adapter implemented here uses two techniques: * - It reuses the convertView passed to getView() to avoid inflating View when it is not necessary * - It uses the ViewHolder pattern to avoid calling findViewById() when it is not necessary 还告诉了我们 ViewHolder类的作用: * The ViewHolder pattern consists in storing a data structure in the tag of the view returned by * getView(). This data structures contains references to the views we want to bind data to, thus * avoiding calls to findViewById() every time getView() is invoked. 另外在以上的例子里面了解到,使用自定义Adapter,当数据发生变化后需要调用notifyDataSetChanged()来刷新ListView,但在List12的例子,使用ArrayAdapter却没有调用这方法,而随后自己写代码,在发生的异常里面了解到BaseAdapter,ArrayAdapter是会调用自己的notifyDataSetChanged()。可以查看后面的文章《有关Android线程的学习》里面的例子! ListView的事件响应 通常我们响应ListItem的点击事件:protected void onListItemClick(ListView l, View v, int position, long id),在此不详细讲了,理解该函数里面的参数意义就行了。 本文转自 Icansoft 51CTO博客,原文链接: http://blog.51cto.com/android/336162

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册