天天看點

Android Widget開發模闆解析

android widget開發模闆是本文要介紹的内容,主要是來了解并學習android widget開發應用,android

widget中使用了java語言開發比w3c的widget運作效率提高了不少,可以做更多的事情調用系統的api,除了ui上的限制外,我們可以考慮幫助系統完善一些appwidget,android 123給出大家一個開發widget的模闆。

public class cwjwidget extends appwidgetprovider {  

    @override  

    public void onupdate(context context, appwidgetmanager appwidgetmanager,  

            int[] appwidgetids) {  

                context.startservice(new intent(context, updateservice.class)); //這裡建立一個服務,防止出現等待逾時對話框  

    }  

    public static class updateservice extends service {  //這個内部的服務我們推薦新開一個線程操作一些容易阻塞的情況,比如網絡下載下傳等等  

        @override  

        public void onstart(intent intent, int startid) {  

            remoteviews updateviews = buildupdate(this);  

            componentname thiswidget = new componentname(this, cwjwidget.class);  

            appwidgetmanager manager = appwidgetmanager.getinstance(this);  

            manager.updateappwidget(thiswidget, updateviews);  

        }  

        public remoteviews buildupdate(context context) {  

             resources res = context.getresources();  

            remoteviews updateviews = new remoteviews(  

                context.getpackagename(), r.layout.main);  //主widget的layout布局  

            pendingintent pendingintent = pendingintent.getactivity(context,  

                    0 /* no requestcode */,  

                    new intent(android.provider.settings.action_device_info_settings),  

                    0 /* no flags */);  

            updateviews.setonclickpendingintent(r.id.ui, pendingintent); //單擊view打開intent,目标為系統資訊,就是上面的action位置  

            updateviews.settextviewtext(r.id.info,     

                android.os.build.version.codename + " " +  

                android.os.build.id);   //這裡是api的擷取系統版本的方法  

            updateviews.settextviewtext(r.id.changelist,  

                android.os.build.fingerprint  

                );  

            return updateviews;  

        public ibinder onbind(intent intent) {  

            return null;  

有關涉及到的 androidmanifest.xml内容

xml version="1.0" encoding="utf-8"?> 

manifest xmlns:android="http://schemas.android.com/apk/res/android" 

   package="com.android123.widget" 

   android:versioncode="1" 

   android:versionname="1.0"> 

   <uses-sdk android:minsdkversion="3" /> 

   <application android:icon="@drawable/icon" android:label="@string/app_name"> 

       <receiver android:name=".buildwidget" android:label="android123_cwj"> 

           <intent-filter> 

               <action android:name="android.appwidget.action.appwidget_update" /> 

           intent-filter> 

           <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget" /> 

       receiver> 

       <service android:name=".cwjwidget$updateservice" /> 

   application> 

/manifest> 

android manifest.xml上面提到的  \res\xml\widget.xml檔案内容

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 

android:minwidth="150dip" 

android:minheight="72dip" 

android:updateperiodmillis="0" 

android:initiallayout="@layout/widget" />  

有關 main.xml的内容為

linearlayout xmlns:android="http://schemas.android.com/apk/res/android" 

   android:id="@+id/ui" 

   android:layout_width="fill_parent" 

   android:layout_height="wrap_content" 

   android:orientation="vertical" 

   android:padding="6dip" 

   > 

   <textview 

       android:id="@+id/info" 

       android:layout_width="fill_parent" 

       android:layout_height="wrap_content" 

       android:gravity="left" 

       android:textsize="18dip" 

       /> 

       android:id="@+id/changelist" 

       android:layout_margintop="4dip" 

       android:textsize="9dip" 

/linearlayout> 

小結:android widget開發模闆解析的内容介紹完了,希望通過android widget開發内容的學習能對你有所幫助!

繼續閱讀