안드로이드의 간편한 위드 제작 방법
8207 단어 Android
최초의 안드로이드를 위해 상당히 간단한 샘플을 제작하다.
버튼을 누르면 가산점만 추가됩니다.
안드로이드 위젯
애플릿은 안드로이드 특성상 플랫폼에 다양한 태그를 붙일 수 있는데, 이는 아이폰과 큰 차이가 있는 것으로 API의 레벨3(Android 1.5)부터 사용됐다고 한다.
부품은 다음 절차에 따라 작성할 수 있습니다.
1. 부품 프로파일 작성
다음 XML 파일은 애플릿의 설정 파일로 xml/demo-입니다.widget_provider.xml로 정의합니다.
xml/demo_widget_provider.xml
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/widget_layout"
android:minHeight="146dp"
android:minWidth="292dp"
android:previewImage="@drawable/widget"
android:updatePeriodMillis="1000000" >
</appwidget-provider>
2. 부품의 레이아웃 작성
부품은 다른 활동과 마찬가지로 레이아웃을 설계할 수 있지만 제한이 있습니다.
레이아웃은 다음 네 개만 사용할 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5sp"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:maxLines="2"
android:paddingBottom="5dp"
android:textColor="#fcfcfc"
android:textSize="16sp"
android:textStyle="bold"
/>
<Button
android:id="@+id/button"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="click" />
</RelativeLayout>
3. AppWidgetProvider의 하위 클래스 만들기
위젯을 제어하기 위해 상속된 AppWidgetProvider 클래스의 카테고리를 추가합니다.
onUpdate 방법은 실행할 때 화면을 바꾸는 데 사용됩니다.
이것은 애플릿과의 인터페이스입니다. 샘플에서 onUpdate만 사용했지만, 애플릿의 업데이트, 유효, 무효, 삭제 등 이벤트를 받아들일 수 있습니다.
public class MyWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// ウィジェットレイアウトの初期化
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
// ボタンイベントを登録
remoteViews.setOnClickPendingIntent(R.id.button, clickButton(context));
// テキストフィールドに"初期画面"と表示
remoteViews.setTextViewText(R.id.title, "初期画面");
// アップデートメソッド呼び出し
pushWidgetUpdate(context, remoteViews);
}
public static PendingIntent clickButton(Context context) {
// クリック回数を増加
MyWidgetIntentReceiver.clickCount ++;
// initiate widget update request
Intent intent = new Intent();
intent.setAction("UPDATE_WIDGET");
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
// アップデート
public static void pushWidgetUpdate(Context context, RemoteViews remoteViews) {
ComponentName myWidget = new ComponentName(context, MyWidgetProvider.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(myWidget, remoteViews);
}
}
4.BroadcastReceiver의 하위 클래스 제작
버튼을 클릭할 때의 동작을 실현하기 위해 BroadcastReceiver를 설치합니다.
onReceive 방법으로 부품을 구현합니다.
public class MyWidgetIntentReceiver extends BroadcastReceiver {
public static int clickCount = 0;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("UPDATE_WIDGET")) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
// テキストをクリック回数を元に更新
remoteViews.setTextViewText(R.id.title, "クリック回数: " + MyWidgetIntentReceiver.clickCount);
// もう一回クリックイベントを登録(毎回登録しないと上手く動かず)
remoteViews.setOnClickPendingIntent(R.id.button, MyWidgetProvider.clickButton(context));
MyWidgetProvider.pushWidgetUpdate(context.getApplicationContext(), remoteViews);
}
}
}
5. Android 선언에 receiver 등록
마지막으로 선언문건을 작성하고 부품을 등록한다.
(demo widget provider는 1에 정의된 XML 파일입니다.)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.torua.hellowidget"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name=".MyWidgetProvider" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/demo_widget_provider" />
</receiver>
<receiver
android:name=".MyWidgetIntentReceiver"
android:label="@string/app_name" >
<intent-filter>
<action android:name="UPDATE_WIDGET" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/demo_widget_provider" />
</receiver>
</application>
</manifest>
작업 프로세스는 다음과 같습니다.애플릿 등록.onUpdate→그리기
참고 자료
Reference
이 문제에 관하여(안드로이드의 간편한 위드 제작 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/aaari/items/6c1fc66ef95ec77980c6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)