рдПрдХ рдЕрдкрдард┐рдд рд╕рдВрджреЗрд╢ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд╕рд╛рде рд╡рд┐рдЬреЗрдЯ

рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдПрдХ рдЕрдкрдард┐рдд рд╕рдВрджреЗрд╢ / рдХреЙрд▓, рдЖрджрд┐ рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕реЗ рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдкрд╛рд╕ рдПрдХ рдорд╛рдирдХ рд╡рд░реНрдЧ рдирд╣реАрдВ рд╣реИред

рдЫрд╡рд┐

рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╡рд┐рдЬреЗрдЯ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ?


рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ рдФрд░ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдпрд╣ рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗред

рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ рдорд╛рдирдХ рдЖрдЗрдХрди рдФрд░ рдорд╛рдирдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдЬреЗрдЯ рдХреЗ рд╕рдорд╛рди рд╕рдВрднрд╡ рд╣реИред

рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдПрдкреАрдХреЗ рдореИрдиреЗрдЬрд░ ( рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж) рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП Google рд░реАрдбрд░ рдХреЛ рдЪреБрдирдирд╛ рдкрдбрд╝рд╛ - рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рд╡рд┐рдЬреЗрдЯ рдорд╛рдирдХ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ:

рдЫрд╡рд┐

рдереЛрдбрд╝рд╛ рд╕рд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рдХрд╛рдлреА рдирд╣реАрдВ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдЦрддреНрдо рдХрд░рдирд╛ рдерд╛:

<?xml version="1.0" encoding="UTF-8"?> <LinearLayout android:orientation="vertical" android:id="@+id/widget" android:background="@drawable/shortcut_selector" android:focusable="true" android:clickable="true" android:layout_width="74.0dip" android:layout_height="82.0dip" xmlns:android="http://schemas.android.com/apk/res/android"> <FrameLayout android:layout_width="fill_parent" android:layout_height="0.0dip" android:layout_weight="1.0" android:paddingTop="3dip"> <FrameLayout android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon" android:scaleType="center" /> <TextView android:textSize="14.0dip" android:textStyle="bold" android:textColor="#ffffffff" android:gravity="center" android:layout_gravity="bottom|right|center" android:id="@+id/widget_counter" android:background="@android:drawable/ic_notification_overlay" android:layout_width="24dip" android:layout_height="24dip" android:singleLine="true" android:shadowColor="#ff000000" android:shadowRadius="1.0"/> </FrameLayout> </FrameLayout> <TextView android:textSize="13.0dip" android:textColor="#ffffffff" android:ellipsize="marquee" android:gravity="center_horizontal" android:layout_gravity="center_horizontal" android:id="@android:id/text1" android:background="@drawable/appwidget_text_background" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="1dip" android:paddingBottom="1dip" android:singleLine="true" android:shadowColor="#ff000000" android:shadowRadius="2.0" android:layout_weight="0.0" android:text="@string/app_name" /> </LinearLayout> 


рд╡рд┐рдЬреЗрдЯ рдКрдВрдЪрд╛рдИ - 82dip - рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╕реЗ рдЕрдзрд┐рдХред рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛ рд╣рдорд╛рд░рд╛ рд╡рд┐рдЬреЗрдЯ рдорд╛рдирдХ рдЖрдЗрдХрди рд╕реЗ рдЫреЛрдЯрд╛ рд╣реЛрдЧрд╛ред

рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ @ drawable / shortcut_selector рдПрдХ xml рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд╡рд┐рдЬреЗрдЯ рдХреНрд▓рд┐рдХреЛрдВ рдпрд╛ рдЪрдпрдиреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рдХреИрд╕реЗ рджреЗрдЧрд╛:

 <?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/pressed_application_background" /> <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/focused_application_background" /> <item android:state_focused="true" android:state_window_focused="false" android:drawable="@android:color/transparent" /> </selector> 

рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ - рдкреНрд░реЗрд╕рдбреИрдк_рдкреНрд▓реЗрдХреНрд╢рди_рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдФрд░ рдлрд╝реЛрдХрд╕_рдкреНрдкреНрд▓рд┐рдХреЗрд╢рди_рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб - рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЗрдореЗрдЬ рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлреЛрди рдореЗрдВ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ - рдкреГрд╖реНрдарднреВрдорд┐ рдирд╛рд░рдВрдЧреА рд╣реИ, рдПрдЪрдЯреАрд╕реА рдореЗрдВ - рд╣рд░рд╛ред рд╕рдорд╛рдзрд╛рди рдорд╛рдирдХ рдПрдВрдбреНрд░реЙрдЗрдб рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрдЧрд╛ - рдПрдВрдбреНрд░реЙрдЗрдб рдЖрд░ рдбреНрд░реЙрдмрд▓реНрд╕ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЖрдИрдбреА рднреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
  1. pressed_application_background_static
  2. focused_application_background_static

рд▓реЗрдХрд┐рди рдпреЗ рд╕рдВрд╕рд╛рдзрди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЖрдк рдЗрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЖрдк android.os.Build рдХрд╛ рдорд╛рди рдкрдврд╝рдиреЗ рдФрд░ OS рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рдЬреЗрдЯ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдирд╛рд░рдВрдЧреА рдкреГрд╖реНрдарднреВрдорд┐ рдЫреЛрдбрд╝ рджреА (рд╡реИрд╕реЗ, Google рд░реАрдбрд░ рд╡рд┐рдЬреЗрдЯ рдиреЗ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛)ред

рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдкрд╣рд▓реЗ рдЬреИрд╕реА рд╣реИред рдорд╛рдирдХ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЕрдкрдард┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╕рд░реНрдХрд▓ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рд▓рд╛рд▓ рд╣реИ, рдПрдЪрдЯреАрд╕реА рдкрд░ рд╣рд░реЗ рд░рдВрдЧ рдХреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЖрдк рдорд╛рдирдХ рд╕рдВрд╕рд╛рдзрди рдХреА рдУрд░ рдореБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ - @android: drawable / ic_notification_overlay ред рдпрд╣ рдПрдХ рд╕рд░реНрдХрд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИ (рдЫрд╡рд┐ рдереЛрдбрд╝реА рдХрдо рд╣реЛрдЧреА)ред

рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд┐рдирд╛ рдкрд╛рда рд░реАрдбрд░ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ Google рд░реАрдбрд░ рд╡рд┐рдЬреЗрдЯ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ( appwidget_text_background.xml рдлрд╝рд╛рдЗрд▓):

 <?xml version="1.0" encoding="UTF-8"?> <shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#b2191919" /> <padding android:left="5.0dip" android:top="1.0dip" android:right="5.0dip" android:bottom="1.0dip" /> <corners android:radius="8.0dip" /> </shape> 


рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдРрд╕реЗ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ), рд╕рдордп-рд╕рдордп рдкрд░ рдХрд╛рдЙрдВрдЯрд░ рдореВрд▓реНрдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, UpdatePeriodMillis = "0" рдФрд░ рдЗрд╕рдХрд╛ рдЕрджреНрдпрддрди рдХреЗрд╡рд▓ рджреЛ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ:
  1. рдЬрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рдЖрддрд╛ рд╣реИ;
  2. рдЬрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрджреГрд╢реНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ ( onStop () )ред

рдЙрд╕реА рд╕рдордп, рд╡рд┐рдЬреЗрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this); int[] a = appWidgetManager.getAppWidgetIds(new ComponentName(this.getPackageName(), "WidgetProvider")); List<AppWidgetProviderInfo> b = appWidgetManager.getInstalledProviders(); for (AppWidgetProviderInfo i : b) { if (i.provider.getPackageName().equals(this.getPackageName())) { a = appWidgetManager.getAppWidgetIds(i.provider); new WidgetProvider().onUpdate(this, appWidgetManager, a); } } 


рдпрджрд┐ рдмрд┐рдирд╛ рдкрдврд╝реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╢реВрдиреНрдп рд╣реИ, рддреЛ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╡реГрддреНрдд рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ:
 if (unreadRecordsCount == 0) { views.setViewVisibility(R.id.widget_counter, View.INVISIBLE); views.setTextViewText(R.id.widget_counter, ""); } else { views.setTextViewText(R.id.widget_counter, Long.toString(unreadRecordsCount)); views.setViewVisibility(R.id.widget_counter, View.VISIBLE); } 


рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╣реИ:

рдЫрд╡рд┐

рдпрд╣ рдЕрдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИред рдПрдореБрд▓реЗрдЯрд░ рднреА рдореВрд▓ рдХреЗ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In117997/


All Articles