c#水晶报表教程

c# vs2013 制作水晶报表并导出为 pdf 我这里是一个已经画好的表格,在页眉部分用到了分组功能,(为了让表格头不循环,表格体 列要循环显示,就将表的id作为分组名 来达到这样的目的)。在.rpt报表文件页面,先将刚刚创建的DataSet的表导进来。创建好后,在页面右击Add-DataTable添加表,更改datatable的名称,同样在表内右击Add-Column添加列,输入列明(自定义)我的连接-DataSet1-Packing,点击>按钮,将该datatable表导进来,确定。一两年前接触的,当时没有记录,现在把他写下来。 阅读详情

c#水晶报表教程

 

水晶报表是一个功能强大的报表工具,现在已经被Microsoft Visual Studio 2005(下文以VS2005简称)集成在一起。喜欢水晶报表的朋友可以方便使用了。我把水晶报表在vs2005的使用方法总结一下,供大家参考。
首先介绍一下我用的软件环境:Microsoft Visual Studio 2005;Microsoft SQL Server 2005
【数据用例】
服务器:SQLEXPRESS
数据库名:Test
数据库表:T

【说明】
水晶报表在应用时分两种方法,分别是拉模式(PULL)、推模式(PUSH)。拉模式:在水晶报表生成时的 数据源是从水晶报表文件中的SQL语句从数据库中提取的,在编程时不用重写SQL语句,但要加上登录信息(具体方法,后面介绍)。推模式:在水晶报表生成 时的数据源,是用编程时重写水晶报表中SQL语句而生成的dataset对像。也就是说,推模式是用dataset组装水晶报表。
水晶报表组件介绍。水晶报表在VS2005中有两种组件,在WEB项目是分别是CrystalReportSource,CrystalReportViewer。在FORM项目里是分别是crystalReport,CrystalReportViewer。
CrystalReportSource,crystalReport是水晶报表的数据提供者;CrystalReportViewer是水晶报表的浏览器。另外还要介绍一下水的报表的文件是以rpt为扩展名的文件,该文件可以用VS2005生成。
下面分别介绍具体操作方法:
拉模式(PULL):
在拉模式中如要在水晶报表中的SQL语句加上条件参数时要用{?参数名}方式给出。例:“Select T1, T2, T3 FROM T Where T1=''{?parm}''” parm就是参数名

以下例子中所用到的水晶报表文件中使用的SQL语句是“Select T1, T2, T3 FROM T Where T1=''{?parm}''” parm就是参数名。
【WEB方式下】
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
    ///<summary>
    ///功能:拉模式提取水晶报表
   ///个人主页:
http://www.dzend.com/
    ///</summary>
    ///<param name="sender"></param>
    ///<param name="e"></param>
    protected void Button_pull_Click(object sender, EventArgs e)
{
// CrystalReport.rpt是水晶报表文件的名称;CrystalReportSource1是从工具箱加到页面上的水晶报表数据源对像。

        CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport.rpt"));
// SetDatabaseLogon 拉模式中必须用这个方法来设置登录信息,参数一:用户名;参数二:密码;参数三:服务器;参数四:数据库名
        CrystalReportSource1.ReportDocument.SetDatabaseLogon("sa", "123456", @"SYWZSWL\SQLEXPRESS", "Test");
//给水晶报表传参数,参数一:是参数名,参数二:参数值;
        CrystalReportSource1.ReportDocument.SetParameterValue("Title", "这是一个测试报表");
        CrystalReportSource1.ReportDocument.SetParameterValue("Parm", "1");
//绑定水晶报表数据源。
        CrystalReportSource1.DataBind();
// CrystalReportViewer1是水晶报表浏览器,下面是给该浏览器赋上对像
        CrystalReportViewer1.ReportSource = CrystalReportSource1;
        CrystalReportViewer1.DataBind();

    } 【FORM方式下】
