Page布局设计

返回目录


 无论如何让我们先开始做一个布局合理的页面吧!

布局图:
初始状态
最大化


设计过程:

Step1:布局
修改Page的大小:

   d:DesignHeight="450" d:DesignWidth="690"

根据设计意图打适当的格子:

        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition />
            <RowDefinition Height="100"/>
        </Grid.RowDefinitions>

Step2:选项卡
在页面布局的最上方填充几个选项卡。目前只是布局,样式勿喷。

        <GroupBox Grid.ColumnSpan="2">
            <StackPanel Orientation="Horizontal" >
                <RadioButton Margin="2 2" Content="选项卡1" FontSize="30" VerticalAlignment="Center"/>
                <RadioButton Margin="2 2" Content="选项卡2" FontSize="30" VerticalAlignment="Center"/>
                <RadioButton Margin="2 2" Content="选项卡3" FontSize="30" VerticalAlignment="Center"/>
                <RadioButton Margin="2 2" Content="选项卡4" FontSize="30" VerticalAlignment="Center"/>
                <RadioButton Margin="2 2" Content="选项卡5" FontSize="30" VerticalAlignment="Center"/>
            </StackPanel>
        </GroupBox>

Step3:图片
在第二行第一列添加一副图片, 伸手党淡定!

        <GroupBox Grid.Row="1" Margin="5 5" Header="Image">
            <Image Source="pack://application:,,,/Resources/CC.jpg" Stretch="UniformToFill" />
        </GroupBox>

Step4:文本
在第二行第而列添加一个文本, 伸手的胜利!

        <GroupBox Grid.Row="1" Grid.Column="1" Margin="5 5" Header="Text">
            <ScrollViewer  VerticalScrollBarVisibility="Auto">

                <TextBlock TextWrapping="Wrap" FontSize="15" >
                WPF 为Windows Presentation Foundation的首字母缩写 ,中文译为“Windows呈现基础”,其原来代号为“Avalon”,因与“我佩服”拼音首字母组合一样,国内有人调侃地称之为“我佩服”。由 .NET Framework 3.0 开始引入,与 Windows Communication Foundation及 Windows Workflow Foundation并行为新一代 Windows操作系统以及 WinFX 的三个重大应用程序开发类库。
WPF是微软新一代图形系统,运行在.NET Framework 3.0及以上版本下,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。基于DirectX 9/10技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,比如Vista中的半透明效果的窗体等都得
WPF
WPF
益于WPF。 程序员在WPF的帮助下,要开发出媲美Mac程序的酷炫界面已不再是遥不可及的奢望。 WPF相对于Windows客户端的开发来说,向前跨出了巨大的一步,它提供了超丰富的.NET UI 框架,集成了矢量图形,丰富的流动文字支持(flow text support),3D视觉效果和强大无比的控件模型框架。
Windows Presentation Foundation(以前的代号为“Avalon”)是 Microsoft 用于 Windows 的统一显示子系统,它通过 WinFX 公开。它由显示引擎和托管代码框架组成。Windows Presentation Foundation 统一了 Windows 创建、显示和操作文档、媒体和用户界面 (UI) 的方式,使开发人员和设计人员可以创建更好的视觉效果、不同的用户体验。Windows Presentation Foundation 发布后,Windows XP、Windows Server 2003 和以后所有的 Windows操作系统版本都可以使用它。
WPF是.Net Framework 3.0
WPF
WPF
里新推出的主打功能之一,加上Vista集成.Net Framework 3.0,改写Winform时代,可谓是影响巨大!WPF是一套API函数库,由.Net FrameWork3.0以上版本类库运行。
WPF是Windows操作系统中一次重大变革,与早期的GDI+/GDI不同。WPF是基于DirectX引擎的,支持GPU硬件加速,在不支持硬件加速时也可以使用软件绘制。高级别的线程绘制可以提高使用者的体验。自动识别显示器分辨率并进行缩放。而Vista就是一个非常典型的例子
                </TextBlock>
            </ScrollViewer>
        </GroupBox>

