A. android开发者:修改android图标ic_launcher,为自定义的.
android图标ic_launcher的修改方式:
将自定义的图片复制到 res/drawable目录下,例如 logo.png.
打开AndroidManifest.xml文件.
在application节点中修改android:icon为android:icon="@drawable/logo"即可.
注意,部分Android手机的桌面有缓存,改了icon以后,桌面应用图标并没有变,需要重启手机才会生效.
B. Android 怎么把Launcher桌面的每一屏修改为x*x的布局
Android 怎么把Launcher桌面的每一屏修改为x*x的布局
安装scim:
apt-get install scim scim-chinese
在 /etc/Xsession.d 下建立文件 95xim
写入下面这些,重启
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"
export G_FILENAME_ENCODING=@UTF-8
export XIM="SCIM"
export XMODIFIERS="@im=SCIM"
export GTK_IM_MODULE=scim
export QT_IM_MODULE=scim
scim -d
这样就可以在X启动后,按ctrl+space切换到scim输入法了。
C. android可以自己开发一个launcher,并且替换掉系统的吗
可以,但是不建议这么做,开发的laucher的和系统的其他app兼容性需要考虑。
开发一个laucher:在你的app的androidmanifest.xml中定义<category android:name="android.intent.category.LAUNCHER" />
删除系统的laucher:需要获得root权限,建议保留,因为充满很多危险。
默认:开发的launcher设置默认就好了。
安卓系统中的桌面启动器,安卓系统的桌面UI统称为Launcher
D. 这8款Android桌面小部件,能让你的Android好用很多倍
安卓手机一直以来以其可玩性高而受到欢迎,即使是简单的桌面小部件,也有人能玩出花来。强大如 Zooper Widget 和 KWGT 等复杂且定制性极强的美化类桌面插件应用,抑或是朴实无华但又必不可少的时间和天气小部件,桌面小部件实实在在地占据着每一部安卓手机桌面的一部分。
手机毕竟是拿来用的,对于大部人来说,是否实用、美观和方便才是考量一个小部件能否在桌面上生存的必要条件。本文就旨在介绍一些值得我们放置在桌面的应用小部件。
这些小部件更实用
Another Widget
自 Pixel Launcher 推出以后,简洁实用的 At A Glance 桌面插件便成为了诸多安卓用户心头的一颗朱砂痣,奈何高贵的 Pixel 用户专属这一限制使得我等只得望洋兴叹。好在,万能的 XDA 大神们动手破除了 Pixel Launcher 的诸多限制,使得更多人得以享用这一特性。但是面对更改图标困难、界面相对简陋的 Pixel Launcher ,广大人民群众日益增长的对于高自定义的需求和现有的不足之间的矛盾日益凸显。 Another Widget 的出现便很好地解决了这一矛盾:
Another Widget 的设置界面
Another Widget 是一款像素级模仿 At A Glance 这一特性的桌面小部件,对比 At A Glance ,它还有如下优点:支持更换字体颜色,可自定义显示的日历,设置即将到来的事件最早何时可以显示在桌面,还可以切换天气源。
显示效果
Google Calender 的日程列表
Google Calendar 的小部件有两种,一种为月视图,另一种为日程列表。相比于月视图,将日程列表放置在桌面更能帮助我们了解接下来的日程,起到良好的提醒作用。
Google Calender 日程列表
倒计时类
每个人的人生中总有些特殊而重要的时刻值得我们铭记和回顾,这个时候,把它们放置在桌面就显得很有必要。放置重要考试的倒计时能让我们每次看到桌面都“胆战心惊”,提醒我们滚去学习;同样也可以放置亲人或男/女朋友的生日倒计时乃至你们共同度过了多久的甜蜜岁月。万一被男/女朋友“不小心”看到没准还会被夸很有心。
我们可以使用“何时”、“倒数日”、“Hurry”等应用来添加倒计时小部件到桌面。
单事件效果对比
帮你更快地触发所需功能的小部件
iOS 于 2015 年宣布了 3D Touch 这一特性,旨在提高手机操作效率,帮助用户更快地从桌面进入所需功能。一年后,谷歌也推出了 Shortcuts 这一特性,其一度被看作是安卓版的 3D Touch 功能。不过不同于 3D Touch 对于手机硬件的硬性需要, Shortcuts 则只需要系统(Android 7.1 及以上)和应用支持,门槛低上了不少(安装 Nova Launcher 等第三方桌面更是可以让低安卓版本也享受这一特性)。
App Shortcuts
事实上,无论是 3D Touch 还是 App Shortcuts ,用户的实际利用率一直不高,一是因为每个应用长按调出的菜单功能不一样,记忆难度大;二是因为用户难以形成习惯。更不必说,许多国产定制 UI 直接阉割掉了这一功能。当然,我们还是可以尽可能地把这一特性利用起来,使之服务于我们。谷歌允许用户将 Shortcuts 中的某一项通过拖拽固定在桌面,这为用户提供了不少方便。那么哪些快捷方式值得我们单独将其放置在寸土寸金的桌面上呢?
支付宝“扫一扫”和“付款码”等小部件
移动支付的燎原之火早已烧遍全国,连门口卖鸡蛋灌饼的大爷都知道让你扫他的红包码了。扫码已经变成了手机摄像头所承担的重要功能之一,把“扫一扫”的小部件放在桌面,我们便无需再靠着一指禅点点点,只需一步,就能潇洒地付款走人。同样,“付款码”小部件放置在桌面也能在一定程度上减少操作。每次在超市排队的时候,看到大爷大妈们手忙脚乱地找付款码,都不禁感叹,所谓的科技进步带来的便捷究竟何时才能被所有人共享。
支付宝扫一扫
在这里不得不批评一下“生活方式应用”某信了,时至今日安卓版的微信也不支持 Shortcuts ,落后支付宝不是一点半点,是半年啊。想要快速打开微信扫一扫或者付款码我们只能等待官方支持了,当然了,MIUI 等国产系统的负一屏支持快速打开这些活动。对于原生或类原生系统的用户来说,现有方式均需要获取 root 权限,考虑到安全性,在此不做推荐。
虾米的“每日播放 30 首”和网易云的“私人 FM”
如果只是想要听歌,为了躲开漫长的开屏广告,我们可以把相应的快捷方式放置于桌面。这样只需一键便可开始畅享音乐。
通过常规方式打开:
常规方式打开
通过快捷方式打开:
快捷方式打开
同样实用的还有一闪的“相机”快捷方式,手机默认设置的“电池使用情况”快捷方式,适合更新强迫症的 Play Store 的“我的应用”快捷方式等等。我们可以根据自己使用某一功能的频率来决定是否需要放置相应的小部件,对于一些使用率不高的功能,我们通过长按图标调出即可。
值得一试的快捷方式
为了好玩,没卵用也要放的小部件
有些时候,为了好玩和个性,许多人会花费大量时间来美化桌面。这种行为我认为属于个人的爱好,尊重即可。不过,如果你只是想要小小地折腾一下,这里也推荐一款好玩的应用:会话微件。
会话微件支持在桌面放置“对话”、“单句”和“卡片”,甚至支持和同样使用这一应用的人在桌面上“聊天”。我们可以利用会话微件放置自己喜欢的歌词或名言,还能够查看天气甚至查询物流情况,根据会话微件的教程,我们能够做出各种效果的桌面小部件。具体实用与否还要由你来定夺。
E. android 自定义的launcher在6.0后需要动态申请权限
6.0权限的基本知识,以下是需要单独申请的权限,共分为9组,每组只要有一个权限申请成功了,就默认整组权限都可以使用了。
group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS group:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAIL group:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR group:android.permission-group.CAMERA
permission:android.permission.CAMERA group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS group:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO group:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS
以下是普通权限,只需要在AndroidManifest.xml中申请即可。
android.permission.ACCESS_LOCATION_EXTRA_COMMANDSF. android 怎么改变应用图标
在windows7操作系统Android studio中使用如下方法改变android的应用图标.。
1、使用android studio创建一个项目,如下图:
3、修改android:icon="@mipmap/ic_launcher"属性,选择一张图片,即可更好应用的图标。
G. android 怎样调用launcher
如果你要定制一个Android系统,你想用你自己的Launcher(Home)作主界面来替换Android自带的Home,而且不希望用户安装的Launcher来替换掉你的Launcher,应该如何来实现呢?
我们可以通过修改Framework层来实现这样的功能。
1) 首先了解一下Android的启动过程。
Android系统的启动先从Zygote开始启动,然后......(中间的过程就不说了).....一直到了SystemServer(framework)这个地方,看到这段代码:
/**
* This method is called from Zygote to initialize the system. This willcause the native
* services (SurfaceFlinger, AudioFlinger, etc..) to be started. Afterthat it will call back
* up into init2() to start the Android services.
*/
native public static void init1(String[] args);
public static void main(String[] args) {
if (SamplingProfilerIntegration.isEnabled()) {
SamplingProfilerIntegration.start();
timer = new Timer();
timer.schele(new TimerTask() {
@Override
public void run() {
SamplingProfilerIntegration.writeSnapshot("system_server");
}
}, SNAPSHOT_INTERVAL, SNAPSHOT_INTERVAL);
}
// The system server has to run all of the time, so it needs to be
// as efficient as possible with its memory usage.
VMRuntime.getRuntime().setTargetHeapUtilization(0.8f);
System.loadLibrary("android_servers");
init1(args);
}
public static final void init2() {
Log.i(TAG, "Entered the Android system server!");
Thread thr = new ServerThread();
thr.setName("android.server.ServerThread");
thr.start();
}
}
从SystemServer的main函数开始启动各种服务:
首先启动init1,然后启动init2.从上面的注释可以看到:init1这个方法时被Zygote调用来初始化系统的,init1会启动native的服务如SurfaceFlinger,AudioFlinger等等,这些工作做完以后会回调init2来启动Android的service。
这里我们主要来关注init2的过程。init2中启动ServerThread线程,ServerThread中启动了一系列的服务,比如这些:
ActivityManagerService
EntropyService
PowerManagerService
TelephonyRegistry
PackageManagerService
AccountManagerService
BatteryService
HardwareService
Watchdog
SensorService
BluetoothService
StatusBarService
ClipboardService
InputMethodManagerService
NetStatService
ConnectivityService
AccessibilityManagerService
NotificationManagerService
MountService
DeviceStorageMonitorService
LocationManagerService
SearchManagerService
FallbackCheckinService
WallpaperManagerService
AudioService
BackupManagerService
AppWidgetService
这些大大小小的服务起来以后,开始
((ActivityManagerService)ActivityManagerNative.getDefault()).systemReady()
在systemReady后开始开始启动Launcher。在寻找Launcher的时候是根据HOME的filter(在Manifest中定义的<categoryandroid:name="android.intent.category.HOME" />)来过滤。
然后根据filter出来的HOME来启动,如果只有一个HOME,则启动这个HOME,如果用户自己装了HOME,那就会弹出来一个列表供用户选择。
我们现在希望从这里弹出我们自己定制的Launcher,同时也不希望弹出选择HOME的界面,我们不希望用户修改我们的home,比如我们的home上放了好多广告,以及强制安装的程序,不希望用户把它干掉。
我们可以通过这样来实现:
2) 定义一个私有的filter选项,然后用这个选项来过滤HOME.
一般情况下我们使用Manifest中定义的<categoryandroid:name="android.intent.category.HOME"来过滤的,我们现在增加一个私有的HOME_FIRST过滤。
在Intent.java(frameworks/base/core/java/android/content/Intent.java)中添加两行代码
//lixinso:添加CATEGORY_FS_HOME
@SdkConstant(SdkConstantType.INTENT_CATEGORY)
public static final String CATEGORY_FS_HOME= "android.intent.category.FS_HOME";
3)修改和CATEGORY_HOME相关的所有的地方,都改成CATEGORY_FS_HOME,主要是framework中的这几个地方:使用grep命令查找要修改的地方:
grep CATEGORY_HOME -l * -R
将上述文件中和CATEGORY_HOME相关的所有的地方,都改成CATEGORY_FS_HOME。
4) 写一个自己的Launcher.
可以参考android sample中的Launcher,或者android源代码中的 /packages/apps/Launcher 来写。
在Launcher中标记其是不是Launcher的最关键的代码时Manifest中的filter:android:name="android.intent.category.HOME"
现在我们定义了自己的filter,那么,我们在我们自己写的Launcher中将Manifest改为:
<application android:process="android.process.acore3"android:icon="@drawable/icon"android:label="@string/app_name">
<activity android:name=".FirstAppActivity"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN" />
<categoryandroid:name="android.intent.category. FS_HOME" />
<categoryandroid:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MONKEY"/>
</intent-filter>
</activity>
</application>
然后将编译好的apk放到方式fs100_root/system/app目录下。
5)将Android自带的Launcher删除掉
包括源代码(packages/apps/Launcher)和apk(/out/target/proct/generic/system/app/Launcher.apk)。
6) 重新编译Android
做完这些工作,就可以重新编译Android了,我们可以编译修改过的几个相关的包,可以用mmm命令来编译部分的改动。这里需要这样编译:
$ source build/envsetup.sh
$ lunch
$ mmm frameworks/base
$ mmm frameworks/base/services/java
$ mmm frameworks/policies/base/mid
$ mmm frameworks/policies/base/phone
重新启动开发板,从开发板上就可以看到启动的Launcher是我们自己的Launcher,不会出现默认的Launcher了,也不会出现选择界面。
9)我们再验证一下,如果用户装上了一个其他的Launcher(Home)会怎么样。
从网上找一个一般的Launcher或者自己写一个一般的Launcher装上去,重新启动,不会出现选择界面。
按HOME键也不会出来两个HOME来选择。
这样我们就牢牢控制了用户的桌面。
只有我们自己定制的HOME才能装上。这对于定制Android设备的厂商很有用处。