zoukankan      html  css  js  c++  java
  • Android控件第6类——杂项控件

    1、Toast

      Toast用于显示提示信息。

      Toast不会获得焦点,没法关闭,过段时间会自动消失。

      使用方法:Toast.makeText获得Toast,并设置相关属性。调用Toast对象的show方法显示。

      默认情况,Toast只弹出一段话,如果想要更加复杂的Toast,可以调用Toast对象的setView方法。

    2、Notification

      用来发送手机状态栏消息。手机的状态栏位于屏幕最上方。

      使用方法:

      • 构造一个Notification.Builder,并为Builder对象设置相关属性
      • 然后调用Builder对象的build方法,就可以构造出一个Notification对象。
      • 调用getSystemService(NOTIFICATION_SERVICE)获取NotificationManager对象,并使用NotificationManager对象的notify方法发送Notification。
        •   说明:getSystemService方法和NOTIFICATION_SERVICE常量都是Context类中声明的。

      常用方法:

      • setAutoCancel:点击消息后,状态栏将删除通知
      • setDefaults:设置通知的LED灯、音乐、震动等
        •   参数:
          • Notification.DEFAULT_SOUNT
          • Notification.DEFAULT_VIBRATE
          • Notification.DEFAULT_LIGHTS
          • Notification.ALL
      • setSound:设置通知的音乐
      • setLights:设置LED等
      • setVibrate:设置震动
      • setTicker:状态栏上通知的提示信息
      • setSmallIcon:设置通知图标
      • setContentTitle:设置内容标题
      • setContentText:设置内容文本
      • setContentIntent:如果设置了contentIntent,在点击这个通知时,将会启动Intent对应的组件。这个方法对应的参数为PendingIntent

      PendingIntent

      • Intent将会直接调用并启动对应的组件,但是对于像Notification这样的场景,并不是在产生消息的时候直接启动组件,而是在用户对消息进行某种操作的时候,才会启动组件,这个时候就需要使用PendingIntent。
      • 使用PendingIntent.getActivities来构造PendingIntent,其参数中将要使用Intent对象。

      

      在测试的时候,在Activity中通过getIntent获取到的Intent对象中,总是获取不到想要的信息。

      在网上搜索发现,如果使用了相同的Intent,在创建PendingIntent的时候需要设置Flags参数为PendingIntent.FLAG_CANCEL_CURRENT,如下所示。

      PendingIntent.getActivity(AtyNotification.this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT) 

        如果不是相同的Intent,Flags参数可不设置为PendingIntent.FLAG_CANCEL_CURRENT

       Intent intent2 = new Intent(Intent.ACTION_VIEW);
       intent2.setData(Uri.parse("tel:10086"));
       notification.setContentIntent(PendingIntent.getActivity(AtyNotification.this, 0, intent2, 0));

    3、CalendarView,继承自FrameLayout

      用于显示和选择日期。

      使用setOnDateChangeListener监听日期变化。

    4、DatePicker,继承自FrameLayout

      供用户选择日期。

      DatePicker没有setOnDateChangedListener方法,而是在DatePicker对象的init方法中,将OnDateChangedListener对象作为参数传递进去。

    5、TimePicker,继承自FrameLayout

      供用户选择时间。

      TimePicker与DatePicker不同,它使用setOnTimeChangedListener来传递时间改变的事件监听器。

    6、NumberPicker,继承自LinearLayout

      数字选择器。

      通过setMinValue和setMaxValue设置最大值和最小值;通过setValue设置当前值。

      通过setOnValueChangedListener传递数值改变的事件监听器。

      

    7、SearchView,继承自LinearLayoutCompat

      搜索框。

      常用方法:

      • setIconifiedByDefault(boolean iconified):设置该搜索框默认是否自动缩小为图标
      • setSubmitButtonEnabled(boolean enabled):设置是否显示搜索框按钮
      • setQueryHint(CharSwquence hint):设置搜索框内默认显示的提示文本
      • setOnQueryTextListener(SearchView.OnQueryTextListener):为搜索框设置事件监听器

    8、ScrollView,HorizontalScrollView,继承自FrameLayout

      垂直滚动体和水平滚动条,这是两个不同的控件,分别负责在垂直方向和水平方向的滚动条。

      滚动条内部只能放置一个控件。

    9、TabHost,继承自FrameLayout,已不推荐使用

      与TabHost一起使用的类包括:TabWidget(标签条)和TabSpec(选项卡的一个页签)。

      当使用TabActivity来实现TabHost的时候,它的layout文件应该包含以下内容:

      • TabHost控件的id需要设置为:@android:id/tabhost
      • TabWidget控件的id需要设置为:@android:id/tabs
      • TabWidget需要包含一个FrameLayout,id为:@android:id/tabcontent

      向TabHost中添加页签的方式:

      • 生成TabSpec对象:TabSpec spec1= tabHost.newTabSpec("tabSpec1").setIndicator("标题1").setContent(R.id.tabSpec1);
      • 将TabSpec对象加入到tabHost中:tabHost.addTab(spec1);

      现在已经不推荐使用TabActivity,推荐使用Fragement代替TabActivity。

      

  • 相关阅读:
    黑色边影,
    拉伸的代码,
    一定是selection的原因啊,要不然呢,
    status bar的差别,
    黄色,
    域名错了,
    node=day4
    PS切片
    移动端插件IScroll.js
    移动web资源概论
  • 原文地址:https://www.cnblogs.com/huanyou/p/5273076.html
Copyright © 2011-2022 走看看