.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:paddingBottom="@dimen/activity_vertical_margin"
  7. android:paddingLeft="@dimen/activity_horizontal_margin"
  8. android:paddingRight="@dimen/activity_horizontal_margin"
  9. android:paddingTop="@dimen/activity_vertical_margin"
  10. tools:context="com.hanqi.application3.UIActivity7"
  11. android:orientation="vertical">
  12.  
  13. <AutoCompleteTextView
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content"
  16. android:hint="自动完成文本编辑框"
  17. android:id="@+id/actv_1"
  18. android:completionThreshold="1"/>
  19. <!--completionThreshold 提示所需要的字符-->
  20. <Spinner
  21. android:layout_width="wrap_content"
  22. android:layout_height="wrap_content"
  23. android:id="@+id/sp_1">
  24.  
  25. </Spinner>
  26. <Button
  27. android:layout_width="match_parent"
  28. android:layout_height="wrap_content"
  29. android:text="状态栏提示"
  30. android:onClick="notification_onClick"/>
  31.  
  32. <ImageView
  33. android:layout_width="wrap_content"
  34. android:layout_height="wrap_content"
  35. android:src="@drawable/da2"
  36. android:id="@+id/iv_3"/>
  37. </LinearLayout>

.java

  1. package com.hanqi.application3;
  2.  
  3. import android.app.Notification;
  4. import android.app.NotificationManager;
  5. import android.app.PendingIntent;
  6. import android.content.Intent;
  7. import android.os.Handler;
  8. import android.os.Message;
  9. import android.support.v7.app.AppCompatActivity;
  10. import android.os.Bundle;
  11. import android.view.View;
  12. import android.widget.AdapterView;
  13. import android.widget.ArrayAdapter;
  14. import android.widget.AutoCompleteTextView;
  15. import android.widget.ImageView;
  16. import android.widget.Spinner;
  17. import android.widget.Toast;
  18.  
  19. import java.util.Timer;
  20. import java.util.TimerTask;
  21.  
  22. public class UIActivity7 extends AppCompatActivity {
  23.  
  24. @Override
  25. protected void onCreate(Bundle savedInstanceState) {
  26. super.onCreate(savedInstanceState);
  27. setContentView(R.layout.activity_ui7);
  28.  
  29. AutoCompleteTextView actv_1 = (AutoCompleteTextView)findViewById(R.id.actv_1);
  30. //设置自动完成的数据源
  31.  
  32. String[] strings = {"China","Child","Chile","Chinese","Add","All","Class","Ddp"};
  33. ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.layout_array,strings);
  34.  
  35. actv_1.setAdapter(arrayAdapter);
  36.  
  37. //下拉列表
  38. String[] strings1 = {"China","Child","Chile","Chinese","Add","All","Class","Ddp"};
  39. ArrayAdapter<String> arrayAdapter1 = new ArrayAdapter<String>(this,R.layout.layout_array,strings1);
  40. Spinner sp1= (Spinner)findViewById(R.id.sp_1);
  41.  
  42. sp1.setAdapter(arrayAdapter1);
  43.  
  44. sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
  45. @Override
  46. public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
  47. Toast.makeText(UIActivity7.this, "position ="+position, Toast.LENGTH_SHORT).show();
  48. }
  49.  
  50. @Override
  51. public void onNothingSelected(AdapterView<?> parent) {
  52.  
  53. Toast.makeText(UIActivity7.this, "什么也没选", Toast.LENGTH_SHORT).show();
  54.  
  55. }
  56. });
  57.  
  58. //handler
  59. final ImageView iv3 = (ImageView)findViewById(R.id.iv_3);
  60.  
  61. final int[] iImageid = {R.drawable.da1,R.drawable.da2,R.drawable.da3,R.drawable.da4};
  62.  
  63. //继承Handler
  64. final Handler handler = new Handler()
  65. {
  66. int i = 0;
  67. //处理消息的回调方法
  68. //重写
  69. @Override
  70. public void handleMessage(Message msg) {
  71. super.handleMessage(msg);
  72. //判断消息的类别
  73. if(msg.what ==1)
  74. {
  75. //切换图片
  76. iv3.setImageResource(iImageid[i++ % iImageid.length]);
  77. // i++;
  78. // if(i==10)
  79. // {
  80. // i=0;
  81. // }
  82.  
  83. }
  84. }
  85. };
  86. //在新线程发送消息
  87. //定式循环发送
  88. //定时器:启动新线程,定时执行代码
  89. new Timer().schedule(new TimerTask() {
  90. @Override
  91. public void run() {
  92. //发送消息
  93. //空消息
  94. handler.sendEmptyMessage(1);
  95.  
  96. }
  97. },1000,2000);
  98.  
  99. }
  100. public void notification_onClick(View v)
  101. {
  102. //1.获取状态栏消息管理器
  103. NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
  104.  
  105. //3.构建意图
  106. Intent intent = new Intent(this,UIActivity2.class);
  107.  
  108. //4.获取PendingIntent
  109. PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
  110.  
  111. //2.构建消息 方法链调用
  112. Notification nt = new Notification.Builder(this)
  113. .setContentTitle("这是一个通知")
  114. .setContentText("这是通知内容:点击打开新的界面 ")
  115. .setTicker("新通知")
  116. .setSmallIcon(R.drawable.da1)//图片
  117. .setAutoCancel(true)
  118. .setDefaults(Notification.DEFAULT_ALL)//声音
  119. .setContentIntent(pendingIntent)
  120.  
  121. .build();
  122. //交给管理器,发出消息
  123. nm.notify(0,nt);
  124.  
  125. }
  126. }

