精华内容
下载资源
问答
  • 作者:天泽 ... 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 ...以下推荐顺序不分先后: ...Ratchet专门针对移动设备优化的CSS框架属于bootstrap家族之中的一员,速度很快,封装...提供了一些常见控件的调用,
    作者:天泽
    链接:https://www.zhihu.com/question/21906128/answer/27283656
    来源:知乎
    著作权归作者所有,转载请联系作者获得授权。

    以下推荐顺序不分先后:
    Ratchet专门针对移动设备优化的CSS框架,属于bootstrap家族之中的一员,速度很快,封装之后基本感觉不出跟Native APP的差别。
    提供了一些常见控件的调用,比如按钮、iphone上的segmented control,开关键,列表视图。
    这是我一朋友翻译的中文版本
    Ratchet中国-Ratchet中文文档、手册、教程、案例

    MUI 国产的,配合官方的IDE Hbuilder使用,在安卓上使用原生转场动画以加速,算是目前在低端安卓设备上表现最好的Hybrid框架,UI控件模仿了上面ratchet,上手很快,不过出来没多久,还不够成熟,实际用的时候会遇到各种小bug,且需要了解一些基本的Native应用知识。

    Ionic 一套比较完善的Hybrid App开发方案,配合Angular JS使用,很强大。官方最近还推出了一个拖拽布局的工具,ionic creator。 整体来说,比较成熟的一个方案。

    Onsen UI
    跟ionic比较类似,也是最好配合Angular JS使用,官方写了几个不错的patterns,可以拿来就用。

    以上几个框架,MUI是封装了HTML5+ API,其余的一般都是配合cordova使用的。
    如果写iOS应用的话,可以不考虑性能问题,看那个上手快就用那个。
    写安卓并且要照顾低端机的话,有两种方案,可以使用MUI的原生动画加速,也可以在cordova基础上整合crosswalk。其中crosswalk就相当于是一个chrome浏览器,性能强悍,跟iOS相比没差距,整合后就可以随心所欲了,但是打包后的APK可能要额外增加15M左右的体积,随便写点什么功能打包后就20M+了。
    展开全文
  • 软件控件的API及使用 是否简单易用是我们需要考虑的一个重要关键。这个问题涉及到两个方面:  是否容易整合到现有应用程序中?  是否容易在新的应用程序项目中应用? 易用性: 界面控件类产品对应用程序的影响...
  • 一,如图所示,在WPF中使用MVVM的框架情况下,由于系统是属于车型下子数据,所以在选择时需要车型下拉框更改时才能绑定系统下拉框数据。 TextChanged,Checked等转换成命令方式。接下来我们就以下控件为...

    一,如图所示,在WPF中使用MVVM的框架情况下,由于系统是属于车型下的子数据,所以在选择时需要车型下拉框更改时才能绑定系统的下拉框的数据。
    在这里插入图片描述

    TextChanged,Checked等转换成命令的方式。接下来我们就以下拉控件为例子,来看看具体的实例:

    View代码:(这边声明了i特性和mvvm特性,一个是为了拥有触发器和行为附加属性的能力,当事件触发时,会去调用相应的命令,EventName代表触发的事件名称;一个是为了使用MVVMLight中 EventToCommand功能。)

    这边就是当ComboBox执行SelectionChanged事件的时候,会相应去执行 SelectCommand 命令。

    1、 首先添加引用

    xmlns:mvvm=“http://www.galasoft.ch/mvvmlight”
    xmlns:i=“clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity”

    2、事件转命令

    
    
    <TextBlock Text="车型
    :" VerticalAlignment="Center"  Margin="40,0,0,5" FontSize="14"/> <ComboBox Name="CboMotorcycleType"
    VerticalAlignment="Center" HorizontalAlignment="Left" Width="180" Margin="10,0,1,0" Padding="5,1,0,0" Height="25"
    VerticalContentAlignment="Center" ItemsSource="{Binding VehicleList}" FontSize="14" Style="{StaticResource EffectComboBoxBorStyle}" DisplayMemberPath="DiagnoseFeedbackMotorcycleType" SelectedItem="{Binding 
    
     
    
     
    
    VehicleCombboxItem}">
    
                        <i:Interaction.Triggers>
    
                        <i:EventTrigger EventName="SelectionChanged">
    
                             <mvvm:EventToCommand Command="{Binding SelectCommand}"/>
    
                        </i:EventTrigger>
    
                     </i:Interaction.Triggers>
    
            
      </ComboBox>
    
    
    

    3、在View Mode中编写SelectCommand事件

    
    
    private RelayCommand selectCommand;
    
           
    /// <summary>
    
           
    /// 车型下拉框修改绑定vin下拉框
    
           
    /// </summary>
    
           
    public RelayCommand SelectCommand
    
           
    {
    
                get
    
                {
    
                    if (selectCommand == null)
    
                        selectCommand = new RelayCommand(() =>
    ExecuteSelect());
    
                    return selectCommand;
    
                }
    
                set { selectCommand = value; }
    
           
    }
    
           
    /// <summary>
    
           
    /// 系统和车型下拉框数据
    
           
    /// </summary>
    
           
    private void ExecuteSelect(){
    
             //。。。。。。。。
    
             //执行绑定系统下拉框数据代码
    
             //。。。。。。。。
    
    }
    
    
    
    展开全文
  • ASP.NET网页代码模型及生命周期

    热门讨论 2009-07-28 14:22:11
    不仅如此,用户还能够创建自定义控件进行应用程序开发以扩展现有的服务器控件的功能。 4.1.1 创建ASP.NET网站 在ASP.NET中,可以创建ASP.NET网站和ASP.NET应用程序,ASP.NET网站的网页元素包含可视元素和页面逻辑...
  • 1、 以下数据结构中不属于线性数据结构的是()。 A、队列 B、线性表 C、二叉树 D、栈 我的答案:C 2、 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。 A、 可行性分析 B、需求分析 ...
  • ASP.NET精品课程+源代码

    千次下载 热门讨论 2009-01-05 20:15:51
    特别是对具体的界面设计要在多媒体教室里进行,教师可以先作一些演示和介绍,引导学生自己去动手设计界面发挥自己的想象力和创造性,至于窗体上各个控件的使用,也可以让学生自己去尝试使用,发挥学生的自主探究能力...
  • 设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...
  • 设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...
  • 以下是三种app框架,从左到右是:原生(find_element)、webview、h5 webview:Android系统中内置了一款高性能 webkit 内核浏览器,在 SDK 中封装为一个叫做WebView组件,属于前端(与用户打交道都叫前端) ...

    1)webView结构和原理:

    以下是三种app框架,从左到右是:原生(find_element)、webview、h5

    webview: Android系统中内置了一款高性能 webkit 内核浏览器,在 SDK 中封装为一个叫做 WebView 组件,属于前端(与用户打交道的都叫前端)

    模拟器上的测试:

    webview控件会被映射为原生控件,类型为view,其中的文本内容会变成content-desc或者text,content-desc对应的属性是accessibility-id

    android6.0会把webview中的控件变成一个带有content.desc属性的view控件

    android9.0会把webview中的控件变成一个带有text属性的view控件

    真机:

    如果app未开启webview的调试属性,是无法分析内部的控件的

    个别手机可能会默认打开此属性,所以默认可能也能访问h5内部的控件

    如果还是访问不到,此时需要让研发人员配合打开webview的调试属性

    webview测试用例:

    不要css定位,直接使用(accessibility-id或者xpath直接定位)

    如果需要css定位及其它的js执行功能:contexts api

    contexts api+selenium css定位

    webview在APP中的体现:webkit.WebView就是个webview组件

    2)webview技术原理

    (1)adb -s 设备编号 shell cat /proc/net/unix | grep webview  #查找所有的webview进程,设备编号是指adb devices命令查出来的编号

     (2)adb -s 设备编号 forwad tcp:7777 localabstract:webview_devtools_remote_25352   #执行该命令的意思:访问本机777端口相当于访问webview_devtools_remote_25352

    (3)adb forward --list

    (4)curl http://127.0.0.1/json/version

    3)显示等待

    #显示等待需要的库
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    #代码段1
    WebDriverWait(cls.driver,20).until(EC.presence_of_element_located((MobileBy.XPATH,"//*[@text='交易']")))
    cls.driver.find_element_by_xpath("//*[@text='交易']").click()
    
    #代码段2
    element1=self.driver.find_element_by_accessibility_id("立即开户")
    WebDriverWait(self.driver,10).until(EC.presence_of_element_located((MobileBy.ACCESSIBILITY_ID,"立即开户")))
      
    

    示例代码:

    from appium import webdriver
    from appium.webdriver.common.mobileby import MobileBy
    from appium.webdriver.webdriver import WebDriver
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    #
    
    
    class Testxueqiuan(object):
        driver = WebDriver  # 不写这句,识别不出find方法
    
        @classmethod
        def setup_class(cls):  # 整体初始化
            print('setup class在当前class中只执行一次')
            # cls.driver = cls.installapp()  # 加上cls变成类变量
            # el1 = cls.driver.find_element_by_id("com.xueqiu.android:id/user_profile_icon")
            # el1.click()  # 到点击登陆的页面
            cls.driver=cls.restartapp()
            WebDriverWait(cls.driver,20).until(EC.presence_of_element_located((MobileBy.XPATH,"//*[@text='交易']")))
            cls.driver.find_element_by_xpath("//*[@text='交易']").click()
    
        def setup_method(self):  # 每一个方法
            print('setup method在每个方法执行前中执行一次')
            self.driver = Testxueqiuan.driver  # 局部变量
            self.driver.find_element_by_xpath("//*[@text='交易']").click()
    
        """
        def test_login_weixn(self):
            el3 = self.driver.find_element_by_id("rl_login_by_wx")  # 选择登陆的页面
            el3.click()
        """
    
        def test_webview_a(self):
            self.driver.find_element_by_accessibility_id("A股开户").click()
            element1=self.driver.find_element_by_accessibility_id("立即开户")
            #ef __init__(self, driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None)
            WebDriverWait(self.driver,10).until(EC.presence_of_element_located((MobileBy.ACCESSIBILITY_ID,"立即开户")))
    
    
        @classmethod
        def installapp(cls) -> WebDriver:
            caps = {}
            # caps['app']=''    #安装apk
            caps["platformName"] = "android"
            caps["deviceName"] = "demo"
            caps["app"] = "com.xueqiu.android"
            caps["appActivity"] = "view.WelcomeActivityAlias"
            #caps["udid"] = "*****"
            # 解决第一次启动时赋值权限
            caps["autoGrantPermissions"] = "true"
    
            driver = webdriver.Remote("http://localhost:5723/wd/hub", caps)
            driver.implicitly_wait(10)  # 隐式等待
            return driver
    
        @classmethod
        def restartapp(cls) -> WebDriver:
            caps = {}
            caps["platformName"] = "android"
            caps["deviceName"] = "demo"
            caps["app"] = "com.xueqiu.android"
            caps["appActivity"] = "view.WelcomeActivityAlias"
            caps["autoGrantPermissions"] = "true"
            caps['noreset'] = 'true'  # 这个选项为true,保留之前的操作数据
    
            driver = webdriver.Remote("http://localhost:5723/wd/hub", caps)
            driver.implicitly_wait(10)  # 隐式等待
            return driver
    
        def teardown_method(self):
            self.driver.back()

     

    展开全文
  • 在DoModal中主要对窗体包含类做初始化,但这个部分代码是属于MFC内部封装, 大部分人会感到措手不及,甚至疑问是否MFC框架出现BUG,不可否认MFC存在一些缺点, 但缺点并不是BUG,关于这个地方会报错...

    在DoModal中主要对窗体包含的类做初始化,但这个部分的代码是属于MFC内部封装的,

    大部分人会感到措手不及,甚至疑问是否MFC框架出现BUG,不可否认MFC存在一些缺点,

    但缺点并不是BUG,关于这个地方会报错,调进去后可发现大部分是非法引用句柄、控件变量、资源等等,

    但由于工程编译没问题,只在运行时报错,因此可能排错比较麻烦,经调试,

    有以下几类原因:

    1)由于窗体原来的某个组件删掉了,相应的资源也没了,但相关的变量却没有删除,导致程序运行时引用的变量无非找不到资源而报错。

    2)同样是某个组件删掉了,但在一些手动代码中引用资源号而报错。

    3)使用原生API创建多线程CreateThread,并在子线程中引用主线程的窗体资源,MFC需要使用窗体线程类来实现多线程操作。

    这里说明一下,多线程是一个连具有几十年的开发操作系统经验的工程师都需要不断学习的知识点,

    每一个开发框架都会提供一个类似BeginThread的函数,该函数对系统多线程API进行封装,同时设置框架内部的一些系统变量,

    这些系统变量会影响内存管理器的工作模式,如果直接使用CreateThread,框架就没有这些功能,会导致使用的框架不是多线程模

    式的,最终导致即使两个在地址上相差很“远”的全局变量都会互相影响,不管是MFC还是delphi的VCL,都一样,这是内存管理器

    实现时的一个折中方案,需要通过BeginThread来避免,当然BeginThread是较低层的函数,而面向对象的框架都一般会提供一

    系列的线程类供不同场景使用。

    展开全文
  • 设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
  • Internet进行了重新设计,使用的是NET框架的类库;C#不再提供对指针类型的支持,使得 程序不能随便访问内存地址空间,从而更加健壮;C#不再支持多重继承,避免了以往类层次 结构中由于多重继承带来的可怕后果。NET框架为C#...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    17.1 .Net 框架结构提供 I/O 方式 .215 17.2 文件存储管理 .217 17.3 读 写 文 件 .222 17.4 异步文件操作 .227 17.5 小 结 .234 第十八章 高 级 话 题 .235 18.1 注册表编程 .235 18.2 在 C #代码...
  • 部分 Material Design 控件的使用 3. 一些流行框架的简单使用(DataBinding、Retrofit、Realm、Glide 等) 4. Android 和 js 之前的简单交互 5. 夜间模式的实现 6. 搜索功能的实现对初学者来说,还是一个可以...
  • C#微软培训资料

    2014-01-22 14:10:17
    17.1 .Net 框架结构提供 I/O 方式 .215 17.2 文件存储管理 .217 17.3 读 写 文 件 .222 17.4 异步文件操作 .227 17.5 小 结 .234 第十八章 高 级 话 题 .235 18.1 注册表编程 .235 18.2 在 C #代码...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
    6.8 秘诀:视图框架的处理 173 6.8.1 调整大小 174 6.8.2 CGRect和中心 175 6.8.3 其他实用工具方法 176 6.9 秘诀:移动带边界视图到任意位置 179 6.10 秘诀:视图变形 180 6.11 显示和交互特性 183 6.12 ...
  • 1、绘制接线图:在C#中调用Visio控件,并能将绘制电力系统图相关Visio控件调用到该项目中,能绘制、打开、另存为。 2、潮流计算:因为网络节点不一定,故该功能先确定网络节点,并确定PQ节点个数,在依次录入线路...
  • C++MFC教程

    热门讨论 2013-05-21 13:37:15
    更重要的是理解并能运用C++的各种特性,这些在以后的开发中都会有很大的帮助,特别是利用MFC进行开发的朋友对C++一定要能熟练运用。 2、理解Windows的消息机制,窗口句柄和其他GUI句柄的含义和用途。了解和MFC各个...
  • java面试宝典

    2013-02-28 16:04:01
    95、以下哪些属于Session方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、Hibernate是如何延迟加载? 22 98、Hibernate中怎样实现类之间关系?(如:一对多、多对多关系) 22 99、说下Hibernate...
  • 千方百计笔试题大全

    2011-11-30 21:58:33
    95、以下哪些属于Session方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、Hibernate是如何延迟加载? 22 98、Hibernate中怎样实现类之间关系?(如:一对多、多对多关系) 22 99、说下Hibernate...
  • 由于我赶视频制作,代码都是临时写的非常杂乱有很多dirty code,因此仓库中的是所有驱动调通之后的模板代码,可以自己基于这个框架自由开发。 APP应用代码我在整理中慢慢也会更新出来。 3. Visual Studio模拟器 &...
  • View的OnClick事件在BindingAdapter中方法使用RxView防重复点击,再把事件回调到ViewModel层,实现xml与ViewModel之间数据和事件的绑定(框架里面部分扩展控件和回调命令使用的是@kelin原创的)。 基类封装 专门针对...
  • 看到网上有个方案说:主项目负责加载组件,由于主项目和组件之间是隔离的,那么主项目如何调用组件ApplicationLike的生命周期方法呢,目前采用的是基于编译期字节码插入的方式,扫描所有的ApplicationLike类(其有一...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

空空如也

空空如也

1 2
收藏数 35
精华内容 14
关键字:

以下属于框架控件的是