自定義通知欄這樣操作應該怎麼搞?花式TextView操作在這裏

構建通知欄

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控件的通知欄,可以隨意定義播放的是科大訊飛的語音。也可以播放其他文件,實測不錯
這裏寫圖片描述

發佈了63 篇原創文章 · 獲贊 15 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章