zoukankan      html  css  js  c++  java
  • RemoteViews的理解和使用

    一、RemoteViews简介

    作用:跨进程更新界面                         使用场景:通知栏、桌面小部件

    二、在通知栏上的应用

    原理:通过RemoteViews加载布局,通过remoteViews的set方法,载入View动态改变布局

    (一)、Notifaction的使用:Notification的使用

    (二)、利用RemoteView来自定义布局

    步骤①、创建layout布局

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@+id/show_linear"
                  android:orientation="horizontal"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent">
        <ImageView
            android:id="@+id/show_iv_icon"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@mipmap/ic_launcher"/>
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical">
            <TextView
                android:id="@+id/show_tv_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Hello World"/>
            <TextView
                android:id="@+id/show_tv_content"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="I am a super man"/>
        </LinearLayout>
    </LinearLayout>
    notification_show

    步骤②、利用RemoteViews动态修改布局

     Intent intent = new Intent(this,OtherActivity.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
            //利用Notification.Builder创建Notification
            Notification.Builder notification = new Notification.Builder(this);
            notification.setAutoCancel(true);
            notification.setSmallIcon(R.mipmap.ic_launcher);
            notification.setContentTitle("Hello World");
            notification.setContentText("I am a ET");
            notification.setContentIntent(pendingIntent);
           /*利用RemoteViews动态修改layout的内容*/
            //通过包名,和自定义的layout创建RemoteViews
            RemoteViews remoteViews = new RemoteViews(getPackageName(),R.layout.notification_show);
            //修改View的内容
            remoteViews.setImageViewResource(R.id.show_iv_icon,R.mipmap.ic_launcher);
            remoteViews.setTextViewText(R.id.show_tv_title,"This is fine day");
            remoteViews.setTextViewText(R.id.show_tv_content,"Do you want to go with me");
            //对RemoteViews设置跳转
            remoteViews.setOnClickPendingIntent(R.id.show_linear,pendingIntent);
            //将notification的View设置为RemoteViews
            notification.setContent(remoteViews);
            notification.setContentIntent(pendingIntent);
            //配置完成后,将builder转化为Notification
            Notification notification1 = notification.getNotification();
            //放入Notification管理器中
            NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            notificationManager.notify(0,notification1);

    问:为什么更新View需要用到RemoteViews类(稍后讲解)

    为什么需要用到PendingIntent。(说明Intent中所包含的意图必须由用户触发)

    三、RemoteViews在桌面小部件上的应用(放弃,以后再说)

    AppWidgetProvider是Android用于实现桌面小部件的类,本质上是一个广播(BroadcastRecevier)

    步骤:①、定义小部件(在res/layout/下新建一个XML文件)  自 定 义

    ②、定义小部件配置信息(res/xml/下新建一个xml文件)

  • 相关阅读:
    N46期第一周作业
    马哥博客作业第五周
    马哥博客作业第四周
    马哥博客作业第三周
    04go条件和循环
    03go运算符
    01go变量和常量
    02vue指令-1
    01vue初识
    05django模板层
  • 原文地址:https://www.cnblogs.com/rookiechen/p/5427297.html
Copyright © 2011-2022 走看看