配置文件 AndroidManifest.xml 如下

Version:1.0StartHTML:000000243

EndHTML:000019067

StartFragment:000007811

EndFragment:000018976

StartSelection:000007815

EndSelection:000018966

SourceURL:https://github.com/lqr41710085/App1/blob/master/app/src/main/AndroidManifest.xml

xmlns:dist="http://schemas.android.com/apk/distribution"

package="com.example.app1">

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:roundIcon="@mipmap/ic_launcher_round"

android:supportsRtl="true"

android:theme="@style/AppTheme">

android:name=".MainActivity"

android:label="@string/app_name"

android:theme="@style/AppTheme.NoActionBar">

连接网络:

publiccpublicclassMainActivityextendsAppCompatActivityimplementsRunnable{lassMainActivityextendsAppCompatActivityimplementsRunnable{

doubledol,eur,jap,hk;

TextViewedit,text;

privatestaticfinalStringTAG="MainActivity";

SharedPreferencessp;

SharedPreferences.Editoreditor;

Handlerhandler;

doubledol,eur,jap,hk;

TextViewedit,text;

privatestaticfinalStringTAG="MainActivity";

SharedPreferencessp;

SharedPreferences.Editoreditor;

Handlerhandler;

@Override

publicvoidrun() {//获取网络数据必须另建一个线程

Documentdoc=null;

Bundlebd=newBundle();

try{

Stringurl="https://www.usd-cny.com/bankofchina.htm";

doc=Jsoup.connect(url).get();

//Log.i(TAG,"hhhhhdoc:"+doc.title());

Elementstables=doc.getElementsByTag("table");

Elementtable=tables.first();

Elementstds=table.getElementsByTag("td");

Elementsps=doc.getElementsByTag("p");

Elementp=ps.get(0);

bd.putString("time",p.text());

//Log.i(TAG,"hhhh"+p.text());//获取时间装入bundle

for(inti=0;i

Elementtd1=tds.get(i);

Elementtd2=tds.get(i+5);

Stringname=td1.text();

Stringrate=td2.text();

if(name.equals("美元")||name.equals("日元")||name.equals("欧元")||name.equals("港币")){

floatv=100f/Float.parseFloat(rate);

bd.putFloat(name,v);

//Log.i(TAG,name+"hhhhh: "+v+"\n");

}

}

}catch(IOExceptione) {

e.printStackTrace();

}

Messagemsg=handler.obtainMessage(4);

msg.obj=bd;

handler.sendMessage(msg);

//Log.i(TAG,"hhhhsend");

}

privateStringinputStream2String(InputStreaminputStream)throwsIOException{

Stringstr="";

BufferedReaderreader=newBufferedReader(newInputStreamReader(inputStream,"gb2312"));

StringBuffersb=newStringBuffer();

while((str=reader.readLine())!=null){

Log.i(TAG,"in2str:"+str);

sb.append(str).append("\n");

}

returnsb.toString();

}

@Override

protectedvoidonCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Threadt=newThread(this);

t.start();

sp=this.getSharedPreferences("rate",MODE_PRIVATE);

handler=newHandler(){

publicvoidhandleMessage(Messagemsg){

if(msg.what==4){

Bundlebd2=(Bundle)msg.obj;

//判断时间是否与上次写入时间相同,不同则更新,相同则为同一天,不更新

Stringlasttime=sp.getString("time","0000-00-00");

Stringtime=bd2.get("time").toString().substring(12,22);

Log.i(TAG,lasttime+"hhhh"+time);

if(!time.equals(lasttime)){

editor=sp.edit();

editor.putFloat("dol",bd2.getFloat("美元"));

editor.putFloat("eur",bd2.getFloat("欧元"));

editor.putFloat("jap",bd2.getFloat("日元"));

editor.putFloat("hk",bd2.getFloat("港币"));

editor.putString("time",time);

editor.apply();

Log.i(TAG,"hhh已更新"+bd2.toString());

}

else

Log.i(TAG,"同一天,不更新hhhh");

}

super.handleMessage(msg);

}

};

dol=sp.getFloat("dol",0.0f);

eur=sp.getFloat("eur",0.0f);

jap=sp.getFloat("jap",0.0f);

hk=sp.getFloat("hk",0.0f);

/*dol=0.147;

eur=0.125;

jap=15.372;

hk=1.149;

*/

}

//在xml中btn绑定事件,四个按钮可以绑定一个事件,再依次判断

publicvoidbtn(Viewbtn){

edit=findViewById(R.id.editText);

text=findViewById(R.id.textView3);

if(edit.getText().toString().equals("")){

Toast.makeText(this,"pls enter a number",Toast.LENGTH_SHORT).show();

}

elseif(btn.getId()==R.id.button){

doublen=Double.parseDouble(edit.getText().toString());

n=n*dol;

Strings="after transform"+String.format("%.4f",n).toString()+"美元";

text.setText(s);

}

elseif(btn.getId()==R.id.button2){

doublen2=Double.parseDouble(edit.getText().toString());

n2=n2*eur;

Strings2="after transform"+String.format("%.2f",n2).toString()+"欧元";

text.setText(s2);

}

elseif(btn.getId()==R.id.button3){

doublen3=Double.parseDouble(edit.getText().toString());

n3=n3*jap;

Strings3="after transform"+String.format("%.2f",n3).toString()+"日元";

text.setText(s3);

}

elseif(btn.getId()==R.id.button4) {

doublen4=Double.parseDouble(edit.getText().toString());

n4=n4*hk;

Strings4="after transform"+String.format("%.2f",n4).toString()+"港币";

text.setText(s4);

}

}

publicvoidconfig(Viewv){

Intentin=newIntent(this,Main2Activity.class);

/*in.putExtra("dol",dol);

in.putExtra("eur",eur);

in.putExtra("jap",jap);

in.putExtra("hk",hk);

*/

//Log.i(TAG,"config: okhhh");

startActivityForResult(in,1);

}

@Override

protectedvoidonActivityResult(intrequestCode,intresultCode,@NullableIntentdata) {

if(requestCode==1&&resultCode==4){

/*Bundle bdl=data.getExtras();

dol=bdl.getDouble("dol",1.0f);

eur=bdl.getDouble("eur",1.0f);

jap=bdl.getDouble("jap",1.0f);

hk=bdl.getDouble("hk",1.0f);

*/

dol=sp.getFloat("dol",0.0f);

eur=sp.getFloat("eur",0.0f);

jap=sp.getFloat("jap",0.0f);

hk=sp.getFloat("hk",0.0f);

Log.i(TAG,"dol:"+dol);

super.onActivityResult(requestCode, resultCode, data);

}

}

@Override

publicbooleanonCreateOptionsMenu(Menumenu) {

//Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.menu_main, menu);

returntrue;

}

@Override

publicbooleanonOptionsItemSelected(MenuItemitem) {

//Handle action bar item clicks here. The action bar will

//automatically handle clicks on the Home/Up button, so long

//as you specify a parent activity in AndroidManifest.xml.

intid=item.getItemId();

//noinspection SimplifiableIfStatement

if(id==R.id.about) {

Toast.makeText(this,"i am about",Toast.LENGTH_SHORT).show();

}

if(id==R.id.settings) {

Toast.makeText(this,"i am settings",Toast.LENGTH_SHORT).show();

}

returntrue;

}

}