//在 FORM方式下代码同WEB方式,用crystalReport控件换掉了CrystalReportSource;用 crystalReportViewer换掉了CrystalReportViewer;这两个控件都可以在工具箱里找到。同时在编程时去掉 DataBind()方法。
        private void Form1_Load(object sender, EventArgs e)
        {

            crystalReport1.Load(Application.StartupPath + "CrystalReport.rpt");

            crystalReport1.SetDatabaseLogon("sa", "123456", @"SYWZSWL\SQLEXPRESS", "Test");

            crystalReport1.SetParameterValue("Title", "这是一个测试报表");
            crystalReport1.SetParameterValue("Parm", "1");
            crystalReportViewer1.ReportSource = crystalReport1;

        }


推模式(PUSH):
在推模式中编程组装的Dataset里的SQL语句中的字段要与水晶报表里的SQL语句字段一致。简单的说,推模式中的水晶报表是个模板,把在设计器里报表的格式设好后,再组装DataSet就可以生成报表了。


【WEB方式下】

using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
using System.Data.SqlClient;
       protected void Button_push_Click(object sender, EventArgs e)
    {
        string sql = "Select T1, T2, T3 FROM T where T1=''a''";
        string DBConfig_sql
=@"Data Source=SYWZSWL\SQLEXPRESS;Initial Catalog=Test;User ID=sa;Password=123456";
        DataSet ds = new DataSet();
            SqlConnection sqlCon = new SqlConnection(DBConfig_sql);
            SqlCommand sqlCmd = new SqlCommand(sql, sqlCon);
            SqlDataAdapter sqlAd = new SqlDataAdapter();
            sqlAd.SelectCommand = sqlCmd;
            sqlAd.Fill(ds, "sql");
        CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport.rpt"));  
        //注意此处必需指明Dataset中的表的名称,否则会提示“您请求的报表需要更多信息.”
CrystalReportSource1.ReportDocument.SetDataSource(ds.Tables["sql"]);
//{?}中的参数可以不用赋值,即使赋了值也不起作用。
       // CrystalReportSource1.ReportDocument.ParameterFields["Parm"].CurrentValues.AddValue("1234567");
        CrystalReportSource1.ReportDocument.ParameterFields["Title"].CurrentValues.AddValue("这时推模式的报表样例!");
        CrystalReportSource1.DataBind();

        CrystalReportViewer1.ReportSource = CrystalReportSource1;
         CrystalReportViewer1.DataBind();
    }
【FORM方式下】
private void Form1_Load(object sender, EventArgs e)
        {
            //推模式
            string sql = "Select T1, T2, T3 FROM T where T1=''a''";
            string DBConfig_sql = @"Data Source=SYWZSWL\SQLEXPRESS;Initial Catalog=Test;User ID=sa;Password=123456";
            DataSet ds = new DataSet();
            SqlConnection sqlCon = new SqlConnection(DBConfig_sql);
            SqlCommand sqlCmd = new SqlCommand(sql, sqlCon);
            SqlDataAdapter sqlAd = new SqlDataAdapter();
            sqlAd.SelectCommand = sqlCmd;
            sqlAd.Fill(ds, "sql");
            crystalReport1.Load(Application.StartupPath + "CrystalReport.rpt");
            crystalReport1.SetDataSource(ds.Tables["sql"]);
//{?}中的参数可以不用赋值,即使赋了值也不起作用。
            // CrystalReportSource1.ReportDocument.ParameterFields["Parm"].CurrentValues.AddValue("1234567");
            crystalReport1.ParameterFields["Title"].CurrentValues.AddValue("这时推模式的报表样例!");

            crystalReportViewer1.ReportSource = crystalReport1;
}


------------------------------------------------------------------------------------------------------------------------------------------------------------


水晶报表编程使用方法

1.怎么让组页眉,在同一组中每一页都显示
     插入组的时候,在公用选项页面选中“在每个页面上重复组页眉”
