精华内容
下载资源
问答
  • 以前做过一个xx项目,在登陆界面背景图片中,直接引用了一张大图,css类似于这样(background-image:url(a.jpg)),然后啪啪啪调试了一下,丑恶的面容出来,图片是从上往下一片一片的出来,交互和用户体验差到了极点,...

    一件事情的发生总是有原因的,当然更多的是对技术本身的追求,一定要搞懂啦,废话不多说,大宝剑直插主题。

    • 起因
    1. 以前做过一个xx项目,在登陆界面背景图片中,直接引用了一张大图,css类似于这样(background-image:url(a.jpg)),然后啪啪啪调试了一下,丑恶的面容出来,图片是从上往下一片一片的出来,交互和用户体验差到了极点,特别在网速不好的时候特别明显。(不建议测试图片使用恐怖图片,效果你懂滴,嘿嘿嘿)
    2. 有一次突然的机会看到QQ空间背景图片,看到背景图片的显示是那么的优雅,那么的淡然。心里哭着想到,妈的终于找到解决的问题了,但是由于各种不可抗拒的原因一直推迟研究,知道这几天才翻出来,把QQ空间源代码抠出来研究了一番。

        效果图比较

        

          

     

     

     

     

     

     

    具体大家可以自己设置个大图做测试,和进QQ空间登陆首页进行测试

     

    • 原理

    佛说有因必有果,所以出现这个状况肯定是有原因的。所以主要原因还是浏览器的渲染问题,浏览器是从上往下进行页面渲染的,当你设置background-image的时候,浏览器就解析这个属性,然后去下载这个图片。但是由于图片一般都不会太小,所以浏览器不可能一次性将文件请求过来,所以请求了多少渲染多少,所以就像拉窗帘式的一点点的下来,直到请求完了,全部渲染完成。通俗一点的例子就是浏览器解析div和table的效果,div是有多少我渲染多少,但是table你必须全部加载完我再渲染

     

    • 研究过程

    1.  首先去QQ空间首页,使用chrome的Network工具监控所有请求的js文件,发现不是很多的混淆后的js文件和一个不断刷新二维码的请求,这样没有找到有用的,值得看的东西(混淆的东西格式化了之后没看出啥玩意,哈哈)。

    2. 但是俺不气馁,然后在Element中检查dom和style,开始发现好玩的东西了,空间中所使用的背景并不是使用background-image来实现的,它是一个div,然后检查这个div的样式,以及<img>标签的样式,然后我不断调试这些样式(就是一个一个的撤销再加载),最后发现当我撤销opacity: 1;样式的时候,背景图片开始淡出了,然后再点又开始淡入,好了,发现重点了!!!

     

    3. 开始仔细关注着几个标签的样式,发现罪魁祸首是css3的opacitytransition属性。前端开发的应该不陌生,一个是透明度,一个是旋转变换(....旋转变换我闭着眼...妈的,都快唱起来了)。可以看效果

     

     

    4. 作为一个严谨,对自己代码负责的工程师,我将QQ空间的首页拿到不同浏览器进行测试,最主要就是IE,因为其他浏览器装的话,默认都是最新版本,几乎都支持CSS3的属性了,只有IE这个傻Ⅹ才会这么多事,虽然IE6退出了市场,但是IE8-9还是有很多人用的,在IE下测,出现问题了,图片出现再也没有那么装逼的淡出效果了,检查了一下IE8中 渲染不出opacity和transition,IE9渲染不出transition,所以坑爹呀。至于图片不是一块一块加载,稍微查了下QQ空间在页面中写的js,使用的延迟加载。

    • 代码实现
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            body{
                margin: 0;
                padding: 0;
                border: 0;
            }
            .backgroundShow{
                position: absolute;
                left: 0;
                top: 0;
                z-index: -1;
                overflow: hidden;
                width: 100%;
                height:100%;
            }
            .backgroundImg{
                position: absolute;
                left: 0;
                top: 0;
                z-index: -2;
            }
            .showImg{
                opacity: 1;
            }
    
            .lay_background_img{
                transition: opacity 2s ease;
                opacity: 0;
            }
        </style>
    </head>
    <body>
        <div id="showImg" class="backgroundShow">
            <img id="ImgShow" class="lay_background_img backgroundImg">
        </div>
    </body>
    <script src="lib/test.js"></script>
    <script>
        +function(){
            loadImage('http://z.k1982.com/show_img/201303/2013033012383895.jpg',imgLoaded);
        }();
    
        function loadImage(url, callback) {
            var img = new Image();
            img.src = url;
            img.onload = function(){ //图片下载完毕时异步调用callback函数。
                callback.call(img); // 将callback函数this指针切换为img。
            };
        }
    
        function imgLoaded(){
            var img = document.getElementById("ImgShow");
            img.setAttribute("src",this.src);
            if(img.style.opacity!=undefined){
                img.style.opacity=1;
            }
        }
    </script>
    </html>
    

      废话不说,代码已贡献出来。大家可以直接测试。但是,写了这么多js代码,太烦了,这不是我开发的原则,我要偷懒,越少代码越好。所以我想到插件啦,因为Jquery的普遍运用,我选择了jquery插件,其实其他库和原生插件也考虑的,但是已经写了就先写jquery插件啦。

    • 插件实现

    对于插件,我们都要从严谨的角度出发,因为一个成熟的插件是要考虑和完善很多东西的,不能让别人或者自己使用出现千奇百怪的问题,所以这个简单的插件兼容了IE8-9的淡出,而且抛出了一些配置,包括淡出动画时间的问题呀,包括多个动画随机显示功能(属于闲得蛋疼),其他功能大家有兴趣可以自己随机拓展,直接上代码

    //延迟加载图片
            var imageT;
            var imgObjArr = new Array;
            if(options.isRandom){
                for(var i = 0;i<options.imgArr.length;i++){
                    imageT = new Image();
                    imageT.src = options.imgArr[i];
                    imgObjArr.push(imageT);
                }
            }else {
                imageT = new Image();
                imageT.src = options.imgArr[0];
                imgObjArr.push(imageT);
            }
    
            //动态显示
            imageT.onload =function(){
                console.log(options.isRandom)
                if(options.isRandom){
                    var result =Math.round(Math.random() * (options.imgArr.length - 1));
                    $("#ImgShow").attr("src",options.imgArr[result]);
                }else{
                    $("#ImgShow").attr("src",options.imgArr[0]);
                }
    
                //对于统一不支持css3属性的用jquery的fadeIn解决淡出问题
                if($("body")[0].style.opacity==undefined || $("body")[0].style.transition==undefined){
                    $("#divShow").fadeIn(options.imgSecond);
                }else{
                    $("#ImgShow").css({"opacity":"1"});
                }
               };
    

      只是一些,不贴太多了,篇幅太长,可以到github上来下载,记得加颗星哦,关注哦,么么哒~~~~

     

    github地址:  https://github.com/GerryIsWarrior/setBackgroundImage_js

     

    展开全文
  • 17.窗体添加属性(XTheme:窗体主题,类型:继承CCSkinMain的窗体),增加皮肤更换属性,更好的对换肤支持。 18.增加了MDI支持,并多了一些属性设置MDI。 19.对好友列表进行了绘制优化,效率MAX,真正达到了千人不卡...
  • 一、ubuntu桌面背景 https://www.jb51.net/os/Ubuntu/495386.html (1)方法一,ubuntu自身就可以更改。在桌面右键选择,即可。  (2)安装unity-tweak-tool。安装后可以使让任务栏自动隐藏,让任务栏改变到下方...

    一、ubuntu桌面背景

    https://www.jb51.net/os/Ubuntu/495386.html

    (1)方法一,ubuntu自身就可以更改。在桌面右键选择,即可。

     (2)安装unity-tweak-tool。安装后可以使让任务栏自动隐藏,让任务栏改变到下方。改变桌面主题等。

    二、rar的安装

    ubuntu中无法直接解压.rar文件,需要安装rar,unrar,从而能够正常使用rar。

    sudo  apt-get   update 
    sudo apt-get install rar
    sudo apt-get install unrar

    然后把p7zip-rar 和 相关支持也安装上。

    sudo  apt-get install  p7zip-rar
    sudo  apt-get install   p7zip*

    三、 截屏软件Shutter

    sudo apt-get install shutter

    四、安装typora(MarkDown编辑器)

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE
    sudo add-apt-repository 'deb https://typora.io ./linux/'
    sudo apt-get update
    sudo apt-get install typora

    五、安装视频播放器smplayer

    sudo apt-add-repository ppa:rvm/smplayer
    sudo apt-get update
    sudo apt-get install smplayer smplayer-skins smplayer-themes

    六、安装图片编辑软件

    安装pinta

    sudo apt-get install pinta

    另外,可以安装gimp,据说这是Ubuntu下的ps,非常强大。

    七、安装网易云音乐

    sudo apt-get -f install
    sudo dpkg -i netease-cloud-music_1.1.0_amd64_ubuntu.deb

    之后,

    cd /usr/share/applications
    sudo gedit netease-cloud-music.desktop

    找到 exec 那一行 ,在 %U 前面加上 --no-sandbox ,改为之后如下,重启电脑即可

    Exec=netease-cloud-music --no-sandbox %U

    展开全文
  • Android开发_app启动界面背景渐变效果

    千次阅读 2015-03-26 11:49:43
    Focus on technology, enjoy life!—— 杨焕州 QQ:804212028 ...本文可能存在参考或借助部分外界资源,如有任何侵权行为,请与我联系!...-很多app启动界面是一张背景图片的渐变效果,让我们来看看到

    Focus on technology, enjoy life!—— 杨焕州 QQ:804212028
    原文链接:http://blog.csdn.net/y18334702058/article/details/44624305
    本文可能存在参考或借助部分外界资源,如有任何侵权行为,请与我联系!


    • 主题:app启动界面背景渐变效果
      -很多app启动界面是一张背景图片的渐变效果,让我们来看看到底是怎样实现的呢?

    这里写图片描述

    比如说start_background这张图片怎么实现渐变:

    1.现在XML文件中实现一张图片做背景的布局:
    startactivity.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"
        android:gravity="bottom"
        android:background="@drawable/start_background">
        </LinearLayout>

    2.StartActivity的代码:

    public class StartActivity extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            final View view = View.inflate(this, R.layout.startactivity, null);
            setContentView(view);
    
            //渐变背景图片
            AlphaAnimation aa = new AlphaAnimation(0.3f,1.0f);
            aa.setDuration(2000);//设置动画持续时间
            view.startAnimation(aa);
            aa.setAnimationListener(new AnimationListener()
            {
                @Override
                public void onAnimationEnd(Animation arg0) {
                    toMainActivity();
                }
                @Override
                public void onAnimationRepeat(Animation animation) {}
                @Override
                public void onAnimationStart(Animation animation) {}
    
            });
    
        }
    
        //从登陆界面跳转到主界面MainActivity
    
        private void toMainActivity(){       
            Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);
            finish();
        }
    }

    Focus on technology, enjoy life!—— 杨焕州 QQ:804212028
    原文链接:http://blog.csdn.net/y18334702058/article/details/44624305

    展开全文
  • 动态更换背景图片,元素用PNG贴图,设置背景透明,以便与窗口背景图片混合,背景图片加上自适应贴图,局部放大,达到QQ的背景换肤效果. 调色思路: 动态更换主题颜色,用主题颜色与每个元素进行颜色混合,达到调色效果. ...

    程序截图:


    说明

    由于时间原因本演示程序未实现背景换肤和调色功能;如果您需要该功能,我们给您留下以下实现思路.

    背景换肤思路:

    • 动态更换背景图片,元素用PNG贴图,设置背景透明,以便与窗口背景图片混合,背景图片加上自适应贴图,局部放大,达到QQ的背景换肤效果.

    调色思路:

    • 动态更换主题颜色,用主题颜色与每个元素进行颜色混合,达到调色效果.
    • 动态更换主题颜色,在窗口绘制完成之后,用主题颜色与窗口颜色混合,达到调色效果.

    示例代码

    //演示QQ2009
    #define WINDOW_WIDTH   250 //窗口宽度
    #define WINDOW_HEIGHT  600 //窗口高度
    HELE hWeather=NULL;
    HELE hUserSign=NULL;
    HELE hButtonSkin=NULL;
    HELE hButtonMsg=NULL;
    HELE hTree=NULL;
    HELE hTabBar=NULL;
    HELE hButtonHidePane=NULL;
    HELE hButtonMainMenu=NULL;
    HELE hButtonTool1=NULL;
    HELE hButtonTool2=NULL;
    HELE hButtonTool3=NULL;
    HELE hButtonTool4=NULL;
    HELE hButtonTool5=NULL;
    HELE hButtonTool6=NULL;
    HELE hLeftPane=NULL;
    HELE hSearchEdit=NULL;
    int group1=0;
    int group2=0;
    
    struct xc_image_res  //图片资源
    {
        HIMAGE image_bk;
        HIMAGE hImageLogo;
    
        HIMAGE close_leave;
        HIMAGE close_stay;
        HIMAGE close_down;
    
        HIMAGE max_leave;
        HIMAGE max_stay;
        HIMAGE max_down;
    
        HIMAGE min_leave;
        HIMAGE min_stay;
        HIMAGE min_down;
    
        HIMAGE weather;
    
        HIMAGE face_leave;
        HIMAGE face_stay;
    
        HIMAGE userstate_leave;
        HIMAGE userstate_stay;
        HIMAGE userstate_down;
    
        HIMAGE button_leave;
        HIMAGE button_stay;
        HIMAGE button_down;
    
        HIMAGE searchedit;
    
        HIMAGE search;
        HIMAGE icon1;
        HIMAGE icon2;
        HIMAGE icon3;
        HIMAGE icon7;
        HIMAGE icon8;
        HIMAGE icon9;
        HIMAGE icon10;
        HIMAGE icon11;
        HIMAGE icon15;
        HIMAGE icon16;
    
        HIMAGE mainMenu_leave;
        HIMAGE mainMenu_stay;
    
        HIMAGE hideleftpanel_leave;
        HIMAGE hideleftpanel_stay;
    
        HIMAGE tabLeft_leave;
        HIMAGE tabLeft_stay;
        HIMAGE tabLeft_down;
    
        HIMAGE leftpane;
        HIMAGE tab1;
        HIMAGE tab2;
        HIMAGE tab3;
    
        HIMAGE talkLabel_leave;
        HIMAGE talkLabel_stay;
        HIMAGE talkLabel_down;
    
        HIMAGE talktbico1;
        HIMAGE talktbico2;
        HIMAGE talktbico3;
    
        HIMAGE imp_shrink;
        HIMAGE imp_expand;
        HIMAGE imp_icon_1;
        HIMAGE imp_icon_2;
        HIMAGE imp_icon_3;
        HIMAGE imp_icon_4;
        HIMAGE imp_icon_5;
        HIMAGE imp_icon_6;
    
        HIMAGE scroll_thumb_leave;
        HIMAGE scroll_thumb_down;
    
        HIMAGE scroll_up_leave;
        HIMAGE scroll_up_down;
        
        HIMAGE scroll_down_leave;
        HIMAGE scroll_down_down;
    
    };
    
    xc_image_res  image_res;
    
    //加载图片资源
    void LoadImageRes()
    {
        image_res.image_bk=XImage_LoadZipAdaptive(L"qqImage.zip",L"qqImage/back.bmp",NULL,6,174,123,140);
        image_res.hImageLogo=XImage_LoadZip(L"qqImage.zip",L"qqImage/logo2009.png");
    
        image_res.close_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/close_leave.png");
        image_res.close_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/close_stay.png");
        image_res.close_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/close_down.png");
    
        image_res.max_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/max_leave.png");
        image_res.max_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/max_stay.png");
        image_res.max_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/max_down.png");
    
        image_res.min_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/min_leave.png");
        image_res.min_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/min_stay.png");
        image_res.min_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/min_down.png");
    
        image_res.weather=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/weather.png");
    
        image_res.face_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/face_leave.png");
        image_res.face_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/face_stay.png");
    
        image_res.userstate_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/userstate_leave.png");
        image_res.userstate_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/userstate_stay.png");
        image_res.userstate_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/userstate_down.png");
    
        image_res.button_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button_leave.png");
        image_res.button_stay=XImage_LoadZipAdaptive(L"qqImage.zip",L"qqImage/button_stay.png",NULL,3,22,3,22);
        image_res.button_down=XImage_LoadZipAdaptive(L"qqImage.zip",L"qqImage/button_down.png",NULL,3,22,3,22);
    
        image_res.searchedit=XImage_LoadZipAdaptive(L"qqImage.zip",L"qqImage/searchedit.png",NULL,9,13,6,19);
    
        image_res.search=XImage_LoadZip(L"qqImage.zip",L"qqImage/17.png");
    
        image_res.icon1=XImage_LoadZip(L"qqImage.zip",L"qqImage/1.png");
        image_res.icon2=XImage_LoadZip(L"qqImage.zip",L"qqImage/2.png");
        image_res.icon3=XImage_LoadZip(L"qqImage.zip",L"qqImage/3.png");
        image_res.icon7=XImage_LoadZip(L"qqImage.zip",L"qqImage/7.png");
        image_res.icon8=XImage_LoadZip(L"qqImage.zip",L"qqImage/8.png");
        image_res.icon9=XImage_LoadZip(L"qqImage.zip",L"qqImage/9.png");
        image_res.icon10=XImage_LoadZip(L"qqImage.zip",L"qqImage/10.png");
        image_res.icon11=XImage_LoadZip(L"qqImage.zip",L"qqImage/11.png");
        image_res.icon15=XImage_LoadZip(L"qqImage.zip",L"qqImage/15.png");
        image_res.icon16=XImage_LoadZip(L"qqImage.zip",L"qqImage/16.png");
    
        image_res.mainMenu_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/mainMenu.png");
        image_res.mainMenu_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/mainMenu_stay.png");
    
        image_res.hideleftpanel_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/hideleftpanel_leave.png");
        image_res.hideleftpanel_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/hideleftpanel_stay.png");
    
        image_res.tabLeft_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/tabLeft_leave.png");
        image_res.tabLeft_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/tabLeft_stay.png");
        image_res.tabLeft_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/button/tabLeft_down.png");
        
        image_res.leftpane=XImage_LoadZip(L"qqImage.zip",L"qqImage/leftpane.png");
        image_res.tab1=XImage_LoadZip(L"qqImage.zip",L"qqImage/tab1.png");
        image_res.tab2=XImage_LoadZip(L"qqImage.zip",L"qqImage/tab2.png");
        image_res.tab3=XImage_LoadZip(L"qqImage.zip",L"qqImage/tab3.png");
    
        image_res.talkLabel_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/talkLabel_leave.png");
        image_res.talkLabel_stay=XImage_LoadZip(L"qqImage.zip",L"qqImage/talkLabel_stay.png");
        image_res.talkLabel_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/talkLabel_check.png");
    
        image_res.talktbico1=XImage_LoadZip(L"qqImage.zip",L"qqImage/talktbico1.png");
        image_res.talktbico2=XImage_LoadZip(L"qqImage.zip",L"qqImage/talktbico2.png");
        image_res.talktbico3=XImage_LoadZip(L"qqImage.zip",L"qqImage/talktbico3.png");
    
        image_res.imp_shrink=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_shrink.png");
        image_res.imp_expand=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_expand.png");
        image_res.imp_icon_1=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_icon_1.png");
        image_res.imp_icon_2=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_icon_2.png");
        image_res.imp_icon_3=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_icon_3.png");
        image_res.imp_icon_4=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_icon_4.png");
        image_res.imp_icon_5=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_icon_5.png");
        image_res.imp_icon_6=XImage_LoadZip(L"qqImage.zip",L"qqImage/avatar/imp_icon_6.png");
    
        image_res.scroll_thumb_leave=XImage_LoadZipAdaptive(L"qqImage.zip",L"qqImage/scroll_thumb_leave.png",NULL,3,11,3,27);
        image_res.scroll_thumb_down=XImage_LoadZipAdaptive(L"qqImage.zip",L"qqImage/scroll_thumb_down.png",NULL,3,11,3,27);
    
        image_res.scroll_up_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/scroll_up_leave.png");
        image_res.scroll_up_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/scroll_up_Down.png");
    
        image_res.scroll_down_leave=XImage_LoadZip(L"qqImage.zip",L"qqImage/scroll_down_leave.png");
        image_res.scroll_down_down=XImage_LoadZip(L"qqImage.zip",L"qqImage/scroll_down_down.png");
    }
    
    
    void HandleButton_Close(HELE hClose)
    {
        XEle_SetBkTransparent(hClose,true);
        XEle_EnableFocus(hClose,false);
        RECT rc={0,1,42,18};
        XEle_SetRect(hClose,&rc);
        XBtn_SetImageLeave(hClose,image_res.close_leave);
        XBtn_SetImageStay(hClose,image_res.close_stay);
        XBtn_SetImageDown(hClose,image_res.close_down);
    }
    
    void HandleButton_Max(HELE hMax)
    {
        XEle_EnableFocus(hMax,false);
        RECT rc={0,1,26,18};
        XEle_SetRect(hMax,&rc);
        XBtn_SetImageLeave(hMax,image_res.max_leave);
        XBtn_SetImageStay(hMax,image_res.max_stay);
        XBtn_SetImageDown(hMax,image_res.max_down);
    }
    
    void HandleButton_Min(HELE hMin)
    {
        XEle_SetBkTransparent(hMin,true);
        XEle_EnableFocus(hMin,false);
        RECT rc={0,1,25,18};
        XEle_SetRect(hMin,&rc);
        XBtn_SetImageLeave(hMin,image_res.min_leave);
        XBtn_SetImageStay(hMin,image_res.min_stay);
        XBtn_SetImageDown(hMin,image_res.min_down);
    }
    
    void CreateWeatherButton(HWINDOW hWindow)
    {
        hWeather=XBtn_Create(WINDOW_WIDTH-38-10,10,38,38,NULL,hWindow);
        XBtn_EnableCursorHand(hWeather,true);
        XEle_SetBkTransparent(hWeather,true);
        XBtn_SetImageLeave(hWeather,image_res.weather);
        XBtn_SetImageStay(hWeather,image_res.weather);
        XBtn_SetImageDown(hWeather,image_res.weather);
    }
    
    void HandleButton_Face(HELE hFace)
    {
        XEle_SetBkTransparent(hFace,true);
        XEle_EnableFocus(hFace,false);
        XBtn_SetImageLeave(hFace,image_res.face_leave);
        XBtn_SetImageStay(hFace,image_res.face_stay);
        XBtn_SetImageDown(hFace,image_res.face_stay);
    }
    
    void HandleButton_UserState(HELE hUserState)
    {
        XEle_SetBkTransparent(hUserState,true);
        XEle_EnableFocus(hUserState,false);
        XBtn_SetImageLeave(hUserState,image_res.userstate_leave);
        XBtn_SetImageStay(hUserState,image_res.userstate_stay);
        XBtn_SetImageDown(hUserState,image_res.userstate_down);
    }
    
    void HandleButton_UserSign(HELE hUserSign)
    {
        XEle_SetBkTransparent(hUserSign,true);
        XEle_EnableFocus(hUserSign,false);
        XBtn_SetTextAlign(hUserSign,DT_SINGLELINE | DT_VCENTER);
    
        XBtn_SetImageLeave(hUserSign,image_res.button_leave);
        XBtn_SetImageStay(hUserSign,image_res.button_stay);
        XBtn_SetImageDown(hUserSign,image_res.button_down);
    }
    
    void HandleEdit_Search(HELE hSearch)
    {
        XSView_SetSpacing(hSearch,8,5,35,0);
        XEle_EnableBorder(hSearch,false);
        XSView_SetImage(hSearch,image_res.searchedit);
    }
    
    HELE CreateToolButton(HWINDOW hWindow,int x,int y,int cx,int cy)
    {
        HELE hButton=XBtn_Create(x,y,cx,cy,NULL,hWindow);
        XEle_SetBkTransparent(hButton,true);
        XEle_EnableFocus(hButton,false);
    
        XBtn_SetImageLeave(hButton,image_res.button_leave);
        XBtn_SetImageStay(hButton,image_res.button_stay);
        XBtn_SetImageDown(hButton,image_res.button_down);
    
        return hButton;
    }
    
    HELE CreateToolSearchButton(HWINDOW hWindow)
    {
        hButtonTool6=XBtn_Create(94,WINDOW_HEIGHT-50,60,22,NULL,hWindow);
        XEle_SetBkTransparent(hButtonTool6,true);
        XEle_EnableFocus(hButtonTool6,false);
    
        XBtn_SetImageLeave(hButtonTool6,image_res.button_leave);
        XBtn_SetImageStay(hButtonTool6,image_res.button_stay);
        XBtn_SetImageDown(hButtonTool6,image_res.button_down);
    
        XBtn_SetText(hButtonTool6,L"Search");
        XBtn_SetIcon(hButtonTool6,image_res.search);
        return hButtonTool6;
    }
    
    void HandleCreateToolButton(HWINDOW hWindow)
    {
        HELE hButton=CreateToolButton(hWindow,10,52,22,20);
        XBtn_SetIcon(hButton,image_res.icon1);
    
        hButton=CreateToolButton(hWindow,32,52,22,20);
        XBtn_SetIcon(hButton,image_res.icon2);
    
        hButton=CreateToolButton(hWindow,54,52,22,20);
        XBtn_SetIcon(hButton,image_res.icon3);
    
        hButtonSkin=CreateToolButton(hWindow,WINDOW_WIDTH-10-22,52,22,20);
        XBtn_SetIcon(hButtonSkin,image_res.icon8);
    
        hButtonMsg=CreateToolButton(hWindow,WINDOW_WIDTH-10-22-22,52,22,20);
        XBtn_SetIcon(hButtonMsg,image_res.icon7);
    
    //
        hButtonTool1=CreateToolButton(hWindow,50,WINDOW_HEIGHT-73,22,22);
        XBtn_SetIcon(hButtonTool1,image_res.icon9);
    
        hButtonTool2=CreateToolButton(hWindow,72,WINDOW_HEIGHT-73,22,22);
        XBtn_SetIcon(hButtonTool2,image_res.icon10);
    
        hButtonTool3=CreateToolButton(hWindow,94,WINDOW_HEIGHT-73,22,22);
        XBtn_SetIcon(hButtonTool3,image_res.icon11);
    /
        hButtonTool4=CreateToolButton(hWindow,50,WINDOW_HEIGHT-50,22,22);
        XBtn_SetIcon(hButtonTool4,image_res.icon15);
    
        hButtonTool5=CreateToolButton(hWindow,72,WINDOW_HEIGHT-50,22,22);
        XBtn_SetIcon(hButtonTool5,image_res.icon16);
    
        CreateToolSearchButton(hWindow);
    }
    
    void HandleCreateMainMenuButton(HWINDOW hWindow)
    {
        hButtonMainMenu=XBtn_Create(3,WINDOW_HEIGHT-68,42,42,NULL,hWindow);
        XEle_SetBkTransparent(hButtonMainMenu,true);
        XEle_EnableFocus(hButtonMainMenu,false);
        XBtn_SetImageLeave(hButtonMainMenu,image_res.mainMenu_leave);
        XBtn_SetImageStay(hButtonMainMenu,image_res.mainMenu_stay);
        XBtn_SetImageDown(hButtonMainMenu,image_res.mainMenu_stay);
    
        //隐藏左侧工具条面板按钮
        hButtonHidePane=XBtn_Create(1,WINDOW_HEIGHT-76,15,15,NULL,hWindow);
        XEle_SetBkTransparent(hButtonHidePane,true);
        XEle_EnableFocus(hButtonHidePane,false);
        XBtn_SetImageLeave(hButtonHidePane,image_res.hideleftpanel_leave);
        XBtn_SetImageStay(hButtonHidePane,image_res.hideleftpanel_stay);
        XBtn_SetImageDown(hButtonHidePane,image_res.hideleftpanel_stay);
    }
    
    HELE HandleCreateLeftPaneButton(HELE hPic,int x,int y,int cx,int cy)
    {
        HELE hButton=XBtn_Create(x,y,cx,cy,NULL,hPic);
        XEle_SetBkTransparent(hButton,true);
        XEle_EnableFocus(hButton,false);
    
        XBtn_SetImageLeave(hButton,image_res.tabLeft_leave);
        XBtn_SetImageStay(hButton,image_res.tabLeft_stay);
        XBtn_SetImageDown(hButton,image_res.tabLeft_down);
        XBtn_SetImageCheck(hButton,image_res.tabLeft_stay);
    
        return hButton;
    }
    
    void HandleCreateLeftPane(HWINDOW hWindow)
    {
        hLeftPane=XPic_Create(0,99,33,WINDOW_HEIGHT-99-55-22,hWindow);
        XPic_SetImage(hLeftPane,image_res.leftpane);
        XPic_EnableImageStretch(hLeftPane,true);
    
        HELE hButton=HandleCreateLeftPaneButton(hLeftPane,0,3,30,30);
        XBtn_SetIcon(hButton,image_res.tab1);
        hButton=HandleCreateLeftPaneButton(hLeftPane,0,33,30,30);
        XBtn_SetIcon(hButton,image_res.tab2);
        hButton=HandleCreateLeftPaneButton(hLeftPane,0,63,30,30);
        XBtn_SetIcon(hButton,image_res.tab3);
    }
    
    //好友项
    bool CALLBACK OnFriendsLButtonUp(HELE hEle,UINT flags,POINT *pPt) 
    {
        int id=XTree_HitTest(hEle,pPt);
        if(group1==id || group2==id)
        {
            if(XTree_IsExpand(hEle,id))
            {
                XTree_SetItemImage(hTree,id,0);
                XTree_Expand(hEle,id,false);
            }else
            {
                XTree_SetItemImage(hTree,id,1);
                XTree_Expand(hEle,id,true);
            }
        }
        return false;
    }
    
    void HandleCreateMainTab(HWINDOW hWindow)
    {
        hTabBar=XTabBar_Create(33,99,WINDOW_WIDTH-6-33,30,hWindow);
        XEle_SetBkColor(hTabBar,RGB(255,0,0));
        XTabBar_AddLable(hTabBar,L"");
        XTabBar_AddLable(hTabBar,L"");
        XTabBar_AddLable(hTabBar,L"");
        XTabBar_EnableTile(hTabBar,true);
        /
        HELE hButton=XTabBar_GetLable(hTabBar,0);
        XEle_EnableFocus(hButton,false);
        XBtn_EnableImageStretch(hButton,true);
        XBtn_SetIcon(hButton,image_res.talktbico1);
    
        XBtn_SetImageLeave(hButton,image_res.talkLabel_leave);
        XBtn_SetImageStay(hButton,image_res.talkLabel_stay);
        XBtn_SetImageDown(hButton,image_res.talkLabel_down);
        XBtn_SetImageCheck(hButton,image_res.talkLabel_down);
    
        ///
        hButton=XTabBar_GetLable(hTabBar,1);
        XEle_EnableFocus(hButton,false);
        XBtn_EnableImageStretch(hButton,true);
        XBtn_SetIcon(hButton,image_res.talktbico2);
    
        XBtn_SetImageLeave(hButton,image_res.talkLabel_leave);
        XBtn_SetImageStay(hButton,image_res.talkLabel_stay);
        XBtn_SetImageDown(hButton,image_res.talkLabel_down);
        XBtn_SetImageCheck(hButton,image_res.talkLabel_down);
        /
        hButton=XTabBar_GetLable(hTabBar,2);
        XEle_EnableFocus(hButton,false);
        XBtn_EnableImageStretch(hButton,true);
        XBtn_SetIcon(hButton,image_res.talktbico3);
    
        XBtn_SetImageLeave(hButton,image_res.talkLabel_leave);
        XBtn_SetImageStay(hButton,image_res.talkLabel_stay);
        XBtn_SetImageDown(hButton,image_res.talkLabel_down);
        XBtn_SetImageCheck(hButton,image_res.talkLabel_down);
    
        //好友列表
        hTree=XTree_Create(33,129,WINDOW_WIDTH-6-33,WINDOW_HEIGHT-130-55-22,hWindow);
        XTabBar_SetBindEle(hTabBar,0,hTree);
        XSView_SetSpacing(hTree,0,0,0,0);
        XTree_EnableLine(hTree,false);
        XTree_EnableButton(hTree,false);
        XTree_SetIndentation(hTree,0);
        XTree_SetItemHeight(hTree,28);
        XTree_SetSpacingLeft(hTree,10);
    
        HXCGUI hImageList1=XImageList_Create(11,6);
        XImageList_AddImage(hImageList1,image_res.imp_shrink);
        XImageList_AddImage(hImageList1,image_res.imp_expand);
    
        XImageList_AddImage(hImageList1,image_res.imp_icon_1);
        XImageList_AddImage(hImageList1,image_res.imp_icon_2);
        XImageList_AddImage(hImageList1,image_res.imp_icon_3);
        XImageList_AddImage(hImageList1,image_res.imp_icon_4);
        XImageList_AddImage(hImageList1,image_res.imp_icon_5);
        XImageList_AddImage(hImageList1,image_res.imp_icon_6);
    
        XTree_SetImageList(hTree,hImageList1);
        group1=XTree_InsertItem(hTree,L"我的好友[6/9]",XTREE_ROOT,1);
        group2=XTree_InsertItem(hTree,L"同事[6/10]",XTREE_ROOT,1);
    
        XTree_InsertItem(hTree,L"梦飞",group1,3);
        wchar_t name[100]={0};
        for(int i=0;i<8;i++)
        {
            swprintf(name,L"炫彩好友-%d",i);
            XTree_InsertItem(hTree,name,group1, i%6+2);
        }
    
        for(int i=0;i<10;i++)
        {
            swprintf(name,L"炫彩好友-%d",i);
            XTree_InsertItem(hTree,name,group2, i%6+2);
        }
    
        HELE hScrollBar=XSView_GetVScrollBar(hTree);
        XSBar_SetImageLeaveSlider(hScrollBar,image_res.scroll_thumb_leave);
        XSBar_SetImageStaySlider(hScrollBar,image_res.scroll_thumb_leave);
        XSBar_SetImageDownSlider(hScrollBar,image_res.scroll_thumb_down);
    
        XSBar_SetImageLeaveUp(hScrollBar,image_res.scroll_up_leave);
        XSBar_SetImageStayUp(hScrollBar,image_res.scroll_up_leave);
        XSBar_SetImageDownUp(hScrollBar,image_res.scroll_up_down);
    
        XSBar_SetImageLeaveDown(hScrollBar,image_res.scroll_down_leave);
        XSBar_SetImageStayDown(hScrollBar,image_res.scroll_down_leave);
        XSBar_SetImageDownDown(hScrollBar,image_res.scroll_down_down);
        
        XEle_RegisterMessage(hTree,XM_LBUTTONUP,OnFriendsLButtonUp);
    }
    
    bool CALLBACK OnWndNCEndDrawWindow(HWINDOW hWindow,HDC hdc)
    {
        XDraw_HImage(hdc,image_res.hImageLogo,8,3);
    
        SetBkMode(hdc,TRANSPARENT);
        TextOut(hdc,100,28,L"炫彩界面库",5);
    
        return false;
    }
    
    bool CALLBACK OnWndSize(HWINDOW hWindow,UINT flags,SIZE *pSize)
    {
        RECT rc={pSize->cx-38-10,10,pSize->cx-10,38};
        XEle_SetRect(hWeather,&rc);
    
        rc.left=60;
        rc.top=25;
        rc.right=pSize->cx-60;
        rc.bottom=45;
        XEle_SetRect(hUserSign,&rc);
    
        rc.left=pSize->cx-10-22;
        rc.top=52;
        rc.right=rc.left+22;
        rc.bottom=rc.top+20;
        XEle_SetRect(hButtonSkin,&rc);
    
        rc.left=pSize->cx-10-22-22;
        rc.top=52;
        rc.right=rc.left+22;
        rc.bottom=rc.top+20;
        XEle_SetRect(hButtonMsg,&rc);
    
        rc.left=33;
        rc.top=99;
        rc.right=pSize->cx-6;
        rc.bottom=rc.top+30;
        XEle_SetRect(hTabBar,&rc);
    
        rc.left=33;
        rc.top=129;
        rc.right=pSize->cx-6;
        rc.bottom=pSize->cy-56-22;
        XEle_SetRect(hTree,&rc);
    
        rc.left=1;
        rc.top=pSize->cy-76;
        rc.right=rc.left+15;
        rc.bottom=rc.top+15;
        XEle_SetRect(hButtonHidePane,&rc);
    
        rc.left=3;
        rc.top=pSize->cy-68;
        rc.right=rc.left+42;
        rc.bottom=rc.top+42;
        XEle_SetRect(hButtonMainMenu,&rc);
    
        rc.left=50;
        rc.top=pSize->cy-73;
        rc.right=rc.left+22;
        rc.bottom=rc.top+22;
        XEle_SetRect(hButtonTool1,&rc);
    
        rc.left=72;
        rc.top=pSize->cy-73;
        rc.right=rc.left+22;
        rc.bottom=rc.top+22;
        XEle_SetRect(hButtonTool2,&rc);
    
        rc.left=94;
        rc.top=pSize->cy-73;
        rc.right=rc.left+22;
        rc.bottom=rc.top+22;
        XEle_SetRect(hButtonTool3,&rc);
    
        rc.left=50;
        rc.top=pSize->cy-50;
        rc.right=rc.left+22;
        rc.bottom=rc.top+22;
        XEle_SetRect(hButtonTool4,&rc);
    
        rc.left=72;
        rc.top=pSize->cy-50;
        rc.right=rc.left+22;
        rc.bottom=rc.top+22;
        XEle_SetRect(hButtonTool5,&rc);
    
        rc.left=94;
        rc.top=pSize->cy-50;
        rc.right=rc.left+60;
        rc.bottom=rc.top+22;
        XEle_SetRect(hButtonTool6,&rc);
    
        rc.left=0;
        rc.top=99;
        rc.right=33;
        rc.bottom=pSize->cy-55-22;
        XEle_SetRect(hLeftPane,&rc);
    
        rc.left=1;
        rc.top=73;
        rc.right=pSize->cx-8;
        rc.bottom=rc.top+26;
        XEle_SetRect(hSearchEdit,&rc);
        return false;
    }
    
    bool CALLBACK OnWndDestroy(HWINDOW hWindow) 
    {
        if(image_res.hImageLogo)
            XImage_Destroy(image_res.hImageLogo);
        return false;
    }
    
    int APIENTRY _tWinMain(HINSTANCE hInstance,  HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
    {
        XInitXCGUI();
    
        int style=XC_SY_DEFAULT&~XC_SY_DRAW_CAPTION_ICON;
        style&=~XC_SY_DRAW_CAPTION_TITLE;
        //创建窗口
        HWINDOW hWindow=XWnd_CreateWindow(0,0,WINDOW_WIDTH,WINDOW_HEIGHT,L"炫彩界面库-窗口",NULL,style);
        XWnd_EnableDragWindow(hWindow,true);
        XWnd_SetBorderSize(hWindow,3,3,3,3);
        XWnd_SetRoundSize(hWindow,9);
        XWnd_SetCaptionHeight(hWindow,22);
        XWnd_SetMinWidth(hWindow,250);
        XWnd_SetMinHeight(hWindow,300);
    
        XWnd_EnableBorderStrokeInner(hWindow,false);
        XWnd_EnableBorderStrokeOuter(hWindow,false);
    
        LoadImageRes(); //加载图片资源
    
        //窗口背景图片
        XWnd_SetImageNC(hWindow,image_res.image_bk);
    
        //关闭按钮
        HELE hClose=XWnd_GetButtonClose(hWindow);
        HandleButton_Close(hClose);
    
        //最大化按钮
        HELE hMax=XWnd_GetButtonMax(hWindow);
        HandleButton_Max(hMax);
    
        //最小化按钮
        HELE hMin=XWnd_GetButtonMin(hWindow);
        HandleButton_Min(hMin);
    
        //天气
        CreateWeatherButton(hWindow);
    
        //头像
        HELE hFace=XBtn_Create(10,0,48,48,NULL,hWindow);
        XBtn_EnableCursorHand(hFace,true);
        HandleButton_Face(hFace);
    
        //状态
        HELE hUserState=XBtn_Create(60,0,32,22,NULL,hWindow);
        HandleButton_UserState(hUserState);
    
        //签名
        hUserSign=XBtn_Create(60,25,WINDOW_WIDTH-60-62,20,L"签名:www.xcgui.com",hWindow);
        HandleButton_UserSign(hUserSign);
    
        //搜索框
        hSearchEdit=XEdit_Create(1,73,WINDOW_WIDTH-8,26,hWindow);
        HandleEdit_Search(hSearchEdit);
    
        //创建工具按钮
        HandleCreateToolButton(hWindow);
    
        //主菜单按钮
        HandleCreateMainMenuButton(hWindow);
    
        //创建左边工具面板
        HandleCreateLeftPane(hWindow);
    
        //tab页
        HandleCreateMainTab(hWindow);
    
        XWnd_Adjust(hWindow);
    
        XWnd_RegisterNCMessage(hWindow,XWM_NCENDPAINT,OnWndNCEndDrawWindow);
        XWnd_RegisterMessage(hWindow,WM_SIZE,OnWndSize);
        XWnd_RegisterMessage(hWindow,WM_DESTROY,OnWndDestroy);
    
        XWnd_ShowWindow(hWindow,SW_SHOW);
        XRunXCGUI();
        return 0;
    }

    源代码下载

    展开全文
  • android 图片选择器

    2018-01-23 10:10:10
    新增自定义 文字颜色 背景色让风格和项目更搭配 19.新增多图裁剪功能 20.新增LuBan多图压缩 21.新增单独拍照功能 22.新增压缩大小设置 23.新增Luban压缩档次设置 24.新增圆形头像裁剪 25.新增音频功能查询
  • 1、具备自动生浮动标题目录(可隐藏) 2、页首目录概要 3、主标题有明显的标志背景颜色,二级标题缩进合适 ...10、黑色代码主题,常用的黑色主题 转载于:https://www.cnblogs.com/CH520/p/9941915....
  • QQ手机版 V5.3.1

    2015-01-09 22:30:00
    - 个性主张:丰富主题,多彩气泡,自定义聊天背景,自定义资料卡背景 手机QQ安卓版更新内容 - 热聊,汇聚身边好玩的人和事 - 发现附近心动的人,开启“爆灯”模式 - 随时漫游各地,穿越世界交朋友 - 语音通话...
  • Android App切换主题的实现原理剖析

    千次阅读 2016-05-05 10:05:10
    体验过它们的主题切换后你会发现大部分效果是更换相关背景图片、背景颜色、字体颜色等来完成的,网上这篇文章对主题切换讲解的比较不错,今天我们从源码的角度来学习一下主题切换功能,如果你对这块
  • WP主题:HotNewspro 2.72

    2013-10-05 09:45:41
    打开背景设置页面,可以通过上传图片或选择一个颜色改变主题背景风格,可惜受主题圆角图片限制,只能使用与浅灰色相近的图片及颜色,如图: ■ 顶部 主题支持WP自定义顶部图片功能。使用前需到主题设置中关闭顶部...
  • QQ手机版,致力于更完美的移动社交、娱乐与生活体验――乐在沟通15年,聊天欢乐8亿人! qqlite_3.2.0.347_android 3.7m 【主要功能】 ...·个性主张:丰富主题,多彩气泡,自定义聊天背景,自定义资料卡背景
  • android QQ v5.3.1.2335-play

    2015-01-14 17:43:56
    ·个性主张:丰富主题,多彩气泡,自定义聊天背景,自定义资料卡背景 【更新说明】: - 热聊,汇聚身边好玩的人和事 - 巧遇附近心动的人,开启“爆灯”模式 - 随时漫游各地,穿越世界交朋友 - 语音通话彩铃,从此...
  • 一,一般设置:logo图像添加,favicon图标,主题布局3种,主题风格13种,背景设置可颜色可图片,首页缩略图开启,左侧菜单开启,文章内页版权设置,网站底部版权设置,备案号设置。 二,幻灯片开启,轮播图片(1,2,3...
  • 以新建的遮罩层显示大图片越来越受到主流网站的认可和重视,现在QQ空间和人人网两大社区都采用了此种方法来展示照片。这种展示照片的方式确实很实用:不用重新打开窗口;点击空白区域自动关闭;背景半透明,突出主题...
  • 不管你是在qq聊天还是在办公室里执行文档制作,都会时不时的截取一张或两张甚至更多的图片作为信息进行处理、进行编辑。高效的工作已经成为社会主题,为了提高生活节奏和工作效率,我们可以使用一些截图工具来处理...
  • 图表主题动画 CPU动态折线图 QtDataVisualization 柱状图3D 太阳磁场线 余弦波3D PyQtGraph 鼠标获取X轴坐标 禁止右键点击功能、鼠标滚轮,添加滚动条等功能 工具类 滚动区相关 Animation 窗口淡入淡出 ...
  • 两步:我的网站-源码

    2021-02-13 16:13:03
    文章背景图片全部换成非常清晰的图片,同时网页背景和主页的背景都改成了我现在的背景,如果需要修改文章背景的可以看后面我的详细介绍。 3.评论表情更新 本次更新添加了知乎表情和哔哩哔哩表情,同时删除了QQ表情...
  • 本次的主题是有关Java界面类的初步使用:以QQ登录界面作为初实例 首先是对类与对象基础的复习: 类:抽象总结 class ...首先是一个帅气的背景图片 呃……好像也不是很帅气,嘛将就将就 还有输入框和密码框 ...
  • 微舞幻灯是一款免费的幻灯片制作工具,具有幻灯片播放功能,独有的绽放演示方式,支持淡入淡出动画,支持从模板新建,具有24套风格主题,支持背景图片,背景色,本地打开和保存文件,把幻灯片保存成长图片用于发送...
  • Android换肤技术总结

    2016-03-04 10:07:35
    Android换肤技术总结 ...多种主题切换,通常为会员特权,如QQ/QQ空间。 对于第一种来说,目测应该是直接通过本地theme来做的,即所有图片/颜色的资源都在apk里面打包了。 而对于第二种,则相对
  • – 多种主题切换,通常为会员特权,如QQ/QQ空间。 对于第一种来说,目测应该是直接通过本地theme来做的,即所有图片/颜色的资源都在apk里面打包了。 而对于第二种,则相对复杂一些,由于作为一种线上服务,可能上架...
  • 换肤功能的实现

    2016-10-10 09:58:31
    记得大概两年前做过一款应用,涉及的主题皮肤的更换,并不是单纯的只换背景颜色,导航栏颜色,很类似于QQ里面的皮肤更换,而是需要更换整个应用的80%图片,还有包括一部分的字体.  我们整个ui页面和大多数app...
  • WEB | 文件上传漏洞

    2020-10-13 19:44:05
    文件上传包括了上传头像,上传相册,上传附件,添加新闻图片,自定义主题背景,新闻投稿等等,一个很简单的栗子就是微信或者QQ的头像上传功能,或者上传到百度云这种 什么是文件上传漏洞? 文件上传漏洞是指由于...
  • 17.新增自定义 文字颜色 背景色让风格和项目更搭配 18.新增多图裁剪功能 19.新增LuBan多图压缩 20.新增单独拍照功能 javaapk之前也介绍过很多类似的项目,感兴趣的可以在javaapk图片处理分类中下载。

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

qq主题背景图片