zoukankan      html  css  js  c++  java
  • Windows Phone开发经验谈(17)两则改善用户体验的开发技巧

        不知道大家有没一种体会,就是你在软件中加入了一种功能之后,有的用户希望你不要加入这项功能,有的则是非常喜欢新加入的功能。这种情况就实在令人头疼。这里就说两个这样的例子。

        1、退出确认功能

         有的时候开发者担心用户操作出错,而特别设置了一个退出确认功能,但是市场上大部分用户却不是很喜欢,但是你如果把这项功能去掉就又会导致误操作,实在是众口难调..所以你就必须在设置里面加入一个选项,让用户选择是否要退出确认功能,实现代码如下:

    首先建立一个属性ExitConfirm来存储系统的设置..判断是否是退出确认

       private IsolatedStorageSettings m_IsolatedStorageSettings = IsolatedStorageSettings.ApplicationSettings;
    
            public bool ExitConfirm
            {
                get
                {
                    return (this.m_IsolatedStorageSettings.Contains("ExitConfirm") && ((bool) this.m_IsolatedStorageSettings["ExitConfirm"]));
                }
                set
                {
                    if (this.ExitConfirm != value)
                    {
                        this.m_IsolatedStorageSettings["ExitConfirm"] = value;
                        if (this.PropertyChanged != null)
                        {
                            this.PropertyChanged(this, new PropertyChangedEventArgs("ExitConfirm"));
                        }
                    }
                }
            }

    再在主界面中重写OnBackKeyPress方法代码如下所示

       protected override void OnBackKeyPress(CancelEventArgs e)
            {
    if (Theme.Instance.ExitConfirm && (MessageBox.Show("确定退出超级词典", "提示", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel))
                {
                    e.Cancel = true;
                }
                base.OnBackKeyPress(e);
    }


    这样退出确认功能只会在ExitConfirm为true的时候提示,用户如果没有设置退出确认则不会显示了...很简单的小技巧但是却改善了用户体验

        

         2、图标透明

    有的时候开发者把图标配上底色自我感觉很不错..当应用发布后却遭到很多用户反馈说是否能把图标改成透明的,我就曾经遇到过这样的反馈。其实这并不一定图标配色出了问题,而可能是有的用户希望APP的Icon能够和系统的主题一致,但是你或者其他一些用户又喜欢有底色的Icon..这又如何是好呢?其实很简单,还是按照第一条的结论,也就是再添加一个设置项,来设置是否需要图标透明..下面可以一起跟我一起做一遍:

    首先做2个173*173的图标的,一个底色的叫Background.png另一个透明的叫Background2.png,默认是有底色的...在系统设置里面添加一个ToggleSwitch并添加一个事件ToggleSwitch_Checked代码如下:

            private void ToggleSwitch_Checked(object sender, RoutedEventArgs e)
            {
                ShellTile tile = Enumerable.First<ShellTile>(ShellTile.ActiveTiles);
                if (tile != null)
                {
                    string uriString = string.Empty;
                    if (this.toggleSwitch.IsChecked.Value)
                    {
                        uriString = "/Background2.png";
                    }
                    else
                    {
                        uriString = "/Background.png";
                    }
                    Theme.Instance.DefaultTile = this.toggleSwitch.IsChecked.Value;
                    StandardTileData data = new StandardTileData();
                    this.imgTile.Source = new BitmapImage(new Uri(uriString, UriKind.RelativeOrAbsolute));
                    data.BackgroundImage = new Uri(uriString, UriKind.RelativeOrAbsolute);
                    tile.Update(data);
                }
            }

    这样用户就能够自由的选择APP的Icon是否要背景了。

    这两则示例虽然简单,却大大提升了用户体验,不必太多的代码换来的是让用户感觉到你所做软件非常的用心体贴,何乐而不为。

    有什么疑问欢迎留言讨论。

  • 相关阅读:
    接口文档:第二章:使用Swagger接口的文档在线自动生成
    js断点调试心得
    架构漫谈(二):认识概念是理解架构的基础
    vps 虚拟机 云服务器
    云服务器和虚拟主机的区别
    SQL嵌套子查询和相关子查询的执行过程有什么区别(推荐)
    查询速度优化用not EXISTS 代替 not in
    NULL 与空字符串
    MySQL中处理Null时要注意两大陷阱
    MySQL中NOT IN语句对NULL值的处理
  • 原文地址:https://www.cnblogs.com/cracker/p/windowsphone_twoskill.html
Copyright © 2011-2022 走看看