1
中使用自定義類型的臉部創建自定義通知嗨,我看到一些應用程序創建並顯示自定義字體的自定義通知,我使用谷歌搜索,我發現this question。
但是,這並不適合我這個工作是我的代碼在android
public static void CustomNotificationV(Context context,
String message,boolean enter) {
SpannableStringBuilder sb = new SpannableStringBuilder(message);
sb.setSpan(new CustomTypefaceSpan("", Constants.molla), 0, sb.length() - 1,
Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
int icon=R.drawable.ex;
// create new id
Date date = new Date();
int notificationid = (int) date.getTime();
long when = System.currentTimeMillis();
NotificationManager notificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(icon, message, when);
Intent notificationIntent = new Intent(context, Splash.class);
// set intent so it does not start a new activity
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent intent = PendingIntent.getActivity(context,
notificationid, notificationIntent, 0);
RemoteViews contentView = new RemoteViews(context
.getApplicationContext().getPackageName(),
R.layout.custom_notification);
contentView.setImageViewResource(R.id.leftimage,
icon);
contentView.setTextViewText(R.id.message_custom_notification, sb);
notification.contentView = contentView;
notification.contentIntent = intent;
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(notificationid, notification);
}
和我CustomTypefaceSpan類
package tools;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.text.TextPaint;
import android.text.style.TypefaceSpan;
/**
* Created by mk-rad on 08/02/2015.
*/
public class CustomTypefaceSpan extends TypefaceSpan {
private final Typeface newType;
public CustomTypefaceSpan(String family, Typeface type) {
super(family);
newType = type;
}
@Override
public void updateDrawState(TextPaint ds) {
applyCustomTypeFace(ds, newType);
}
@Override
public void updateMeasureState(TextPaint paint) {
applyCustomTypeFace(paint, newType);
}
private static void applyCustomTypeFace(Paint paint, Typeface tf) {
int oldStyle;
Typeface old = paint.getTypeface();
if (old == null) {
oldStyle = 0;
} else {
oldStyle = old.getStyle();
}
int fake = oldStyle & ~tf.getStyle();
if ((fake & Typeface.BOLD) != 0) {
paint.setFakeBoldText(true);
}
if ((fake & Typeface.ITALIC) != 0) {
paint.setTextSkewX(-0.25f);
}
paint.setTypeface(tf);
}
}
但是當我使用此代碼沒有任何反應,並通知顯示了defualt字體。
所以任何人都可以幫助我呢?
您是否設置了要顯示的字體字體。您應該在您的資產中包含.ttf文件,並將其作爲字符串傳遞到您的customTypefaceSpan類 – Aziz
是在此行「sb.setSpan(new CustomTypefaceSpan(」「,Constants.molla),0,sb.length() - 1, Spanned.SPAN_EXCLUSIVE_INCLUSIVE); 「Constants.molla是我的類型臉 – max
我想你需要傳遞字符串系列中的東西以及 – Aziz