当前位置: 首页 > news >正文

Android移动应用开发之ImageView、ProgressBar和Notification的一些简单使用

文章目录

  • 主要文件目录
    • MainActivity:
    • NotificationActivity
    • a.png
    • ic_baseline_account_box_24.xml
    • activity_main
    • 运行

主要文件目录

在这里插入图片描述

MainActivity:

这里主要用于按钮响应处理和通知处理

package zufe.scq.hunter;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;

import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;

public class MainActivity extends AppCompatActivity {
    private EditText et;
    private ProgressBar progressBar;
    private ProgressBar progressBar2;
    private NotificationManager manager;
    private Notification notification;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        progressBar = findViewById(R.id.pb);
        progressBar2 = findViewById(R.id.pb2);

        manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//        版本判断
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
           NotificationChannel channel =  new NotificationChannel("hunter", "测试通知",
                   NotificationManager.IMPORTANCE_HIGH);
           manager.createNotificationChannel(channel);
        }

        Intent intent = new Intent(this, NotificationActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);

//        通知的设置
        notification = new NotificationCompat.Builder(this, "hunter")
//                通知标题
                .setContentTitle("官方通知")
                .setContentText("AABB")
//                小图标
                .setSmallIcon(R.drawable.ic_baseline_account_box_24)
//                大图
                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.a))
//                小图标颜色
                .setColor(Color.parseColor("#ff0000"))
//                点击后跳转
                .setContentIntent(pendingIntent)
                .setAutoCancel(true)
                .build();

    }

//    隐藏进度条按钮
    public void HunterClick(View view) {
        if(progressBar.getVisibility() == View.GONE){
            progressBar.setVisibility(View.VISIBLE);
        }else{
            progressBar.setVisibility(View.GONE);
        }
    }

//    模拟下载按钮
    public void HunterClick2(View view) {
        int progress = progressBar2.getProgress();
        progress += 10;
        progressBar2.setProgress(progress);
    }

//    发送通知按钮
    public void sendNotification(View view){
        manager.notify(1, notification);

    }
}

NotificationActivity

用于处理点击通知后的页面展示和信息打印。

package zufe.scq.hunter;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import androidx.annotation.Nullable;

public class NotificationActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.e("hunter", "onCreate, 进入NotificationActivity" );
    }
}

a.png

自己准备一张图片
在这里插入图片描述

ic_baseline_account_box_24.xml

一张矢量图,用于作通知的小图标

<vector android:height="24dp" android:tint="#43805B"
    android:viewportHeight="24" android:viewportWidth="24"
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="@android:color/white" android:pathData="M3,5v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2L5,3c-1.11,0 -2,0.9 -2,2zM15,9c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3 1.34,-3 3,-3 3,1.34 3,3zM6,17c0,-2 4,-3.1 6,-3.1s6,1.1 6,3.1v1L6,18v-1z"/>
</vector>

activity_main

布局中主要的控件

<?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="vertical">

    <ImageView
        android:src="@drawable/a"
        android:scaleType="fitCenter"
        android:layout_width="200dp"
        android:layout_height="200dp"/>

    <ProgressBar
        android:id="@+id/pb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:onClick="HunterClick"
        android:text="显示隐藏进度条"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <ProgressBar
        android:id="@+id/pb2"
        style="?android:attr/progressBarStyleHorizontal"
        android:max="100"
        android:layout_width="300dp"
        android:layout_height="wrap_content"/>

    <Button
        android:text="模拟下载"
        android:onClick="HunterClick2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="sendNotification"
        android:text="发送通知"/>


</LinearLayout>

运行

运行app,结果如下:
在这里插入图片描述

在这里插入图片描述
最上面是张图片

在这里插入图片描述
这是个转圈类型的进度条
在这里插入图片描述
点击按钮就会隐藏

在这里插入图片描述
点击模拟下载进度条会发生改变

在这里插入图片描述
点击发送通知,会跳出通知弹框,最左边是小图标,可以设置颜色,不过不能有RGB,最右边是大图,自己设置

在这里插入图片描述
点击通知则跳转到另一页面

控制台输出:
在这里插入图片描述
说明通知跳转成功。

相关文章:

  • SQL经典练习题(openGauss数据库)上
  • CSDN编程竞赛-第六期(下)
  • Spring 静态属性赋值 @value 注入静态属性 @Value注解用法
  • 【零基础学QT】第九章 窗口美化QSS的使用
  • aws codesuit workshop
  • Linux内存管理——段页式访问
  • Hadoop基础学习笔记
  • 微信小程序 - 页面插入添加 Banner 广告超详细教程(支持自定义样式、位置、大小等)及注意事项
  • JavaScript笔记9-节点操作
  • 【YOLOv7】使用 YOLOv7 做目标检测 (使用自己的数据集 + 图解超详细)
  • 【C语言】break 关键字
  • sql窗口函数学习笔记
  • 记:谷歌开发者大会2022——共码未来
  • vue3 + vite 性能优化 ( 从5s -> 0.5s )
  • SpringBoot 静态资源(static)无法访问问题404
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • classpath对获取配置文件的影响
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java编程基础24——递归练习
  • js数组之filter
  • JS专题之继承
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 前嗅ForeSpider教程:创建模板
  • 容器服务kubernetes弹性伸缩高级用法
  • 深度学习入门:10门免费线上课程推荐
  • 项目实战-Api的解决方案
  • 携程小程序初体验
  • 回归生活:清理微信公众号
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​TypeScript都不会用,也敢说会前端?
  • !$boo在php中什么意思,php前戏
  • # wps必须要登录激活才能使用吗?
  • #vue3 实现前端下载excel文件模板功能
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (2)STL算法之元素计数
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (面试必看!)锁策略
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (小白学Java)Java简介和基本配置
  • (一)认识微服务
  • (转)jQuery 基础
  • (转)重识new
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?