zoukankan      html  css  js  c++  java
  • 界面更新android 转载 widget点击事件界面更新

    这段时间个人几篇文章介绍了改界面更新的文章. 关联文章的地址

        在appWidget中,ImageButton和Button都是被支撑的控件,其事件可成分三种型类:
    一、开启Activity
    二、开始Service
    三、发送按钮Action

        上面开始一个一个分析,如何实现。

        一、开启Activity

        1、首先先定义个开启Activity的intent

        eg: 

        

    Intent fullIntent=new Intent(this,FullScreen.class);
    若要传递数据,则用使intent.putExtra()法方
    eg:   fullIntent.putExtra("isCircle",isCircle);

    2、用intent实例化一个PendingIntent,调用pendingIntent的getActicity法方来启动另一个Activity
    ①若该Intent带有数据,则须要将最后一个数参的值设为:FLAG_CANCEL_CURRENT
    eg:   PendingIntent Pfullintent=PendingIntent.getActivity(this, 0, fullIntent,PendingIntent.FLAG_CANCEL_CURRENT);
    ②若该Intent不带数据,则最后一个数参设为0
    eg:   PendingIntent Pfullintent=PendingIntent.getActivity(this, 0, fullIntent, 0);

    3、实例化RemoteView,其对应应相的Widget布局
    eg:   RemoteViews views= newRemoteViews(getPackageName(), R.layout.widget);

    4、给RemoteView上的Button或ImageButton置设按钮事件
    eg:  views.setOnClickPendingIntent(R.id.IBfullscreen,Pfullintent);

    5、更新AppWidget界面
    ①如果是在onUpdate()法方内更新AppWidget界面
    eg:  appWidgetManager.updateAppWidget(appWidgetIds, ActivityView);
    ②如果是在onUpdate()法方外(一般为Service内)更新AppWidget界面,则须要定义几个变量
    eg:   public RemoteViews views;//RemoteView象对
            publicComponentName thisWidget; //组件名
            public AppWidgetManager manager; // AppWidget管理器

            thisWidget = new ComponentName(this,PictureAppWidgetProvider .class);
            manager = AppWidgetManager.getInstance(this);
            manager.updateAppWidget(thisWidget, views);

    二、开启Service
    1、定义一个intent来开启Service
    eg:   Intent startServiceInten=newIntent("zyf.temp.Service.START");
    注:数参为开启Service的作动

    2、用Intent实例化一个PendingIntent,用利PendingIntent的getService法方来启动一个服务
    eg:   PendingIntent Pintent=PendingIntent.getService(context, 0, startServiceInten, 0);

    3、实例化RemoteView,其对应应相的Widget布局
    eg:   RemoteViews views= newRemoteViews(getPackageName(), R.layout.widget);

    4、给RemoteView上的Button或ImageButton置设按钮事件
    eg:  views.setOnClickPendingIntent(R.id.IBfullscreen,Pfullintent);

    5、更新AppWidget界面
    ①如果是在onUpdate()法方内更新AppWidget界面
    eg:  appWidgetManager.updateAppWidget(appWidgetIds, ActivityView);
    ②如果是在onUpdate()法方外(一般为Service内)更新AppWidget界面,则须要定义几个变量
    eg:   public RemoteViews views;//RemoteView象对
            publicComponentName thisWidget; //组件名
            public AppWidgetManager manager; // AppWidget管理器

            thisWidget = new ComponentName(this,PictureAppWidgetProvider .class);
            manager = AppWidgetManager.getInstance(this);
            manager.updateAppWidget(thisWidget, views);

    三、发送按钮Action
    1、定义一个Intent来发送按钮Action
    eg:   Intent prevInten=new Intent("PREV");

    2、用Intent实例化一个PendingIntent,用利PendingIntent的getBroadcast法方来发送播广
    eg:   PendingIntent Pprevintent=PendingIntent.getBroadcast(this, 0, prevInten, 0);

    3、实例化RemoteView,其对应应相的Widget布局
    eg:   RemoteViews views= newRemoteViews(getPackageName(), R.layout.widget);

    4、给RemoteView上的Button或ImageButton置设按钮事件
    eg:   views.setOnClickPendingIntent(R.id.IBprev,Pprevintent);

    5、更新AppWidget界面
    ①如果是在onUpdate()法方内更新AppWidget界面
    eg:  appWidgetManager.updateAppWidget(appWidgetIds, ActivityView);
    ②如果是在onUpdate()法方外(一般为Service内)更新AppWidget界面,则须要定义几个变量
    eg:   public RemoteViews views;//RemoteView象对
            publicComponentName thisWidget; //组件名
            public AppWidgetManager manager; // AppWidget管理器

            thisWidget = new ComponentName(this,PictureAppWidgetProvider .class);
            manager = AppWidgetManager.getInstance(this);
            manager.updateAppWidget(thisWidget, views);

    6、接收该Action
    ①在AppWidget自己的onReceive法方内接收
    ⒈在Action,要在Manifest.xml中参加Action
    eg:  <intent-filter>
              <actionandroid:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
              <actionandroid:name="PREV"></action>
          </intent-filter>
    ⒉在onReceive()法方内编写要实现的作动
    eg:   if(intent.getAction().equals("PREV"))
    {
         //在这编写接收到该Action后要实现的作动
    }
    ②在Service内接收
    ⒈注册一个BroadcastReceive,明声接收器
    eg:   IntentFilter filter=new IntentFilter();
            filter.addAction("PREV");
            registerReceiver(doCommand, filter);
    ⒉,在BroadcastReceive类的onReceive法方内编写要实现的作动
    eg:   if(intent.getAction().equals("PREV"))
    {
         //在这编写接收到该Action后要实现的作动
    }

    文章结束给大家分享下程序员的一些笑话语录: 神灯新篇
    一个程序员在海滩上发现了一盏神灯。他在灯上擦了几下,一个妖怪就从灯里跳出来说:“我是世界上法术最强的妖怪。我可以实现你的任何梦想,但现在,我只能满足你一个愿望。”程序员摊开了一幅中东地图说:“我想让中东得到永久的和平。”妖怪答道:“哦,我没办法。自打创世纪以来,那里的战火就没有停息过。这世上几乎没有我办不到的事,但这件事除外。”程序员于是说:“好吧,我是一个程序员,为许多用户编写过程序。你能让他们把需求表述得更清楚些,并且让我们的软件项目有那么一两次按进度按成本完成吗?”妖怪说:“唔,我们还是来看中东地图吧。”

  • 相关阅读:
    16年青岛网络赛 1001 I Count Two Three
    最短路算法--模板
    POJ 1511 Invitation Cards (spfa的邻接表)
    POJ 2240 Arbitrage
    POJ 1502 MPI Maelstrom
    POJ 1860 Currency Exchange (最短路)
    最短路径--SPFA 算法
    POJ 3660 Cow Contest
    POJ 3259 Wormholes (Bellman_ford算法)
    POJ 3268 Silver Cow Party (双向dijkstra)
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3031549.html
Copyright © 2011-2022 走看看