andorid 多线程handler用法的更多相关文章

  1. C#多线程的用法8-线程间的协作AutoResetEvent

    AutoResetEvent自动重置事件,与ManualResetEvent是相对的而言.它同样用于线程间同步,请对照<C#多线程的用法7-线程间的协作ManualResetEvent>进 ...

  2. Python爬虫进阶五之多线程的用法

    前言 我们之前写的爬虫都是单个线程的?这怎么够?一旦一个地方卡到不动了,那不就永远等待下去了?为此我们可以使用多线程或者多进程来处理. 首先声明一点! 多线程和多进程是不一样的!一个是 thread ...

  3. android中handler用法总结

    一.Handler的定义: Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用.比如可以用handler发送一个message,然后在handler的线程中 ...

  4. Android(java)学习笔记134:Handler用法总结 和 秒表案例

    一.Handler的定义: Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用.比如可以用handler发送一个message,然后在handler的线程中 ...

  5. Android学习笔记--Handler用法总结

    不错的例子:http://www.cnblogs.com/menlsh/archive/2013/06/07/3125341.html 转自:一叶知秋的博客 http://blog.sina.com. ...

  6. C#多线程的用法10-线程池

    TheadPool:在进行多线程编程时,如果不想频繁的创建线程,那可以考虑使用使用线程池来完成多线程编程的工作.你只需将要处理的任务交付给ThreadPool,如果ThreadPool中有空闲的线程, ...

  7. Android(java)学习笔记76:Handler用法总结 和 秒表案例

    一.Handler的定义: Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用.比如可以用handler发送一个message,然后在handler的线程中 ...

  8. Handler用法总结

    一.线程通讯问题 1.1 Message.Handler.Looper 在Android中提供了一种异步回调机制Handler,我们可以它来完成一个很长时间的任务. Handler基本使用: 在主线程 ...

  9. Handler用法

    1.子线程创建handler 方法一 HandlerThread handlerThread = new HandlerThread(" sub thread name");  / ...

随机推荐

  1. 神经网络中的激活函数具体是什么?为什么ReLu要好过于tanh和sigmoid function?(转)

    为什么引入激活函数? 如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层 ...

  2. pandas.DataFrame.to_excel

    1. file_name = 'aa.xlsx' df.to_excel(file_name) #这种file_name不能重复,已经生成过的就会报错 writer = pd.ExcelWriter( ...

  3. quast-lg

    1.官网简介 http://cab.spbu.ru/software/quast-lg/ QUAST- lg是QUAST的一个扩展,用于评估大型基因组装配(直至哺乳动物大小).QUAST- lg从5. ...

  4. openssl数字证书常见格式 协议

    证书主要的文件类型和协议有: PEM.DER.PFX.JKS.KDB.CER.KEY.CSR.CRT.CRL .OCSP.SCEP等. PEM – Openssl使用 PEM(Privacy Enha ...

  5. AssetBundle Manager

    [AssetBundle Manager] AssetBundleManager是一个款Unity公司制作的Unity库. 1.Simulation Mode The main advantage o ...

  6. Nodejs this详解

    [Nodejs this详解] Nodejs中, 文件层this,指向的是module.export. 函数层this,指向的是global对象. 参考:http://www.jb51.net/art ...

  7. javascript学习笔记(一):基础、输出、注释、引用、变量、数据类型

    javascript脚本必须位于<script></script>之间,<script>标签可以位于<head>中,也可以位于<body>中 ...

  8. Java String和StringBuffer和StringBuilder

    最近在牛课网上做了几道字符串操作的题目,好久没有做题了,之前用的也是大一时C语言做的,对Java字符串操作不太了解,所以深入了解一下String类的相关用法 String构造方法 String() 空 ...

  9. Android开发之getX,getRawX,getWidth,getTranslationX等的区别

    转载请注明出处:http://blog.csdn.net/dmk877/article/details/51550031      好久没写博客了,最近工作确实挺忙的,刚刚结束了一个TV项目的开发,对 ...

  10. sql去除重复语句

    转自芙蓉清秀的BLOG http://blog.sina.com.cn/liurongxiu1211  sql去除重复语句 (2012-06-15 15:00:01) sql 单表/多表查询去除重复记 ...