android
Cant apply Custom font on app widget service
final Handler handler = new Handler(); timer = new Timer(); TimerTask updateWidget = new TimerTask() { #Override public void run() { handler.post(new Runnable() { public void run() { if (flag&&flag1) { flag = false; flag1=false; try { image = BitmapFactory.decodeStream((InputStream) new URL("http://openweathermap.org/img/w/" + prefs.getString("image", "") + ".png").getContent()); } catch (IOException e) { e.printStackTrace(); } if (state == 0) { remoteViews.setTextViewText(R.id.more_less, "Show more"); remoteViews.setViewVisibility(R.id.weather_icon1, View.GONE); remoteViews.setTextViewText(R.id.temperature, prefs.getString("vTemperature", "") + "" + unit); // remoteViews.setImageViewBitmap(R.id.temperature, getFontBitmap((prefs.getString("vTemperature", "") + "" + unit).toString(), Color.WHITE, 100)); remoteViews.setImageViewBitmap(R.id.weather_icon, image); if (city.length() > 12) { remoteViews.setTextViewTextSize(R.id.city, TypedValue.COMPLEX_UNIT_PX, 50f); } else { remoteViews.setTextViewTextSize(R.id.city, TypedValue.COMPLEX_UNIT_PX, 80f); } remoteViews.setTextViewText(R.id.city, city); remoteViews.setTextViewText(R.id.mainDescription, prefs.getString("mainDescription", "")); description = prefs.getString("description", ""); if (description.length() > 1) { description = description.substring(0, 1).toUpperCase() + description.substring(1).toLowerCase(); } remoteViews.setTextViewText(R.id.description, description); // remoteViews.setImageViewBitmap(R.id.description, buildUpdate(description)); } else { remoteViews.setTextViewText(R.id.more_less, "Show less"); remoteViews.setViewVisibility(R.id.weather_icon1, View.VISIBLE); remoteViews.setTextViewText(R.id.time_1, String.valueOf(timeList.get(0))); remoteViews.setTextViewText(R.id.time_2, String.valueOf(timeList.get(1))); remoteViews.setTextViewText(R.id.time_3, String.valueOf(timeList.get(2))); remoteViews.setTextViewText(R.id.time_4, String.valueOf(timeList.get(3))); remoteViews.setTextViewText(R.id.time_5, String.valueOf(timeList.get(4))); remoteViews.setTextViewText(R.id.temperature_1, minTempList.get(0) + "" + unit + "\\" + maxTempList.get(0) + "" + unit); remoteViews.setTextViewText(R.id.temperature_2, minTempList.get(1) + "" + unit + "\\" + maxTempList.get(1) + "" + unit); remoteViews.setTextViewText(R.id.temperature_3, minTempList.get(2) + "" + unit + "\\" + maxTempList.get(2) + "" + unit); remoteViews.setTextViewText(R.id.temperature_4, minTempList.get(3) + "" + unit + "\\" + maxTempList.get(3) + "" + unit); remoteViews.setTextViewText(R.id.temperature_5, minTempList.get(4) + "" + unit + "\\" + maxTempList.get(4) + "" + unit); remoteViews.setImageViewBitmap(R.id.icon_1, decodeBitmap(iconList.get(0))); remoteViews.setImageViewBitmap(R.id.icon_2, decodeBitmap(iconList.get(1))); remoteViews.setImageViewBitmap(R.id.icon_3, decodeBitmap(iconList.get(2))); remoteViews.setImageViewBitmap(R.id.icon_4, decodeBitmap(iconList.get(3))); remoteViews.setImageViewBitmap(R.id.icon_5, decodeBitmap(iconList.get(4))); remoteViews.setTextViewText(R.id.temperature, prefs.getString("vTemperature", "") + "" + unit); // remoteViews.setImageViewBitmap(R.id.temperature, getFontBitmap((prefs.getString("vTemperature", "") + "" + unit).toString(), Color.WHITE, 100)); remoteViews.setImageViewBitmap(R.id.weather_icon, image); if (city.length() > 12) { remoteViews.setTextViewTextSize(R.id.city, TypedValue.COMPLEX_UNIT_PX, 50f); } else { remoteViews.setTextViewTextSize(R.id.city, TypedValue.COMPLEX_UNIT_PX, 80f); } remoteViews.setTextViewText(R.id.city, city); remoteViews.setTextViewText(R.id.mainDescription, prefs.getString("mainDescription", "")); description = prefs.getString("description", ""); if (description.length() > 1) { description = description.substring(0, 1).toUpperCase() + description.substring(1).toLowerCase(); } remoteViews.setTextViewText(R.id.description, description); } appWidgetManager.updateAppWidget(widgetId, remoteViews); if (timer != null) { timer.cancel(); timer.purge(); timer = null; } } } }); } }; timer.schedule(updateWidget, 0, 200); } stopSelf(); return START_NOT_STICKY; } and bitmap is private Bitmap getFontBitmap( String text, int color, float fontSizeSP) { int fontSizePX = convertDiptoPix(fontSizeSP); int pad = (fontSizePX / 9); Paint paint = new Paint(); Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/Clock2017R.ttf"); paint.setAntiAlias(true); paint.setTypeface(typeface); paint.setColor(color); paint.setTextSize(fontSizePX); // paint.setShadowLayer(2, 1, 1, Color.DKGRAY); int textWidth = (int) (paint.measureText(text) + pad * 2); int height = (int) (fontSizePX / 0.75); Bitmap bitmap = Bitmap.createBitmap(textWidth, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.drawText(text, pad, fontSizePX, paint); return bitmap; } private int convertDiptoPix( float dip) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, getResources().getDisplayMetrics()); } When i set remoteViews.setImageBitamp i get problem loading widget error. I tried several methods but can't get it working .Even tried Calligraphy library but i still get problem loading widget error Note: I don't see any error in logcat too. So kindly help me
Related Links
How to upload image file to aws s3 from android?
How do I get the ImageView in front of CardView?
React Native disable Youtube playback on lock screen
Best way to store lots of data into sqlite database in android [duplicate]
Use of constants in sqlite versionning
Proguard obfuscation did't work for Android App
Is it possible to somehow hold onto an Observable's/Flowable's emissions and some way to trigger the emissions as needed?
DriverDistractionAPI does not prevent user interaction when vehicle is moving
Send String from service to activity using broadcast receiver [duplicate]
Implement menu/options button in fullscreen custom view Android
Which strings.xml did Android choose when my app started up?
Problems with overlay implementation
How to get FCM onMessageReceived event in activity without PendingIntent
Android contact app with image and can store upto 3000 contacts
Android Fragment Shared Elements not working with “add”
The layout changes greatly on rotation. How to fix it?