Android’in en büyük güçlerinden biri olarak görülen widget’lar; kullanıcılara büyük bir kolaylık sağlamakla birlikte, geliştiriciler tarafından da rahatlıkla uygulamalarına entegre edilebiliyor.
appwidget.xml
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="220dp"
android:minHeight="72dp"
android:updatePeriodMillis="3600000"
android:initialLayout="@layout/appwidget_layout">
</appwidget-provider>
android:updatePeriodMillis ‘ e girdiğimiz değer, widget’ın yenilenmesini istediğimiz sürenin milisaniye cinsinden hali olmalı. Bu örnekte her saat başı widget otomatik olarak onUpdate adlı metodunu çağıracaktır.
Widget’ın tabir-i caizse Activity’sini yazmak için “AppWidgetProvider” sınıfını extend eden bir sınıf yazmamız gerekiyor. Bu sınıf widget’ın programatik olarak neler yapması gerektiğini belirleyecek.
TestAppWidgetProvider.java
public class TestAppWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
try {
updateWidgetContent(context, appWidgetManager);
} catch (Exception e) {
Log.e(DEBUG_TAG, "Failed", e);
}
}
public static void updateWidgetContent(Context context,
AppWidgetManager appWidgetManager) {
String testString = “App Widget Deneme”;
RemoteViews remoteView = new RemoteViews(context.getPackageName(),
R.layout.appwidget_layout);
remoteView.setTextViewText(R.id.textBox, testString );
ComponentName testAppWidget = new ComponentName(context,
TestAppWidgetProvider.class);
appWidgetManager.updateAppWidget(testAppWidget , remoteView);
}
}
Normal bir Activity’e layout tasarlar gibi widget için layout tasarlıyoruz.
appwidget_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/full_widget"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<ImageView
android:id="@+id/logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/logo"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:background="@android:color/transparent"
android:layout_alignParentLeft="true"
android:layout_toRightOf="@id/logo"
android:layout_centerHorizontal="true"
android:maxWidth="100dp"
android:minHeight="100dp" />
<TextView
android:id="@+id/textBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/logo"
android:textStyle="bold"
android:textColor="@android:color/black"
android:textSize="12dp"
android:padding="2dp" />
</RelativeLayout>
Son olarak uygulamanın manifest dosyasına gerekli bilgileri ekliyoruz. Uygulama cihaza yüklendiğinde otomatik olarak widget da yükleniyor ve kullanıcı istediği zaman ana ekranına ekleyebiliyor.
AndroidManifest.xml
<receiver android:name="com.example.widget.deneme.TestAppWidgetProvider">
<intent-filter>
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/yemekhane_appwidget" />
</receiver>
Orhun Mert Şimşek
Merhaba hocam yazınızı bi araştırma sonucunda buldum. Bunları yapmak için illa bilgisayarmı gerekiyor, telefonda apk editor var olurmu ? Varolan bir uygulamaya yapabilirmiyiz ? Mesela ben G.Play'den Death Note adlı not programı indirdim ama widgeti yok. Buna yapabilirmiyim ? Cevabınızı bekliyorum. Mail adresim : kasimcanshn@gmail.com
YanıtlaSilbence yapazsınız hocam
Sil