
我想把这个图标换成我自己的头像,该怎么自定义图标,模拟着玩也可以
关注从上面可以看出:
因为本质上是希望使得布局组件在不同屏幕密度上显示相同的像素效果,那么,之前是绕了个弯使用dp解决这个问题,那么到底能不能直接用px解决呢?
即根据不同屏幕密度,控件选择对应的像素值大小
接下来介绍一种方法:百分比适配方法,步骤如下:
我可以提供如下的解决方案:
在应用的 AndroidManifest.xml 文件中加入如下语句:
<activity
android:name="MainActivity"
...
android:icon="@drawable/my_icon"/>
其中 drawable/my_icon 为你想要设置的图标的名称。
(1)创建一个新的图标布局,比如 res/layout/my_icon.xml ,并在其中定义布局以及图标的显示:
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_icon_image" />
其中 my_icon_image 为你想要设置的图标的名称。
(2)在应用的启动界面或者启动Activity中,将该布局和主要的短信应用activity关联起来:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setClassName("com.android.mms", "com.android.mms.ui.ConversationList");
intent.putExtra("customView", true);
intent.putExtra("customViewId", R.layout.my_icon);
startActivity(intent);
其中 "com.android.mms" 为短信应用的包名, "com.android.mms.ui.ConversationList"为类名,这里需要使用您自己的短信应用包名和类名。
这样就可以在短信应用的启动界面上显示自定义的图标了。
注意:这种做法并不推荐,因为在Android 5.0以上,Google已经禁止了利用反编译机制来修改系统应用的内部逻辑。
(1)在应用中将你想要显示的图标资源文件放在 res/drawable 目录下。
(2)在代码中创建一个新的Notification对象,并设置它的图标和其它属性:
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.your_icon, "New Message", System.currentTimeMillis());
notification.defaults |= Notification.DEFAULT_ALL;
notificationManager.notify(0, notification);
其中 R.drawable.your_icon 为你在步骤(1)中放置的图标的资源文件。
由于通知栏只允许显示来自系统或当前应用的图标,因此只有当这个Notification对象在应用的前台时,或者当这个Notification对象已经被添加到通知栏时,才能够在通知栏上显示自定义的图标。
希望这些方案对你有所帮助!