Android Widget実践---EverydayTips開発
7442 ワード
アプリはもう終わったので、ここでダウンロードしましょう
http://static.apk.hiapk.com/html/2012/05/611477.html?module=256&info=z2vlZQBO5VM%3D
忙しくて手の下の事が暇で无事にWidgetの使い方を勉强して、耻ずかしくて、こんなに长くWidgetをしたことがないものを开発して、それではゼロから后の人に参考にすることができます
まず私が開発するものです:EveryDayTipsはandroidが持っているTipsに似ていますが、私たちのアプリケーションは名言警句を表示するためのもので、注意程度でしょう.基本的な機能:
デスクトップにwidget形式で名言警句を表示
ユーザーはwidgetを更新する時間をカスタマイズできます.
Widgetが更新されるとnotificationでステータスバーに送信されます
widgetをクリックするとActivityやダイアログボックスが開き、この警告文をコピーして共有することができます.
初歩的な論理とインタフェース
では、私たちは書き始めました.
まずは新築工事
次にManifestの構成
実はwidgetはreceiverで、配置するなら直接のこの部分をコピーすればokです.プロファイルを変更して
xmlの下のプロファイルを見てみましょう
レイアウトファイルwidget_を見てみましょうlayout.xml
リソースファイルをdrawableに保存した後、Activityのコードを作成します.
実はフレームワークもこれに基づいて書けばいいのです
運行後はtextViewに「若くて努力しないと悲しくなる」と表示されます
次はwidgetのコードの作成です
Tips.JAvaのサービスは実現していません:ただ1つの文を返します
これで私たちの応用は宝剣という言葉を示しました
後で知りたいなら先にご飯を食べます.
http://static.apk.hiapk.com/html/2012/05/611477.html?module=256&info=z2vlZQBO5VM%3D
忙しくて手の下の事が暇で无事にWidgetの使い方を勉强して、耻ずかしくて、こんなに长くWidgetをしたことがないものを开発して、それではゼロから后の人に参考にすることができます
まず私が開発するものです:EveryDayTipsはandroidが持っているTipsに似ていますが、私たちのアプリケーションは名言警句を表示するためのもので、注意程度でしょう.基本的な機能:
デスクトップにwidget形式で名言警句を表示
ユーザーはwidgetを更新する時間をカスタマイズできます.
Widgetが更新されるとnotificationでステータスバーに送信されます
widgetをクリックするとActivityやダイアログボックスが開き、この警告文をコピーして共有することができます.
初歩的な論理とインタフェース
では、私たちは書き始めました.
まずは新築工事
次にManifestの構成
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.su.tipeveryday"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".TipEveryDayActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".TipEveryDayWidget"
android:label="AAAAAAAATip">
<intent-filter >
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_config" /><!-- widget , copy -->
</receiver>
</application>
</manifest>
実はwidgetはreceiverで、配置するなら直接
xmlの下のプロファイルを見てみましょう
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:configure="com.su.tipeveryday.TipEveryDayActivity"
android:initialLayout="@layout/widget_layout"
android:minHeight="72dp"
android:minWidth="280dp"
android:updatePeriodMillis="86400000" >
</appwidget-provider>
<!-- android:initialLayout widget
android:updatePeriodMillis="86400000"
-->
レイアウトファイルwidget_を見てみましょうlayout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/textViewWidget"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/widget"
android:text=" , " />
</LinearLayout>
とactivityのレイアウトはほとんど違いませんリソースファイルをdrawableに保存した後、Activityのコードを作成します.
実はフレームワークもこれに基づいて書けばいいのです
package com.su.tipeveryday;
import android.app.Activity;
import android.appwidget.AppWidgetManager;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
public class TipEveryDayActivity extends Activity {
int mAppWidgetId;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.i("myLog"," on WidgetConf ... ");
setResult(RESULT_CANCELED);
// Find the widget id from the intent.
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
Log.i("TTTTT", mAppWidgetId+"");// widgetID, 19, ID?
}
// If they gave us an intent without the widget id, just bail.
if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
finish();
}
// return OK
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
mAppWidgetId);
setResult(RESULT_OK, resultValue);
finish();
}
}
運行後はtextViewに「若くて努力しないと悲しくなる」と表示されます
次はwidgetのコードの作成です
package com.su.tipeveryday;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.util.Log;
import android.widget.RemoteViews;
import android.widget.TextView;
public class TipEveryDayWidget extends AppWidgetProvider {
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onDeleted(context, appWidgetIds);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {//widget
// TODO Auto-generated method stub
super.onUpdate(context, appWidgetManager, appWidgetIds);
final int N = appWidgetIds.length;
Log.d("app", "onUpdate--->Ids===" + String.valueOf(N));
for (int i = 0; i < N; i++) {// widget ( id )
int appWidgetId = appWidgetIds[i];
updateAppWidget(context, appWidgetManager, appWidgetId);// widget
}
}
private void updateAppWidget(Context context,AppWidgetManager appWidgetManager, int appWidgetId) {
String tip = Tips.getTips();// Tips.java
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.widget_layout);
views.setTextViewText(R.id.textViewWidget, tip);
appWidgetManager.updateAppWidget(appWidgetId, views);// widget
}
}
Tips.JAvaのサービスは実現していません:ただ1つの文を返します
package com.su.tipeveryday;
public class Tips {
public static String getTips() {
return " , ";
}
}
これで私たちの応用は宝剣という言葉を示しました
後で知りたいなら先にご飯を食べます.