zoukankan      html  css  js  c++  java
  • launcher 壁纸相关

    frameworks/base/core/java/android/app/WallpaperManager.java
    壁纸信息是通过WallpaperManager.java管理的,WallpaperManager通调用服务WallpaperManagerService来完成
    具体的实现

    frameworks/base/services/java/com/android/server/WallpaperManagerService.java
    从saveSettingsLocked方法可知
    壁纸信息保存在路径 data/system/users/0/wallpaper_info.xml 中
    文件记录的壁纸的宽度高度等信息

    从loadSettingsLocked方法中可知
    若获取的wallPaper的width小于 2*屏幕width
    则wallPaper的width被设置成 2*屏幕width


    1.如何添加修改壁纸列表?
    packages/apps/Launcher2/src/com/android/launcher2/WallpaperChooserDialogFragment.java
    从findWallpapers()方法,可以看到他是从wallpapers.xml的文件中读取壁纸信息列表的
    默认壁纸
    frameworks/base/core/java/android/app/WallpaperManager.java
    从getDefaultWallpaperLocked(Context context)方法可以看到
    默认壁纸读取的是frameworks/base/core/res/res/drawable-相关dpi/default_wallpaper.jpg


    2.壁纸如何随着屏幕切换移动?
    Workspace.java 方法
    private void syncWallpaperOffsetWithScroll() {
            final boolean enableWallpaperEffects = isHardwareAccelerated();
            if (enableWallpaperEffects) {
                mWallpaperOffset.setFinalX(wallpaperOffsetForCurrentScroll());
            }
    }
    没有开启硬件加速,壁纸便不会随着手指滑动

    3.壁纸选择器调用

    final Intent pickWallpaper = new Intent(Intent.ACTION_SET_WALLPAPER);
              Intent chooser = Intent.createChooser(pickWallpaper,
                      getText(R.string.chooser_wallpaper));
              startActivityForResult(chooser, REQUEST_PICK_WALLPAPER);

    开启壁纸选择器,所有<intent-filter> <action android:name="android.intent.action.SET_WALLPAPER" />  所有action为android.intent.action.SET_WALLPAPER的应用都会进入壁纸选择列表,

    默认壁纸在laucnher应用 WallpaperChooser.java

    WallpaperChooserDialogFragment.onCreateView() 方法中调用 findWallpapers() 从制定路径获取壁纸列表

  • 相关阅读:
    C++ Primer 笔记——语句
    C++ Primer 笔记——const 限定符
    C++ Primer 笔记——变量
    C++ Primer 笔记——函数
    C++ Primer 笔记——基本内置类型
    图的遍历算法:DFS、BFS
    python数据结构之图论
    下载文件的协议:HTTP、FTP、P2P
    HTTPS协议
    HTTP协议
  • 原文地址:https://www.cnblogs.com/adamli/p/3301293.html
Copyright © 2011-2022 走看看