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
What is the best UI and UX design practice for small Android screens?
How to resize a H264 frame using ffmpeg?
How to get Custom ViewGroup height in onMeasure
Does moving the device wake it up from DOZE
I have downloaded a android project. I want to run project in android studio, seeing followng screen
android custom CalendarView
CollapsingToolbarLayout/Toolbar fades too early/late
Anko - alternative to hide one view and show another
Single Activity to manage permissions
Retrieving data in a list form with random ids from Firebase database
Create FloatingActionButton programmatically (without xml)
Change Background of RecyclerView Item at specific position
Local notification with alarm not work in day
MP4 Video Not Playing in Chrome 56 or 57 on Android
How to disable alert dialog close, if editText inside Alert dialog is empty
No such file or directory when trying to read from path