HardBirch

给Luncher添加自定义壁纸(修改Luncher界面和在程序中修改壁纸)

时间:11-09-09 栏目:安卓源码解析与小应用 作者:张飞不张,文采横飞 评论:0 点击: 3,888 次

     首先,准备好两张内容相同的图片,规格分别为 107×80 640×480,格式为jpg格式,然后分别命名为wallpaper_papername_small和 wallpaper_papername。其中papername是你给图片起的名字。其中小图片是用于在选择wallpaper的那个gallery控件显示。wallpaper_papername为壁纸图片。

把图片放到/packages/apps/Launcher2/res/drawable-mdpi目录下。然后在文件/packages/apps/Launcher2/res/values-mdpi/wallpapers.xml中添加 <item>wallpaper_papername</item>

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="wallpapers" translatable="false">
        <item>wallpaper_lake</item>
        <item>wallpaper_sunset</item>
        <item>wallpaper_beach</item>
        <item>wallpaper_snow_leopard</item>
        <item>wallpaper_path</item>
        <item>wallpaper_sunrise</item>
        <item>wallpaper_mountain</item>
        <item>wallpaper_road</item>
        <item>wallpaper_jellyfish</item>
        <item>wallpaper_zanzibar</item>
        <item>wallpaper_blue</item>
        <item>wallpaper_grey</item>
        <item>wallpaper_green</item>
        <item>wallpaper_pink</item>
        <item>wallpaper_leaves</item>
    </string-array>
</resources>

如果你不是想修改Luncher的源代码,只是想在自己的程序中修改壁纸(wallpaper),可以采用一下方法:

首先我们需要取得设置壁纸的权限。和其它权限一样,只要在配置文件中加上以下配置信息即可。
<uses-permission android:name="android.permission.SET_WALLPAPER" />
然后在程序中调用如下代码即可设置桌面壁纸:
getApplicationContext().setWallpaper(bitmap)

 

给Luncher添加自定义壁纸(修改Luncher界面和在程序中修改壁纸):目前有

  1. 9楼
    haojunming:

    选择在做发送彩信的功能,发现一般手机都自带分享功能,可是里面包含蓝牙,我怎么样对分享里面的应用程序进行设置?希望您帮帮忙。

    这是我目前用的代码

    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra("address", "18701427983");
    intent.putExtra("compose_mode", false);
    intent.putExtra("exit_on_sent", true);
    intent.putExtra("subject", "彩信测试");
    intent.putExtra("sms_body", "this is mms send auto ");
    intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/ima.jpg"));
    // intent.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity");
    intent.setType("image/jpeg");
    startActivity(Intent.createChooser(intent, "Send MMS To"));
    我要是想对共享的应用程序进行过滤该怎么办?

    2011-10-18 11:48 [回复]
  2. [reply]haojunming[/reply]
    你说的什么意思?能说详细一点吗?我怎么不太明白,你是不是想用Intent.createChooser()这个函数啊?如果是的话你可以仔细看一下http://blog.csdn.net/aomandeshangxiao/article/details/6768249这篇。

    2011-10-18 13:41 [回复]
  3. 7楼
    hangejnu:

    壁纸的大小设置能不能在源码中进行决定,而不是我固定图片的大小,而这个设置的位置,在源码那个部分呢?

    2012-02-27 11:24 [回复]
  4. [reply]hangejnu[/reply]
    壁纸的大小不都是布满屏幕的吗?他的大小应该就几种屏幕规格大小啊!想问下,您想要弄成个什么效果呢???

    2012-02-27 13:54 [回复]
  5. 5楼
    hangejnu:

    你好,楼主。壁纸是布满屏幕的,比如说我的屏幕分辨率是1280*768,可是当我设置壁纸的时候,我只能够看到图片的一部分,也就是设置壁纸后的图片不只是1280*768,而我们看到的图片只是一部分,就是谁图片被放大处理了。我的图片格式是jpeg

    2012-02-27 16:52 [回复]
  6. [reply]hangejnu[/reply]
    最好按照屏幕大小,调整下jpg文件的大小和屏幕符合,然后你再试一下,有时候如果图片大小很不匹配的话,确实会出现很奇怪的问题。

    2012-02-28 10:02 [回复]
  7. 地板
    hangejnu:

    [reply]hangejnu[/reply]
    [reply]aomandeshangxiao[/reply]
    哎!现在就是放同等分辨率的图片他也会拉伸,老大现在要我改壁纸固定为屏幕分辨率的大小。

    2012-02-28 11:05 [回复]
  8. [reply]hangejnu[/reply]
    好像是自适应,但是在源码中是如何定义大小的,有没有定义大小的方法,这个还不太清楚,实在不行,你就给他加个方法吧。。。

    2012-02-28 14:06 [回复]
  9. 沙发
    MF_Shirley:

    [reply]hangejnu[/reply]
    这个我知道哦,launcher.java有关setWallpaperDimension(),它里面将宽*2作为长,把长作为宽,因为要适应竖屏。例如我做的是1024*768的分辨率,但墙纸的大小已经被重新计算为1536*1024,这就是为什么图片总是会变大了~~

    2012-03-07 11:33 [回复]

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