2.如何向 CrystalReportViewer 和 ReportDocument 传递参数……
     一、CrystalReportViewer
             通过 CrystalReportViewer.ParameterFieldInfo 属性……
            1、crystalreportviewer 成员
                  公共实例属性
                  ParameterFieldInfo(从 CrystalReportViewerbase 继承) ParameterFields。获取或设置参数字段集合。
     二、reportdocument
             通过 ReportDocument.DataDefinition.ParameterFields 属性……
            1、reportdocument 成员
            公共实例属性
            DataDefinition DataDefinition。获取 DataDefinition 对象。
            2、datadefinition 成员
            公共实例属性
            ParameterFields ParameterFieldDefinitions。获取 ParameterFieldDefinitions 集合。
     三、参数字段运行时自定义(crystalreportviewer)
             参考:
            设置参数 | Windows 窗体查看器的绑定选项 | Web 窗体查看器的绑定选项
            可支持用户在 Crystal 报表中通过参数进行输入。这种参数有多种用途。例如:
            使参数基于数据库字段并允许用户指定该字段的值,以便对报表中的数据进行筛选。
            使用参数字段将条件格式应用于报表。
            使用参数字段来定义排序顺序。
            下列示例说明如何在运行时通过代码设置参数字段值。此例解释了如何设置两个不同的参数:第一个是多值离散参数,第二个是区域值参数。
