安卓APP——收到数据显示在APP上
目录
一、按键改变文本数据
1.1、按下按键,改变文本控件的显示
1.2、按下按键,每隔1s刷新一次文本(非UI线程想要控制控件用Handler)
二、10s倒计时APP
一、按键改变文本数据
1.1、按下按键,改变文本控件的显示
- 页面xml,添加一个文本和按键,添加ID,用onClick按键响应
<TextViewandroid:id="@+id/text1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="37dp"android:onClick="testFunc"android:text="改变文本" />
- Activity文件,按键按下改变文本,3句
package com.example.zz;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.TextView;public class MainActivity extends Activity {public TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.text1);}public void testFunc(View v){textView.setText("xiaowei");}}
1.2、按下按键,每隔1s刷新一次文本(非UI线程想要控制控件用Handler)
- 创建新线程,每隔1s刷新一次,发现会崩
package com.example.zz;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.TextView;public class MainActivity extends Activity {public TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.text1);}public void testFunc(View v){new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubfor (int i = 0; i < 10; i++) {textView.setText("xiaowei"+i);try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }}).start();}}
- 解决上面问题就要用到一个类,Handler,用os的Handler
public Handler h;
- 处理消息
h = new Handler(){ //UI主线程的电话,接到电话,去处理其他线程无法处理的事件@Overridepublic void handleMessage(Message msg) {//区分事件的类型// TODO Auto-generated method stubsuper.handleMessage(msg);textView.setText("xiaowei"+msg.what);//Ui线程改变控件}};
- 新线程发送要处理的事件到Handler
Message msg = new Message();//做一个Message出来 msg.what = i; //打电话,去把UI要显示,处理的事件交给UI线程的Handler h.sendMessage(msg); //发送到Handler
- 完整代码
package com.example.zz;import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.TextView;public class MainActivity extends Activity {public TextView textView;public Handler h;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.text1); h = new Handler(){ //UI主线程的电话,接到电话,去处理其他线程无法处理的事件@Overridepublic void handleMessage(Message msg) {//区分事件的类型// TODO Auto-generated method stubsuper.handleMessage(msg);textView.setText("xiaowei"+msg.what);//Ui线程改变控件}};}public void testFunc(View v){new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubfor (int i = 0; i < 10; i++) {Message msg = new Message();//做一个Message出来msg.what = i; //打电话,去把UI要显示,处理的事件交给UI线程的Handlerh.sendMessage(msg); //发送到Handlertry {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }}).start();}}
二、10s倒计时APP
使横屏,去掉上面标题
//横屏,在配置文件里加上
android:screenOrientation="landscape">
//去掉上面标题,在Activity文件的setContentView(R.layout.activity_main);语句前面加上
requestWindowFeature(Window.FEATURE_NO_TITLE);
- xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#000000"tools:context=".MainActivity" ><TextViewandroid:id="@+id/text1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:textSize="100dp"android:textColor="#ffffff"android:textStyle="bold"android:text="10s" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="37dp"android:onClick="testFunc"android:text="10s倒计时" /></RelativeLayout>
- java
package com.example.zz;import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.Window; import android.widget.TextView;public class MainActivity extends Activity {public TextView textView;public Handler h;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.text1); h = new Handler(){ //UI主线程的电话,接到电话,去处理其他线程无法处理的事件@Overridepublic void handleMessage(Message msg) {//区分事件的类型// TODO Auto-generated method stubsuper.handleMessage(msg);textView.setText(msg.what + "s");//Ui线程改变控件}};}public void testFunc(View v){new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubfor (int i = 10; i >= 0; i--) {Message msg = new Message();//做一个Message出来msg.what = i; //打电话,去把UI要显示,处理的事件交给UI线程的Handlerh.sendMessage(msg); //发送到Handlertry {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }}).start();}}
三、安卓APP接收数据并刷新界面
- xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#000000"tools:context=".MainActivity" ><Button android:id="@+id/b1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:onClick="bottonBeCliecked"android:text="开灯" />/><TextView android:id="@+id/te1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:textSize="40dp"android:textColor="#ffffff"android:text=""/></RelativeLayout>
- java
package com.example.xw;import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.TextView;import com.example.NetUtills.xw.NetUtills;public class MainActivity extends Activity {private Handler h;public TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.te1);h = new Handler(){public void handleMessage(Message msg) {super.handleMessage(msg);Bundle b = msg.getData();String string = b.getString("msg"); //取出msg里的字符串textView.setText(string); //改变文本控件的内容}};}public void bottonBeCliecked(View v){NetUtills.sendMessageHandler("on light", h); //按下按键往服务器发送一个数据,如何等待接收服务器发回的数据}}
package com.example.NetUtills.xw;import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket;import android.os.Bundle; import android.os.Handler; import android.os.Message;public class NetUtills {public static void sendMessageHandler(final String message, final Handler h){new Thread(new Runnable() {public void run() {// TODO Auto-generated method stubtry {byte[] data = new byte[128];Socket client = new Socket("192.168.1.42", 8989);OutputStream out = client.getOutputStream();out.write(message.getBytes());InputStream in = client.getInputStream();int len = in.read(data);String str = new String(data,0,len);Message msg = new Message();Bundle b = new Bundle();b.putString("msg", str); //可以放很多类型,string int 等msg.setData(b); //只能放Bundleh.sendMessage(msg); //只能放Message} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}).start();} }
师承上官可编程 —— 陈立臣
安卓APP——收到数据显示在APP上相关推荐
- APP软件上传安卓苹果应用商店上架APP应用市场
APP软件上传安卓苹果应用商店上架APP应用市场 现在很多的企业都开发了自己的企业APP平台,很多企业做完APP后不知道如何上传APP到应用商店供用户下载,教你如何上传APP应用商店,APP提交应用市 ...
- 【安卓开发】简单记账app功能实现开发-期末大作业个人总结
说在前面: 由于这一次的大作业涉及到的代码部分过于长,所以博客里不放相关代码: 工程&apk&记账app原型&素材资源链接:https://download.csdn.net/ ...
- android启动程序唤起其它app,安卓和rn唤起其他app应用
对于app来说,很多时候都需要在本app中唤起其他app应用,本文简单的列举了安卓和react-native对于唤起其他app的一些做法. 安卓 1)url scheme唤起 使用场景: h5页面跳转 ...
- java创建医生的对象_基于安卓Android的作物医生App设计开发(MySQL)(含录像)
基于安卓Android的作物医生App设计开发(MySQL)(含录像)(毕业论文14000字,PHP程序代码,MySQL数据库) 本系统使用软件工程方法进行一系列的分析.设计.实现与测试.使用面向对象 ...
- 苹果是c语言安卓是什么语言,主流app是用什么语言开发的苹果和安卓的主流开...
目前,如果个人想为手机开发app程序,他们必须首先掌握app程序开发语言.对大多数人来说,他们对app程序开发没有特殊的理解,甚至不知道开发app程序的编程语言是什么.因此,我们今天要向您解释的是当前 ...
- 基于安卓手机的辅助驾驶APP开发
目录结构: 1.项目介绍 2.网络设计 3.数据采集 4.APP开发 5.APP下载 6.效果展示 1.项目介绍: 该项目主要在于探索是否能在通用的安卓手机上实现一个辅助驾驶功 ...
- 努比亚z17s刷原生安卓_电脑运行手机APP,不会没关系,我推荐你使用显卡服务器运行安卓模拟器...
很多人都想用电脑端运行手机APP,但是又不知道怎么操作.纵横170yun小编推荐大家使用显卡服务器,在显卡服务器上运行安卓模拟器.让你轻轻松松在电脑端运行手机APP,甚至还可以多开噢 .如果你的电脑没 ...
- 安卓签名生成工具_ios app如何进行内测?ios app和安卓app的内测有何区别?
目前手机主流的操作系统分为Android和iOS两大阵营,分别是由谷歌和苹果进行开发维护.这两大平台的应用都相互独立,无论是运行机制还是底层原理,都不一样,所以即使是同一款App也是需要针对在两大平台 ...
- android 快传 源码_最新安卓仿茄子快传APP源码包括服务端源码Android开发快传类项目源码全套...
适使用范围: 安卓APP茄子快传源码 Android项目源码相似茄子快传的快传项目包括服务端 运行环境: Android app 源码详细: 本项目是一个基于安卓的相似茄子快传的项目源码,包括安卓 ...
最新文章
- wget抓取数据,需要用户登录验证
- i18n java_Java国际化(i18n) Locale类详细示例
- jmeter的xpath断言 [XPath Assertion]
- java 微信转账 ca_error_C#关于微信红包开发问题:CA证书出错,请登录微信支付商户平台下载证书...
- Android切换到主线程
- boost::type_erasure::binding相关的测试程序
- vue = 什么意思_记录使用@vue/cli搭建Vue3项目完整流程
- IntelliJ IDEA2017 激活方法 最新的
- ORM系列之Entity FrameWork详解
- 计算机技术基础 VB 答案,《计算机技术基础(VB)》武汉理工大学20春作业一
- C语言第12轮:指针
- C++ Iostreams 用法详解(二)标准输入输出
- js中采用词法作用域
- java中HashSet实现(转)
- 码农小汪-非常不安逸 怎么我写的注解没有自动给我生成时间呢!javadoc 配置起来非常的简单
- 笔记5:QQ群聊天机器人
- python opencv去图片水印(图片底色为白色)
- android 人脸 动画表情包,天呐 原来动画角色的面部表情是这样做出来的
- 如何在职场上获得良好的起点
- python chm模块_python3.7.0官方参考文档 最新api文档 chm