مشخصات مقاله
آموزش ویجت های اندروید
دوره آموزش برنامه نویسی اندروید
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
آموزش ویجت های اندروید
ویجت یک برنامه ی کوچک و یا یک کنترل از برنامه ی اندروید شما می باشد که در صفحه ی home قرار گرفته است. ویجت ها می توانند به راحتی در دسترس باشند، چرا که به شما اجازه می دهند تا برنامه های مورد علاقه ی خود را روی صفحه home قرار دهید تا به سرعت به آنها دسترسی داشته باشید. احتمالا چند ویجت متداول از جمله ویجت موسیقی، آب و هوا و ساعت، را دیده اید.
ویجت ها می توانند انواع مختلفی داشته باشند از قبیل ویجت اطلاعات، ویجت های مجموعه، ویجت های کنترل و ویجت های چندگانه. اندروید یک چارچوب کامل به ما ارائه می دهد تا ویجت های خود را گسترش دهیم.
فایل Widget – XML
برای اینکه یک برنامه ی ویجت ایجاد کنید، اولین چیزی که لازم دارید یک آبجکت AppWidgetProviderInfo می باشد که در یک فایل Widget – XML مجزا تعریف خواهید کرد. برای انجام این کار روی پروژه ی خود راست کلیک کنید و یک فولدر جدید به نام xml ایجاد کنید. حالا روی فایل تازه ایجاد شده راست کلیک کرده و یک فایل XML جدید ایجاد کنید. نوع ذخیره ی فایل XML باید روی AppWidgetProvider تنظیم شده باشد. در فایل xml برخی ویژگی ها را تعریف کنید که به قرار زیر می باشد .
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minwidth="146dp"
android:updateperiodmillis="0"
android:minheight="146dp"
android:initiallayout="@layout/activity_main">
</appwidget-provider>
فایل لی اوت ویجت (layout – widget)
اکنون شما باید لی اوت ویجت خود را در فایل پیش فرض XML خود تعریف کنید. شما می توانید برای تولید یک xml خودکار، مولفه ها را درگ کنید.
فایل جاوا ویجت (Java – widget)
پس از تعریف لی اوت، اکنون می توانید یک فایل جاوای جدید ایجاد کنید یا از فایل موجود آن استفاده کنید و آن را با گروه AppWidgetProvider گسترش دهید و روش های آپدیت آن را مانند زیر انجام دهید.
در روش آپدیت شما باید آبجکت های دو گروه را تعریف کنید که این دو گروه عبارتند از PendingIntent و RemoteViews. ترکیب آن به قرار زیر می باشد.
PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.activity_main);
در انتها شما باید روش آپدیت updateAppWidget() را از گروه AppWidgetManager فرا بخوانید. ترکیب آن مانند زیر می باشد.
appWidgetManager.updateAppWidget(currentWidgetId,views);
علاوه برروش updateAppWidget، روش های دیگری برای اجرای ویجتها در این گروه تعریف شده اند که به قرار زیر می باشند.
ردیف |
متد ها و توضیحات |
1 |
onDeleted(Context context, int[] appWidgetIds) این روش زمانی فراخوانده می شود که نمونه ای از AppWidgetProvider حذف شده باشد. |
2 |
onDisabled(Context context) این روش زمانی فراخوانده می شود که آخرین نمونه ی AppWidgetProvider حذف شده باشد. |
3 |
onEnabled(Context context) این روش زمانی فراخوانده می شود که یک نمونه از AppWidgetProvider ایجادشده باشد. |
4 |
onReceive(Context context, Intent intent) این روش برای به پایان رساندن فراخوانی ها به روش های متفاوت از گروه استفاده می شود. |
فایل Widget – Manifest
شما باید گروه AppWidgetProvider را در فایل manifest خود مانند زیر اعلام کنید.
<receiver android:name="ExampleAppWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/example_appwidget_info" />
</receiver>
مثال
در اینجا مثالی را می بینید که استفاده از برنامه ی ویجت را توضیح می دهد. این مثال یک برنامه ی پایه ایجاد می کند که ایم وب سایت را در مرورگر باز می کند.
برای انجام این مثال باید آن را روی دستگاهی اجرا کنید که در آن intent در حال اجرا می باشد.
مراحل |
توضیحات |
1 |
برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان Widget تحت بسته ی com.example.widget نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDK و Compile With در آخرین ورژن Android SDK هستند تا از سطوح بالاتر API استفاده کنید. |
2 |
فایل src/MainActivity.java را برای افزودن کد ویجت تغییر دهید. |
3 |
res/layout/activity_main را برای افزودن مولفه های XML مربوطه تغییر دهید. |
4 |
یک فولدر جدید و یک فایل xml تحت res/xml/mywidget.xml ایجاد کنید تا مولفه های XML مربوطه را اضافه کنید. |
5 |
res/values/string.xml را برای افزودن مولفه های رشته ی لازم تغییر دهید. |
6 |
AndroidManifest.xml را برای افزودن اجازه های لازم تغییر دهید. |
7 |
برنامه را اجرا کنید و یک دستگاه اجرایی اندروید انتخاب کرده و برنامه را روی آن نصب کنید و نتایج را بررسی کنید. |
در ادامه محتوای تغییر یافته ی فایل فعالیت اصلی را مشاهده می کنید.
src/om.example.widget/MainActivity.java.
package com.example.widget;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.webkit.WebView.FindListener;
import android.widget.Button;
import android.widget.RemoteViews;
import android.widget.Toast;
public class MainActivity extends AppWidgetProvider{
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
for(int i=0; i<appWidgetIds.length; i++){
int currentWidgetId = appWidgetIds[i];
String url = "http://www.tahlildadeh.com";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse(url));
PendingIntent pending = PendingIntent.getActivity(context, 0,
intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.activity_main);
views.setOnClickPendingIntent(R.id.button1, pending);
appWidgetManager.updateAppWidget(currentWidgetId,views);
Toast.makeText(context, "widget added", Toast.LENGTH_SHORT).show();
}
}
}
در اینجا محتوای تغییریافته ی xml مربوط به res/layout/activity_main.xml را می بینید.
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top"
android:paddingbottom="@dimen/activity_vertical_margin"
android:paddingleft="@dimen/activity_horizontal_margin"
android:paddingright="@dimen/activity_horizontal_margin"
android:paddingtop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<textview android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignparentleft="true"
android:layout_alignparenttop="true"
android:text="@string/website"
android:textappearance="?android:attr/textAppearanceMedium" />
<button android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignleft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginleft="18dp"
android:text="@string/app_name" />
</relativelayout>
در ادامه محتوای res/xml/mywidget.xml می باشد.
<?xml version="1.0" encoding="utf-8" ?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minwidth="146dp"
android:updateperiodmillis="0"
android:minheight="146dp"
android:initiallayout="@layout/activity_main">
</appwidget-provider>
در ادامه محتوای res/values/string.xml می باشد.
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<string name="app_name">Widget</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="website">TutorialsPoint.com</string>
</resources>
در اینجا محتوای فایل AndroidManifest.xml را مشاهده می کنید.
<?xml version="1.0" encoding="utf-8" ?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.widget"
android:versioncode="1"
android:versionname="1.0">
<uses-sdk android:minsdkversion="10"
android:targetsdkversion="17" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:allowbackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<receiver android:name="MainActivity">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/mywidget" />
</receiver>
</application>
</manifest>
اجازه بدهید برنامه ی Widgeشما را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run از تولبار کلیک کنید. قبل از شروع برنامه ی شما، Eclipse پنجره ی زیر را برای انتخاب گزینه ی محل اجرای برنامه ی اندرویدتان، نمایش خواهد داد.
دستگاه موبایل خود را به عنوان یک گزینه انتخاب کرده و سپس آن را چک کنید که صفحه ی پیش فرض شما را نمایش می دهد.
به بخش ویجت خود رفته و ویجت ایجاد شده ی خود را روی دسک تاپ یا homescreen اضافه کنید، که چیزی شبیه تصویر زیر خواهد بود.
اکنون روی دکمه ی widget که ظاهر شده ضربه بزنید تا مرورگر آغاز به کار کند. اما قبل از آن لطفا مطمئن باشید که به اینترنت متصل هستید. پس از فشاردادن دکمه صفحه ی زیر ظاهر خواهد شد.
توجه داشته باشید که تنها با تغییر url در فایل جاوا، ویجت شما وب سایت مورد نظرتان را در مرور گر باز خواهد کرد.