在运行时修改参数字段
[c#]
// 声明将参数传递给
//查看器控件所需的变量。
ParameterFields paramFields = new ParameterFields ();
ParameterField paramField = new ParameterField ();
ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
ParameterRangeValue rangeVal = new ParameterRangeValue ();
// 第一个参数是具有多个值的离散参数。
// 设置参数字段的名称,它必须
//和报表中的参数相符。
paramField.ParameterFieldName = "客户姓名";
// 设置第一个离散值并将其传递给该参数。
discreteVal.Value = "AIC Childrens";
paramField.CurrentValues.Add (discreteVal);
// 设置第二个离散值并将其传递给该参数。
// discreteVal 变量被设置为新值,这样,以前的设置
//就不会被覆盖。
discreteVal = new ParameterDiscreteValue ();
discreteVal.Value = "Aruba Sport";
paramField.CurrentValues.Add (discreteVal);
// 将该参数添加到参数字段集合。
paramFields.Add (paramField);
// 第二个参数为区域值。paramField 变量
//被设置为新值,这样,以前的设置就不会被覆盖。
paramField = new ParameterField ();
// 设置参数字段的名称,它必须
//和报表中的参数相符。
paramField.ParameterFieldName = "客户 ID";
// 设置范围的开始值和结束值并将该范围传递给
//该参数。
rangeVal.StartValue = 42;
rangeVal.EndValue = 72;
paramField.CurrentValues.Add (rangeVal);
// 将第二个参数添加到参数字段集合。
paramFields.Add (paramField);
// 将参数字段集合放入查看器控件。
crystalReportViewer1.ParameterFieldInfo = paramFields;
更多资料请查看:
http://www.devedu.com/develop/2005-4-8/12305/default.aspx
3.设置Crystal Report Viewer 的外观
     设置 Crystal Report Viewer 的属性:
     BestFitPage 布尔值。获取或设置页面视图是大小合适还是用滚动条进行裁剪。
     这个地方设为false后,设置Crystal Report Viewer 的宽度就可以去除滚动条了。
     说明 :目前有两种情况,其中在从 Web 窗体查看器进行打印时会出现问题:
     BestFitPage属性为默认值“真”(即,没有垂直或水平滚动条),但PageZoomFactor大于 100。
     BestFitPage 设置为“假”,Web 窗体查看器的高度小于报表页的高度(即,有垂直滚动条),而查看器的宽度大于或等于报表页的宽度(即,没有水平滚动条)。
     配合设置 Width、Height 来实现无空白和无滚动条的显示!
     DisplayGroupTree 布尔值。获取或设置树视图是可见还是隐藏。
    DisplayPage 布尔值。获取或设置工具栏是可见还是隐藏。
    DisplayToolbar 布尔值。获取或设置工具栏上的转到页按钮是可见还是隐藏。
    PageZoomFactor Int32。获取或设置报表的缩放因数。

    SeparatePages 布尔值。获取或设置报表页是分开还是连接。
    PageToTreeRatio Float64。设置组树与报表视图之间的大小比例。
4.控制工具栏的按钮:
    设置 Crystal Report Viewer 的属性:
    HasGotoPageButton 布尔值。获取或设置转到页按钮的可见性。
    HasLevelUpButton 布尔值。获取或设置工具栏上的转到上一页按钮是可见还是隐藏。
    HasPageNavigationButtons 布尔值。获取或设置工具栏上的页面导航按钮是可见还是隐藏。
    HasRefreshButton 布尔值。获取或设置工具栏上的刷新按钮是可见还是隐藏。
    HasSearchButton 布尔值。获取或设置工具栏上的搜索按钮是可见还是隐藏。
    HasZoomFactorList 布尔值。获取或设置工具栏上的缩放因数列表是可见还是隐藏。
5.在 Web 页面里的布局:
    在“设计视图”,修改 CrystalReportViewer 的 Width、Height 属性。
    切换到窗体的“HTML 视图”,修改 style 属性。
<CR:CrystalReportViewer id="CrystalReportViewer1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server" Width="350px" Height="50px" EnableDrillDown="False" DisplayGroupTree="False"></CR:CrystalReportViewer>
6.除水晶报表的的公司LOGO
    将 Crystal 公司的Logo 文件替换或删除……
    (1)如果是用 VS.NET 里自带的水晶报表
C:\Program Files\Microsoft Visual Studio .NET\Crystal Reports\Viewers\images\ToolBar\logo.gif
    (2)如果是用水晶报表 9.2
C:\Program Files\Common Files\Crystal Decisions\2.0\crystalreportviewers\images\toolbar\crlogo.gif
7.替换水晶报表里的各种图标和图片
    (1)如果是用 VS.NET 里自带的水晶报表
C:\Program Files\Microsoft Visual Studio .NET\Crystal Reports\Viewers\images
    (2)如果是用水晶报表 9.2
C:\Program Files\Common Files\Crystal Decisions\2.0\crystalreportviewers\images
8.关于打印的时候安装插件:
    在 Crystal Reports 的更新版本中,您可以使用新的 CrystalReportViewer.PrintMode 属性来指定打印模式。其中包含两个选择项:ActiveX 和 PDF。
   当属性设置为PrintMode.PDF 时,报表会在WEB服务器上导出为PDF,然后以数据流传送到浏览器,使用者可以利用选项,直接打印到打印机。这个选项是跨平台相容的。
当属性设置为PrintMode.ActiveX时,ActiveX 打印控制项允许使用者将报表直接打印到本地打印机

先下载
http://support.businessobjects.com/CRforVS2005/PrintControl.cab,放到自已的服务器上。

若要在 Crystal Reports for Visual Studio 2005 网站显示 cab 包,需将下列 xml 语句加入网站的 web.config 文件(必须加到<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">之后,也就是最前面):
<configSections>
<sectionGroup name="businessObjects">
   <sectionGroup name="crystalReports">
    <section name="printControl" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null"/>
   </sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
   <printControl>
    <add key="url" value="
http://192.168.88.91/PrintControl.cab"/>   --这里改为.CAB包所在地址
   </printControl>
</crystalReports>
</businessObjects>
注意:只有 Internet Explorer 才会支持 ActiveX 模式。若从非 Internet Explorer 的浏览器 (FireFox、Safari、Mozilla 等) 打印,将会恢复到 PDF 弹出对话框。

然后在打印的页面或直接在主窗体添加一个层,并在层中添加如下代码(可以采用其他方式)
<object id="CrystalPrintControl" classid="CLSID:BAEE131D-290A-4541-A50A-8936F159563A"
    codebase="
http://192.168.88.91/printcontrol.cab" height="0px" version="10,2,0,1078"
    viewastext="" width="0px">
</object>
version是版本号,如果你是其他的版本将版本号修改一下即可。
9.已达到系统管理员配置的最大报表处理作业数限制的处理
   解决办法:
   具体为修改下面两个键的值。
   HKEY_LOCAL_MACHINE;SOFTWARE;Crystal Decisions;10.0;Report Application
   Server;InprocServer;PrintJobLimit 修改为1000
   还有一个HKEY_LOCAL_MACHINE;SOFTWARE;Crystal Decisions;10.0;Report Application
   Server;Server;PrintJobLimit 也修改为1000
   我发现在C:\WINDOWS\Temp这个临时文件里面有大量的水晶报表文件,每使用一次就会生成几个文件,在电脑没有重新启动的情况下它不会被删除,而出现大量的无用文件,在google里面搜了一圈发现也有人碰到这样的情况但回答的很模糊只是说要将水晶报表装载的文档关闭掉,从这里可以看出出现这样的错误应该是程序员人为照成的.
    具体解决如下:
          1.ReportDocumen实例必须为类成员   
             private ReportDocument prtp = new ReportDocument();  
          2.使用完水晶报表必须关闭文件,这样子就不会在windows的临时文件里面产生.
              private void Page_Unload(object sender, EventArgs e)
              {
                    prtp.Dispose();
              }
             Page_Unload 事件是在页面完全显示的时候运行,这样子就解决了.

本文来自(http://hi.baidu.com/%D2%AA%C4%E3%C3%FC%C8%FD%C7%A7%D6%AE%D5%D4/blog/item/ba3eaecefd192c34f8dc6189.html)

为了您的安全,请只打开来源可靠的网址

打开网站    取消

来自: http://hi.baidu.com/xzyweb/blog/item/a70f9aa59f39e59ed1435827.html
水晶报表Crystal Reports实例 CrystalReports水晶报表的简单应用 阅读详情

相关推荐

C#打印水晶报表

大家平时做一个项目的时候,总有需要做打印这个模块的,既然有需要那现在就教大家如何做水晶报表。 第一、安装插件。这是一个需要借助下图插件才能完成的报表,如果不知道安装是否成功的,可以先进行第二步操作。 第二、建存放打印相关的文件夹。建与控制器文件夹并列就好。建好后可以按右键选择新建项对插件进行检验是否安装成功。新建项中有Reporting这个项,如果没有这个项就是失败,但有的话选择它可以看到下图中...

qq_44484552的博客 3001

C#Winform水晶报表实例教程

以实例讲解C#Winform水晶报表的基本设置,格式化,排序与分组,常用应用,子报表的使用,以推模式使用ADO.NET数据集

安卓开发之用RecyclerView做陈列式布局(仿小红书首页/淘宝商品浏览)

ennn,首先一开始不知道这种界面效果叫做陈列式,然后网上搜了好多仿淘宝商品的,都是写的商品详情页,然后决定自己写一写,发现意外的简单哈哈哈 简单介绍一下Recyclerview吧,其实我并没有很懂哈哈哈~~~ RecyclerView是安卓5.0之后提供的用于在有限的窗口范围内显示大量数据的控件。 【1】相对于ListView来说,RecyclerView可以展示更多的界面效果,如横向、竖向的列...

Farewell_w的博客 6488

水晶报表基本使用方法

开发工具与关键技术:VS/MVC 作者:何桂朋 撰写时间:2019年4月22日 Crystal Reports(水晶报表)是一款商务智能(BI)软件,主要用于设计及产生报表。水晶报表是业内最专业、功能最强的报表系统,它除了强大的报表功能外。最大的优势是实现了与绝大多数流行开发工具的集成和接口。在VS.Net平台做过报表开发的程序员,一定都对水晶报表强大、高效、集成等特性留下了深刻印象。 除了开发新...

weixin_44550157的博客 2万+

安卓开发个人小作品(2)- QQ简仿

个人小作品系列,这次继续介绍自己曾经写的一些“小玩意”,这次就介绍下自己初学安卓时,写的一个简仿QQ吧。 里面都是一些基础知识,但是作为初学者来说,还是可以学到很多东西的。 由于这个涉及到的知识很散,就按照界面一个个说,主要就是一些安卓基础,要是你能耐心看下去的话,肯定都能做到。好啦,开始吧。 目录 1.欢迎界面(handler、Timer的使用等) 2.登录界面(属性动画、editTe...

黄庆庆的世界 3979

android嵌入式系统程序开发,细数Android开发者的艰辛历程

上面的列的相关内容,看似很短一句话,但是每一项都需要你深入的去研究,要了解原理,最好去看一下源码实现。当然还有一些是我没写到的,可能是我写的时候没有想起来,并不代表他们不重要,你也需要重视,再来一波推荐:《Android开发艺术探索》强烈推荐,建议细细的读,如果粗心大意建议读两到三遍,针对性的读。《Android进阶之光》《高级Android开发强化实战》《Android组件化架构》《Android热修复技术原理》《Android插件化开发指南》

2401_84415234的博客 1052

Andriod Studio小游戏

文章目录\n一、项目概述\n二、开发环境\n三、需求分析\n四、实现过程\n1、拼图游戏布局绘制\n2、拼图游戏时间计时\n3、拼图游戏打乱显示\n4、拼图游戏碎片位置切换\n5、拼图游戏成功的条件\n6、拼图游戏重新开始\n五、运行效果\n六、项目总结\n七、项目源码\n一、项目概述\n之前有不少粉丝私信我说,能不能用Android原生的语言开发一款在手机上运行的游戏呢?\n\n说实话,使用java语言直接开发游戏这个需求有点难,因为一些比较复杂的游戏都是通过cocos2D或者Unity3D等游戏引擎开发

Code Writers 2391

安卓 实现灯光闪过效果

有个小需求,给按钮加一个灯光划过的效果,这样的需求一般有UI,肯定就找UI了要个gif图不就完事了,可是这次没有,好久自己做一个嘛。Web端的大佬实现很快,到安卓这边呢,百度一搜发现诶?怎么没有,好吧自己来一个 一切动效相关的不给图看都是耍流氓 所以俺不能这么干啊,OK!直接上效果图,再来解释下怎么实现的 效果就是这样子,怎么实现呢? 从图分析下,就是一个光写着重左边移动要右边循环嘛,这有啥难的?? 来看一看我的第一版,第二版 这是个什么?????一点都不像啊? 赶紧再问了问Web端大佬,噢,加了一个

SummerCloudXT的博客 1378

Android-->仿主流壁纸App壁纸设置界面

项目中做到在线壁纸应用,在壁纸设置界面也是参考了主流壁纸应用的做法,例如小米,oppo,搜狗等都是采用了类似下图的界面布局。这里将介绍如何做出类似布局和功能。

chan1116的专栏 1044

仿闲鱼首页商城源码:瀑布流双列布局与前端实现详解

在电商与二手交易类应用中,首页的信息密度与内容分发节奏直接决定用户留存。双列瀑布流作为一种高效的移动端布局范式,能在有限屏幕内展示更多商品,并通过左右高度平衡的视觉节奏强化沉浸式浏览体验。该模式广泛应用于闲鱼、小红书等头部产品,是前端开发者提升布局能力与组件设计能力的理想练习对象。本文从页面信息架构出发,拆解搜索栏、金刚区、轮播位、瀑布流与底部导航的设计逻辑,并结合 Vue3 工程实践,讲解双列数组分配、图片懒加载、安全区适配等核心技术细节,同时给出可落地的仿闲鱼商城首页源码思路与踩坑排查方案。

weixin_29009669的博客 295

企业微信移动应用,6年老Android面经总结

上面的列的相关内容,看似很短一句话,但是每一项都需要你深入的去研究,要了解原理,最好去看一下源码实现。当然还有一些是我没写到的,可能是我写的时候没有想起来,并不代表他们不重要,你也需要重视,再来一波推荐:《Android开发艺术探索》强烈推荐,建议细细的读,如果粗心大意建议读两到三遍,针对性的读。《Android进阶之光》《高级Android开发强化实战》《Android组件化架构》《Android热修复技术原理》《Android插件化开发指南》

2401_84876142的博客 505

物联网:Android端控制ZigBee实现生产环境自动控制

Android端控制ZigBee发送命令实现智能生产 //继电器命令1 2 3有规律很好记,每次写完查一下是不是9个 final static char[] fan0open={0xff,0xf5,0x05,0x02,0x01,0x00,0x00,0x01,0x03}; final static char[] fan0close={0xff,0xf5,0x05,0x02,0x...

Gru的博客 3746

Android Jetpack组件 Compose 使用介绍(1)

这里我们看到在MainActivity中有一个DefaultPreview函数,然后这边有一个手机的图标,我们点击它,就可以就会直接运行到当前AS所连接到设备,无论是虚拟设备还是真机。如果我们需要预览当前的页面的话,可以点击右上角的Split,然后右侧就会看到Default Preview。这里就是Hello Android,我们先了解这个Hello Android 怎么来的。

2401_84123201的博客 1111

告别模拟器:Paparazzi快照测试实现Android Compose UI像素级回归检测

在Android应用开发中,UI自动化测试是保障应用质量的关键环节,而视觉回归测试则是确保用户界面在不同迭代中保持一致性的重要手段。其核心原理是通过对比UI渲染结果的图像快照,检测非预期的像素级变化。这项技术的核心价值在于能够以极高的精度和速度,自动化地发现因代码变更引入的UI布局、颜色、尺寸等视觉缺陷,从而显著提升测试效率和可靠性。在工程实践中,视觉回归测试尤其适用于声明式UI框架,如Jetpack Compose,因为它能直接对组件的渲染输出进行断言。Paparazzi作为Jetpack Compose

defkaug153461的博客 440

Midscene安卓自动化实战:AI驱动UI测试从入门到落地

UI自动化测试是移动应用质量保障的关键环节,但传统基于控件定位的脚本在面对界面频繁改版时往往显得脆弱且维护成本高昂。随着大模型技术的成熟,一种全新的思路逐渐兴起:让AI理解界面截图与布局信息,直接通过自然语言指令驱动测试执行,从而将测试脚本从繁琐的资源ID和XPath中解放出来。这种技术范式不仅降低了自动化用例的编写门槛,还显著提升了对视觉元素和动态内容的处理能力。在安卓平台上,借助Midscene这类开源框架,测试人员可以用描述性语言完成点击、输入、滑动和断言等操作,并将其应用于回归测试、多设备并行和视觉

weixin_30096975的博客 257

Flutter跨平台开发:从环境搭建到声明式UI实践

跨平台开发框架通过单一代码库实现多端部署,大幅提升开发效率。Flutter作为Google推出的开源UI工具包,采用独特的Skia渲染引擎和声明式编程范式,实现了接近原生的性能表现。其核心原理在于将UI描述与平台渲染解耦,通过Widget树的高效diff算法实现快速更新。这种架构特别适合需要保持一致用户体验的移动应用开发场景,如电商、社交等高频迭代产品。在Mac环境下,通过Android Studio或VS Code配置Flutter开发环境,开发者可以充分利用热重载等特性加速开发流程。声明式UI编程通过状

weixin_34203832的博客 527

React Native Android软键盘适配:windowSoftInputMode配置详解

软键盘行为是移动应用基础交互的核心环节,其本质涉及Android窗口管理器(Window Manager)对Activity DecorView的重绘调度。理解android:windowSoftInputMode的adjustResize与adjustPan两种模式原理,是解决输入框遮挡、ScrollView无法自动滚动、状态栏异常等UI问题的关键技术前提。该配置直接影响RN渲染管线与原生系统协同效率,具备跨Android 5.0–14及华为EMUI、小米MIUI等主流厂商ROM的兼容价值。典型应用场景包

weixin_30312563的博客 4965

安捷伦示波器实战指南:从基础操作到精准触发

本文详细介绍了安捷伦示波器的基础操作与高级功能,包括精准触发配置、波形分析和常见问题排查。通过实战技巧和优化建议,帮助工程师快速掌握示波器的核心功能,提升调试效率。特别适合电子工程师和测试技术人员参考使用。

weixin_30839881的博客 135
上一篇: JSP tag 学习
下一篇: 学习水晶报表
VS_URL
博客等级 码龄15年 12粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值