Поиск по этому блогу

понедельник, 26 декабря 2011 г.

Создаем виджет под Android

Сегодня хочу рассказать как создавать виджет для Android'a, недавно сам задался таким вопросом, и когда начал рыть как создавать, накопал туеву xучу статей, но во всех статьях были только куски кода которые не было ясно куда совать, по этому я решил написать собственную статью по этому поводу.


Если сделаете все правильно то будет выглядеть вот так:


Начнем писать виджет. Создаем проект в Eclipse — File — New — Progect — Android Project — SimpleActivity

Для начала открываем AndroidManifest.xml, нажимаем ctrl+a и del, копируем код который ниже

AndroidManifest.xml____________________________________________________________
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      <!--package проекта-->
      package="com.api.app"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
        
        <!--Определяем наш файл класса что бы можно было с ним работать-->
        <receiver android:name="NapomniActivity" >
                    <intent-filter>
                        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
                    </intent-filter>
                    <meta-data android:name="android.appwidget.provider" android:resource="@xml/manifest" />
        </receiver>
        <!--конец-->

    </application>
    <uses-sdk android:minSdkVersion="8"/>
</manifest>


Это объясняет Eclipse что мы создаем виджет, а не обычную программу. Дальше нам нужно заполнить main.xml, открываем его, удаляем весь код и вставляем следующий код:

main.xml_______________________________________________________________________


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/Widget" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:gravity="center_vertical"
    android:background="@drawable/frame">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="пыщ пыщ!!!!111" />
</RelativeLayout>
        

В этом файле мы задаем общий вид самого виджета.

Фонавая картинка — .

Теперь нам нужно описать наш виджет, чтобы устройство могло понять с чем имеет дело. Для этого создаем папку xml в разделе res (res/xml/) и в папке xml создаем файл manifest.xml (res/xml/manifest.xml) в который заносим следующий код:

manifest.xml_________________________________________________________________
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="294dp"
    android:minHeight="72dp"
    android:updatePeriodMillis="0"
    android:initialLayout="@layout/main">
</appwidget-provider>


Наш файл SimpleActivity.java будет пустой так как наш виджет ничего делать не будет.

SimpleActivity.java__________________________________________________________
import android.appwidget.AppWidgetProvider;
 public class widget extends AppWidgetProvider
{}


Все компилируем проект нажимаем кнопку menu в эмуляторе, дальше

2. 

3. 

4. 

и наконец

5. 

В следующем посте про виджеты я расскажу как повесить на них события, по правде сам еще не разобрался до конца :) Спасибо за внимание, ждите дальше моих постов.