1 pièce(s) jointe(s)
[Projet] Widget + Sprite Animé
Hello,
Je me suis mis récemment au développement sur Android, j'ai suivi quelques tutoriels et je me retrouve aujourd'hui confronté à un problème de compréhension par rapport aux Views et au fonctionnement des Widgets.
Dans l'absolu, mon but est de créer un Widget de type tamagotchi, avec une application qui se lancerai en appuyant dessus.
Pour l'instant je souhaiterai juste afficher un sprite animé dans un Widget.
J'ai commencé par suivre ce tuto : http://sberfini.developpez.com/tutor...oid/appwidget/
J'ai réussi à tout faire fonctionner sans la classe de Configuration, mais dès que je lie cette dernière à l'Activity j'ai une erreur au moment où je souhaite ajouter le Widget sur le bureau :
Pièce jointe 84501
Si ça parle à quelqu'un je suis preneur, je me prends la tête dessus depuis une heure, et mes recherches sur Google ne m'ont remonté que le fait d'ajouter:
Code:
android:permission="android.permission.ACCESS_CHECKIN_PROPERTIES"
dans main.xml mais ça n'a rien changé.
Voilà dans un premier temps ce qui me bloque, toute aide est la bienvenue, merci =)
main.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/napply_widget_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/hello_world"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout> |
widget_meta.xml :
Code:
1 2 3 4 5 6 7 8
| <?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="72dp"
android:minHeight="146dp"
android:initialLayout="@layout/main"
android:updatePeriodMillis="0"
android:configure="com.game.widget.ConfigurationTamagotchiActivity" >
</appwidget-provider> |
AndroidManifest.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.game.widget"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:permission="android.permission.ACCESS_CHECKIN_PROPERTIES">
<!-- Notre AppWidget -->
<receiver android:name=".TamagotchiActivity">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_meta" />
</receiver>
<activity android:name="ConfigurationTamagotchiActivity"
android:permission="android.permission.ACCESS_CHECKIN_PROPERTIES">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" />
</manifest> |
TamagotchiActivity.java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package com.game.widget;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.widget.RemoteViews;
public class TamagotchiActivity extends AppWidgetProvider {
/** Called when the activity is first created. */
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
final int N = appWidgetIds.length;
// Pour chaque AppWidget MonWidgetDeveloppez (n'oubliez pas qu'on peut en ajouter tant qu'on veut), on les met à jour
for (int i = 0; i < N; i++) {
int appWidgetId = appWidgetIds[i];
updateAppWidget(context, appWidgetManager, appWidgetId);
}
}
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
// On récupère les Views de notre layout
RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.main);
// On peut agir sur ces vues
views.setTextViewText(R.id.hello_world, "Hello Developpez !");
System.out.println("Hello World");
// On met ensuite à jour l'affichage du widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
} |
ConfigurationTamagotchiActivity.java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
package com.game.widget;
import android.app.Activity;
import android.appwidget.AppWidgetManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
public class ConfigurationTamagotchiActivity extends Activity {
//private int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("Config");
// On essaye de récupérer l'id de l'AppWidget
// Intent intent = getIntent();
// Bundle extras = intent.getExtras();
// if (extras != null) {
// mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
// AppWidgetManager.INVALID_APPWIDGET_ID);
// }
// Si l'intent ne contient pas son ID, ça ne sert à rien de continuer.
// if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
// setResult(RESULT_CANCELED);
// finish();
// }
// Sinon on le configure comme prévu
// configureWidget(getApplicationContext());
// IMPORTANT : penser à renvoyer l'ID du widget
// Intent resultValue = new Intent();
// resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
// setResult(RESULT_OK, resultValue);
// finish();
}
// Une fois encore, libre à vous de faire ce que vous voulez.
// Ici j'appelle la fonction update de mon Widget pour l'initialisation,
// mais il ne tient qu'à vous d'en faire autre chose.
// public void configureWidget(Context context) {
// AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
// TamagotchiActivity.updateAppWidget(context, appWidgetManager,mAppWidgetId);
// }
} |