想到啥写啥第一期:致力于更简单易懂的代码解决我们安卓小白遇到的问题
今天写两个小东西,感觉应该是互不相关的吧,反正随便写啦,代码也不多,Notification+自定义toast的展示界面。
1.notification用于消息通知,就是别人发短信过来的接受消息时候的那种功能
2.自定义toast就广泛多了,玩游戏获取什么奖励时候弹出来的那个一般就是ImageView+TextView 的toast
好了废话不多说,上代码
.java
public class MyNotification extends AppCompatActivity {
private Notification notification;
private Notification.Builder builder;
private NotificationManager manager;
private Button button;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.toast);
button = findViewById(R.id.button);
// 这三个参数实例化的方式都不相同,要多练练才能记得牢
// manager的实例化有点像fragmenManger的实例化
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Intent intent = new Intent(this,MyToast.class);
//final好像是因为下面的调用自动帮我加的,写的时候可以不记加不加
//pendingIntent用于消息框点击消息进行跳转的类,讲道理,应该可以有其他的应用场所
final PendingIntent pIntent = PendingIntent.getActivity(this,1,
intent,1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT<26){
//根据SDK版本不同选取不同的方法实例化
builder = new Notification.Builder(MyNotification.this);
}else {
builder = new Notification.Builder(MyNotification.this,"0");
NotificationChannel channel = new NotificationChannel(
"0","通道名",NotificationManager.IMPORTANCE_HIGH);
//记住,channel被创建进了manager,不是builder,有点绕
manager.createNotificationChannel(channel);
//用来设计显示的消息有什么内容,见名知意我就不多赘述了
builder.setContentTitle("水煮蛋")
.setContentText("荷包蛋")
.setContentIntent(pIntent)
.setSubText("滚蛋")
.setSmallIcon(R.drawable.ic_launcher_foreground)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher_background))//这两个图标的显示图片的方式有点不一样,要练练
.setAutoCancel(true)
.setWhen(System.currentTimeMillis())
.setTicker("王八蛋");
notification = builder.build();
//notify是用来显示消息的,cancel是用来取消这个消息显示的,很多弹出式的都有这类特性方法,记就完事了,至于第一个参数为什么要这么写,我也不知道......(请饶恕我的 无知)
manager.notify(0x0001,notification);
// manager.cancel(0x0001);
}
}
});
}
}
notification的演示就写完了,跳转的那个页面叫MyToast就是我自定义的toast
现在讲自定义toast,代码其实很简答,它总的方法也不多,嘿嘿
.java
public class MyToast extends AppCompatActivity{
private Button button;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.toast);
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast toast = new Toast(MyToast.this);
View view = LayoutInflater.from(getApplicationContext())
.inflate(R.layout.toast_item,null);
// ImageView imageView = view.findViewById(R.id.imageView2);
// imageView.setImageResource(R.drawable.ic_launcher_background);
toast.setView(view);
toast.setDuration(Toast.LENGTH_SHORT);
// toast.setGravity(Gravity.CENTER_HORIZONTAL,10,10);
toast.show();
}
});
}
其实最主要还是那个setView方法,明白人其实不看这个也能猜到自定义是怎么搞的,毕竟自定义Dialog也是这么个套路,一通百通…
来源:CSDN
作者:weixin_43272727
链接:https://blog.csdn.net/weixin_43272727/article/details/104069303