آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آموزش ساخت ویجت انتشار یافته در ماهنامه سایت ها ( توسط خود بنده )

سامان پاپی  10 سال پیش  10 سال پیش
+4 0

عضویت ویژه . اما اگه نداری میتونی توی ایترنت پیدا کنی

 

0 0
در حال ترجمه هستم چند لحظه صبر کنید (10 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
سامان پاپی  10 سال پیش
+5 0

ویجت گجت کوچیک یا کنترل کننده نرم افزار اندروید شماست . که روی صفحه اصلی جای گذاری میشه . ویجت ها خیلی دستی(handy) شدن  مثلا یه ویجت رو صفحه اصلی شما ست که نرم افزار های مورد علاقه تون رو توی اون گذاشتید و با یه اشاره و خیلی سریع شما میتونید به اون ها دسترسی داشته باشید . شما ممکنه یه سری ویجت های اشباه(common = مشترک) شده داشته باشید . مثل ویجت موزیک , آب و هوا  , ساعت و .....! . 

ویجت ها میتونن چندین نوع باشن مثل ویجت های اطلاعاتی و ویجت های کنترلی و ویجت های مجموعه ایی و یا ویجت های پیوند دهنده . اندروید برای توسعه ویجت خودمون یه فریم ورک کامل فراهم کرده .

 ویجت - فایل ایکس ام ال                                                                                                                                                                               توی روند ساختن یه ویجت اولین چیزی که شما بهش احتیاج دارید یه شئ فراهم کنندهی اطلاعت ویجت هستش که این رو در فایل ایکس ام ال جداگانه تعریف میکنیم . برای انجام این کار , روی پروژه خودتون کلیک راست کنید و Create a new folder رو انتخاب کنید و نام فولدر رو xml بزارید و حالا رو فولدری که تازه ساختید کلیک راست کنید و دقت کنید یک فایل  xml جدید بسازید , ئقت دقت کنید منبع نوع فایل xml باید AppWidgerProvider ست شده باشه . ما توی فایل 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)                                                                                                                                                                        حالا شما ناگزیر میشید که برای ویجتتون توی فایل پیشفرض xml  یه فایل طراحی بسازید . شما میتونید برای ایجاد شدن خودکار فایل xml اجزاتون رو درگ کنید ! 

 ویجت - فایل جاوا                                                                                                                                                                                     بعد درست کردن فایل طراحیتون شما باید یه فایل جاوا جدید بسازید یا از همون یه دونه که وجود داره استفاده کنید و بعد اون رو extends کنید از کلاس 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 یه سری متد های دیگه هم تعریف شده که من اون ها رو هم براتون توضییح میدم .

 onDeleted(Context context, int[] appWidgetIds)

این متد زمانی صدا زده میشه که یک مورد از AppWidgetProvider  پاک شده باشه 

  onDisabled(Context context)

این متد زمانی صدا زده میشه که اخرین مورد از AppWidgetProvider  پاک شده باشه 

 onEnabled(Context context

این متد زمانی صدا زده میشه که یک مورد از AppWidgetProvider  ایجاد  شده باشه 

 onReceive(Context context, Intent intent)

این متد برای ارسال کردن درخواست به متد های مختلف کلاس  استفاده میشه

 ویجت - فایل مینیفست                                                                                                                                                                                  

شما باید کلاس AppWidgetProvider رو به مینیفستتون معرفی کنید . اااا بازم نگران شدی که , کدش رو زیر برات میزارم 

 <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>

یک مثال کامل و جامع واسه اونایی که هنوز نگرانن میخوام نگرانیشون بپره 

خوب این یه ویجت ساده هستش که برای ما وب سایت منبع این مقاله رو که من ترجمه اش کردم روی بروزر باز میکنه 

کد های زیر رو دنبال کنید اینا محتوای فایل جاوا هستن . 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.tutorialspoint.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();	
      }
   }	
}

کد های زیر محتوای فایل ایکس ام ال هستن 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 file

 <?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>

و در اخر میتونید  لینک اصلی مقاله رو ببینید از همه تون به خاطر مطالعه و استفاده از این مقاله تشکر میکنم و تخصصم توی ترجمه نیست این ترجمه هم ترجمه تحت اللفظی نیست و من خودم قاطیش کردم و تغییرش دادم از لحاظ ادبی نه فنی . 

go to tutorialspoint

 


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .