自定义通知栏这样操作应该怎么搞?花式TextView操作在这里

来源:互联网 发布:sql 给列添加默认值 编辑:程序博客网 时间:2024/05/16 18:48

构建通知栏

private void sendNotification() {        notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);//通知管理器        RemoteViews  contentView = new RemoteViews(getPackageName(), R.layout.view_custom_button);//远程视图        // 设置远程视图中的控件内容        contentView.setImageViewResource(R.id.notify_music_icon, R.mipmap.app_icon);        contentView.setTextViewText(R.id.txt_notify_Title,"标题" );        Intent pauseIntent = new Intent(this, MyReceiver.class);//intent是一个广播类对象        pauseIntent.setAction("NOTIFY_PAUSE");//设置动作        PendingIntent pausePendingIntent = PendingIntent.getBroadcast(this, 0, pauseIntent, 0);//pendingIntent得到广播        contentView.setOnClickPendingIntent(R.id.btn_notify_pause, pausePendingIntent);//设置按钮成带PendingIntent的可点击按钮        Intent nextIntent = new Intent(this, MyReceiver.class);        nextIntent.setAction("NOTIFY_NEXT");        PendingIntent nextPendingIntent = PendingIntent.getBroadcast(this, 0, nextIntent, 0);        contentView.setOnClickPendingIntent(R.id.btn_nitify_exit, nextPendingIntent);        //如果api版本11(android 3.0)以上按钮才显示        if (Build.VERSION.SDK_INT >= 11) {            contentView.setViewVisibility(R.id.btn_notify_pause, View.VISIBLE);            contentView.setViewVisibility(R.id.btn_notify_next, View.VISIBLE);            contentView.setViewVisibility(R.id.btn_nitify_exit, View.VISIBLE);        }        //3        Notification notification = new Notification(R.mipmap.app_icon, "法律家来消息了", System.currentTimeMillis()); //实例化通知对象        // 绑定远程视图        notification.contentView = contentView;        // 4.定义 PendingIntent并绑定        Intent notificationIntent = new Intent(this, MainActivity.class);        notification.contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {            notification.bigContentView=contentView;        }        notification.contentIntent =pausePendingIntent;// 绑定 PendingIntent       // notification.flags = Notification.FLAG_NO_CLEAR;// 设置不可取消        // 5 发通知        notificationManager.notify(1, notification);    }

xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/RelativeLayout1"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:background="@color/lavenderblush"    >    <ImageView        android:layout_gravity="center_vertical"        android:id="@+id/notify_music_icon"        android:layout_width="100dp"        android:layout_height="100dp"        android:src="@mipmap/app_icon" />    <LinearLayout        android:layout_width="120dp"        android:layout_height="wrap_content"        android:layout_gravity="center_vertical">    <TextView        android:id="@+id/txt_notify_Title"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:paddingTop="3dp"        android:text="您正在使用法律家APP语音服务,可操作右边按钮控制进程"        android:textColor="@color/black" />    </LinearLayout>    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_vertical"        android:gravity="center_vertical"        android:orientation="vertical">        <LinearLayout            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:layout_marginLeft="20dp"            android:layout_marginTop="10dp"            android:gravity="center_vertical">            <ImageView                android:id="@+id/btn_nitify_exit"                android:layout_width="40dp"                android:layout_height="40dp"                android:layout_gravity="center_vertical"                android:layout_marginRight="15dp"                android:background="@mipmap/play"                android:clickable="true"                android:gravity="center_vertical" />            <ImageView                android:id="@+id/btn_notify_pause"                android:layout_width="40dp"                android:layout_height="40dp"                android:layout_centerVertical="true"                android:layout_gravity="center_vertical"                android:layout_marginRight="3dp"                android:layout_toLeftOf="@+id/btn_notify_next"                android:background="@mipmap/stop"                android:clickable="true" />        </LinearLayout>    </LinearLayout></LinearLayout>

还有一个广播

public class MyReceiver extends BroadcastReceiver {    private Voice_BroadcaseUtil util;  //调用    private Context context;    private NotificationManager notificationManager;    public MyReceiver() {    }    @Override    public void onReceive(Context context, Intent intent) {        util=new Voice_BroadcaseUtil(context);        String action = intent.getAction();        if ("NOTIFY_PAUSE".equals(action)) {            util.toVoiceSpeakPaused();        }        if ("NOTIFY_NEXT".equals(action)) {            util.toVoiceSpeakResumed();        }        if ("NOTIFY_EXIT".equals(action)) {        }    }    public void onReceive(Context context, Intent intent, String string, int id) {        util=new Voice_BroadcaseUtil(context);         notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);        String action = intent.getAction();        if ("NOTIFY_NEXT".equals(action)) {            util.toVoiceStartSpeak(string);        }        if ("NOTIFY_PAUSE".equals(action)) {            util.toVoiceSpeakPaused();        }        if ("NOTIFY_CLOSE".equals(action)) {            System.out.println("xxxxx");            notificationManager.cancel(id);        }    }}

花式TextView

 textView.setText(Html.fromHtml("<p>为您找到<p><font color=\"red\">" + "100" + "</p>个相关结果</p>"));//使用HTML语言写的不常见,记住了!

刷新装载数据

 @Override    protected void addArrayListData(Laws_ResponseData response) {        if (response != null) {            if (response.objs.size() > 0) {                setArrayListData(response.objs);                setDataItemCount(10);            } else {            }        }    }

这样就完成了一个带有Button控件的通知栏,可以随意定义播放的是科大讯飞的语音。也可以播放其他文件,实测不错
这里写图片描述

阅读全文
0 0