2016-02-06 24 views
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字體。
所以任何人都可以幫助我呢?

+0

您是否設置了要顯示的字體字體。您應該在您的資產中包含.ttf文件,並將其作爲字符串傳遞到您的customTypefaceSpan類 – Aziz

+0

是在此行「sb.setSpan(new CustomTypefaceSpan(」「,Constants.molla),0,sb.length() - 1, Spanned.SPAN_EXCLUSIVE_INCLUSIVE); 「Constants.molla是我的類型臉 – max

+0

我想你需要傳遞字符串系列中的東西以及 – Aziz

回答

1

我認爲你應該做一個替代方式來顯示你的自定義文本,我發現這個職位https://stackoverflow.com/a/4411060/1007087檢查這一點,我希望你可能會覺得這很有用。雖然它正在創建一個位圖,你可以做你的定製。