Step5:尾行

        <Border Grid.Row="2" Grid.ColumnSpan="2" BorderThickness="1" Margin="5 5" >
            <StackPanel Background="AliceBlue">
                <TextBlock Text="页面布局" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="50" Background="AliceBlue" Foreground="Blue"/>
            </StackPanel>
        </Border>

附录:测试代码

作者Hankkin,源码PageLayoutDemo,一款简单的 page 切换 空布局、错误布局、加载布局,支持一键配置、定义,不需要 xml 编写该功能是支持单独为某个布局设置状态改变的,比如很多同学提到的我一个 listview 的数据没有获取到,fun initPage(targetView: Any),这个 targetView 你只需要设置成你的 listview 或者包裹你 listview 的 parent 布局就 OK 了,具体原理可以看下面的代码解析啊,遍历获取索引,然后记录索引值....项目中我们经常会用到的加载数据,加载完数据后显示内容,如果没有数据显示一个空白页,这是如果网络错误了显示一个网络错误页,自定义一个 PageLayout。绪论Android 中经常使用一个空白页和网络错误页用来提高用户体验,给用户一个较好的感官,如果获取到的数据为空,那么会显示一个空白数据页,如果在获取数据的过程中网络错误了,会显示一个网络异常页,像最近比较火的某东这样,见下图。网上也有一些开源的组件,大部分都是自定义继承某个布局在 xml 中让其作为跟布局,然后将自己的内容布局添加进去,效果也都不错,但是个人总觉得稍微有些麻烦,不是那么灵活,n 多个 xml 布局都去定义,写的心烦,所以有了今天的主角。 思考实现的思路实际上是和上面说的一样,只不过换了一种方式,我们手动获取到 contentView,将它从 DecorView 中移除,然后交给 PageLayout 取管理。当时考虑的时候就是不想在每个 xml 中去写页面切换的布局,那么我们可不可以用 Java 代码去控制?带着下面几个问题一起来看一下。1.自定义一个布局让其作为跟布局2.提供切换加载 loading、空白页 empty、错误页 errror、内容页 content功能3.怎么让其取管理上边的四个页面?4.contentView 怎么添加?5.如果我想切换的跟布局不是个 Activity 或者 Fragment 怎么办?6.因为切换页面状态的功能一般都是一个 APP 统一的,那么可不可以一键配置呢?实现1.代码设计首先我们定义 PageLayout 继承 FrameLayout 或者 LinearLayou 或者其他的布局都可以,然后我们需要提供切换四个布局的功能,当然如果支持自定义就更好了,还有状态布局里面的一些属性,还方便一键配置,所以最后采用了 Builder 模式来创建,使用方式就和 Android 里面的AlertDialog一样,通过 Builder 去构建一个 PageLayout。最后的样子是长这样的:方法注释showLoading()显示 loadingshowError()显示错误布局showEmpty()显示空布局hide()显示内容布局BuildersetLoading()setLoadingText()setError()setDefaultLoadingBlinkText()setEmpty()setLoadingTextColor()setDefaultEmptyText()setDefaultLoadingBlinkColor()setDefaultEmptyTextColor()setDefaultErrorText()setDefaultErrorTextColor()setEmptyDrawable()setErrorDrawable()默认样式PageLayout.Builder(this)                 .initPage(ll_default)                 .setOnRetryListener(object : PageLayout.OnRetryClickListener{                     override fun onRetry() {                         loadData()                     }                 })                 .create()自定义样式PageLayout.Builder(this)                 .initPage(ll_demo)                 .setLoading(R.layout.layout_loading_demo)                 .setEmpty(R.layout.layout_empty_demo,R.id.tv_page_empty_demo)                 .setError(R.layout.layout_error_demo,R.id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值