android计算汇率代码,android studio 开发实例 连接网络获取汇率相关推荐

  1. 【Android 逆向】代码调试器开发 ( 等待进程状态改变 | detach 脱离进程调试 PTRACE_DETACH | 调试中继续运行程序 PTRACE_CONT )

    文章目录 一.等待进程状态改变 二.detach 脱离进程调试 PTRACE_DETACH 三.调试中继续运行程序 PTRACE_CONT 一.等待进程状态改变 上一篇博客 [Android 逆向]代 ...

  2. SharePoint无代码工作流设计开发实例——交通费报销流程(一)

    开发环境: (1)SharePoint Designer 2010 (2)SharePoint Online(Office 365) 关于Office 365和SharePoint Online的相关 ...

  3. ESP32-网络开发实例-通过NTP获取 Epoch/Unix时间

    通过NTP获取 Epoch/Unix时间 NTP代表"网络时间协议",它是用于在计算机系统之间进行时钟同步的网络协议. 换句话说,它用于同步网络中的计算机时钟时间. 本文将介绍如何 ...

  4. STM32+esp8266,让你的STM32开发板连接网络-----esp8266

    分享一下,STM32开发板连接网络的第一种方法:连接esp8266. esp8266与STM32利用串口通信连接,esp8266连接网络,把收到的数据通过串口的方式传输给STM32,之后STM32接收 ...

  5. visual studio code无法连接网络,五种方法

    1:visual s studio code现在无法连接到扩展商店,请稍后再试 2:visual s studio code无法连接网络 解决方法一: 1:设置代理 代理1:自己的局域网代理ip,需要 ...

  6. android语音机器人代码,Android studio开发小型对话机器人app(实例代码)

    前言 偶然在网上看到一个免费机器人接口,所以生此想法,接口地址:http://api.qingyunke.com/,Android开发比爬虫要繁琐得多,所以本文我将细说接口的调用方法,读者可根据思路去 ...

  7. android增删功能代码,Android Studio开发实战 之 增删改查

    增删改查是一个应用最基础的操作,增删改查的流程走通了,下面的路程也就顺利多了.现在使用Android Studio开发一个简单的应用,该应用就实现了增删改查的操作,看似简单,到底简不简单呢,下面开始操 ...

  8. android 使用c 代码实现,JNI开发实现helloworld,调用自己的C代码实现(1)

    JNI开发,实现自己的C代码,helloworld 在这里实现一个简单的demo,完成加载自己的C代码 使用Android studio,一步一步教你实现在屏幕上显示出helloworld 如下图显示 ...

  9. android登录操作代码,Android Studio实现第三方QQ登录操作代码

    来看看效果图吧 实现QQ登录了, 新建一个项目工程 ,然后把我们刚才下载的SDK解压将jar文件夹中的jar包拷贝到我们的项目libs中 导入一个下面架包就可以 项目结构如下 打开我们的清单文件And ...

