日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android tv 实现弹出通知

發(fā)布時間:2024/3/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android tv 实现弹出通知 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

谷歌官方文檔已經(jīng)說了,Android TV要給用戶展現(xiàn)的是沉浸式的體驗,不希望過多被干擾,所以,普通的Notification是無效的。
思路:一個透明的Activity+自定義Dialog實現(xiàn)類似彈出通知的效果。
先上效果圖:

styles.xml

<resources><!--透明主題--><style name="translucent" parent="Theme.AppCompat.Light.NoActionBar"><item name="android:windowBackground">@android:color/transparent</item><item name="android:windowIsTranslucent">true</item><item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item><item name="android:windowNoTitle">true</item><item name="android:windowActionBar">false</item></style> </resources>

MainActivity.java:

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);startService(new Intent(this, NotificationService.class));} }

NotificationService.java

public class NotificationService extends Service {@Nullable@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {// 模擬15秒之后通知到來new Handler().postDelayed(new Runnable() {@Overridepublic void run() {startActivity();}}, 15000);return super.onStartCommand(intent, flags, startId);}/*** 彈出通知*/private void startActivity() {Intent intent = new Intent(this, NotificationActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);} }

NotificationActivity.java

public class NotificationActivity extends Activity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_notification);showNotification();new Handler().postDelayed(new Runnable() {@Overridepublic void run() {if (!NotificationActivity.this.isDestroyed()) {// 延遲10秒關閉彈窗NotificationActivity.this.finish();}}}, 10000);}private void showNotification() {AlertDialog dialog = new AlertDialog.Builder(this).create();Window dialogWindow = dialog.getWindow();if (dialogWindow != null) {dialogWindow.setBackgroundDrawable(new ColorDrawable());}dialog.show();dialog.setContentView(R.layout.layout_dialog);// 設置window typedialog.setCanceledOnTouchOutside(true);if (dialogWindow != null) {WindowManager.LayoutParams lp = dialogWindow.getAttributes();dialogWindow.setGravity(Gravity.CENTER | Gravity.TOP);DisplayMetrics displayMetrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);lp.width = (int) (displayMetrics.widthPixels * 0.8); // 寬度lp.height = (displayMetrics.heightPixels / 3); // 高度//lp.x = (int) (100 * 0.15); // 新位置X坐標lp.y = (int) (displayMetrics.heightPixels * 0.05); // 新位置Y坐標//lp.alpha = 0.7f; // 透明度dialogWindow.setAttributes(lp);}} }

shape_dialog.xml

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><corners android:radius="3dp"/><solid android:color="#33688698"/> </shape>

activity_notification.xml:

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"/>

layout_dialog.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"android:gravity="center_vertical"android:padding="10dp"android:background="@drawable/shape_dialog"><ImageViewandroid:layout_width="@android:dimen/notification_large_icon_width"android:layout_height="@android:dimen/notification_large_icon_height"android:src="@mipmap/ic_launcher"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="8dp"android:textColor="@android:color/white"android:text="我是通知的詳細內(nèi)容我是通知的詳細內(nèi)容我是通知的詳細內(nèi)容我是通知的詳細內(nèi)容我是通知的詳細內(nèi)容"/> </LinearLayout>

清單文件:

<activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".NotificationActivity"android:theme="@style/translucent"/><service android:name=".NotificationService"/>

總結(jié)

以上是生活随笔為你收集整理的android tv 实现弹出通知的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。