最新文章

  1. 怎么扫描_打印机上扫描仪怎么用 打印机上扫描仪使用及添加方法
  2. Android开发问题集锦
  3. 创建SSH keys
  4. 读PPPOE/PPPOA白皮书小结
  5. 关于matlab中pcolor显示图片时的shading设置问题
  6. ZooKeeper概述与原理
  7. QT最方便的LOG库使用Easylogging++,只需要一个头文件
  8. Vue $nextTick
  9. 一步一步学Remoting之二:激活模式
  10. 雪城大学信息安全讲义 二、Unix 安全概览
  11. 【jvm】jvm优化 jvm linux 大页
  12. java测试网址_支付宝:电脑网站沙箱测试(Java)
  13. 读谱对吉他手来说重要吗?试试它提升你的读谱效率
  14. C语言爱心代码,C语言爱心代码合集(附源码)
  15. 【雕爷学编程】Arduino动手做(100)---MAX30102手腕心率
  16. 关于JSON的常见问题以及首字母大写的JSON
  17. 咖啡每天最多能喝几杯
  18. The ETH-MAV Team in the MBZ International Robotics Challenge
  19. ID 发展新方向:OCR证件技术
  20. 基于微信JAVA后台校园小程序系统设计与实现 开题报告

热门文章

  1. 2022年,ICPC比赛、CCPC比赛、CCF-CSP考试、蓝桥杯比赛、天梯赛日程
  2. HDU2107 Founding of HDU【序列处理+最大值】
  3. UVA10450 POJ1953 World Cup Noise【斐波那契数列】
  4. CCF NOI1121 逆波兰表达式
  5. 学习之法 —— 如何阅读代码、如何编写代码
  6. TensorFlow 学习(六) —— TensorFlow 与 numpy 的交互
  7. sklearn 与 xgboost 的组合使用
  8. numpy 辨异(四)—— np.repeat 与 np.tile
  9. 数学归纳法的相关证明
  10. Linux 文件拓展名及文件解压方式