._detail.html 文件,webDetailView

在项目中经常会使用到WebView控件,当加载html页面时,会在/data/data/应用package目录下生成database与cache两个文件夹如下图如示:

0818b9ca8b590ca3270a3433284dd417.png

请求的url记录是保存在webviewCache.db,而url的内容是保存在webviewCache文件夹下.

为了便于理解,接下来模拟一个案例,定义一个html文件,在里面显示一张图片,用WebView加载出来,然后再试着从缓存里把这张图片读取出来并显示。

第一步:新建一个Android工程命名为WebViewCache.目录结构如下:

0818b9ca8b590ca3270a3433284dd417.png

第二步:在assets目录下新建一个html文件,命名为index.html

0818b9ca8b590ca3270a3433284dd417.png

WebViewCacheDemo

0818b9ca8b590ca3270a3433284dd417.png

第三步:修改main.xml布局文件,一个WebView控件一个Button(点击加载缓存图片用),代码如下:

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

第四步:修改主核心程序WebViewCacheDemo.java,这里我只加载了index.html文件,按钮事件暂时没写,代码如下:

0818b9ca8b590ca3270a3433284dd417.png

package com.ljq.activity;

import java.io.File;

import java.io.FileInputStream;

import android.app.Activity;

import android.app.Dialog;

import android.app.AlertDialog.Builder;

import android.content.DialogInterface;

import android.content.DialogInterface.OnClickListener;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Bundle;

import android.view.View;

import android.webkit.WebView;

import android.widget.Button;

import android.widget.ImageView;

public class WebViewActivity extends Activity {

private WebView webView;

private static final String url="file:///android_asset/index.html";

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

webView=(WebView)findViewById(R.id.webView);

webView.loadUrl(url);

}

}

0818b9ca8b590ca3270a3433284dd417.png

第五步:在AndroidMainifest.xml文件中加访问网络的权限:

运行效果如下:

0818b9ca8b590ca3270a3433284dd417.png

此时我们在WebViewCache.db里的cache.table里多了一条记录如下图所示:

0818b9ca8b590ca3270a3433284dd417.png

在cache/webviewCache/目录下多了一个10d8d5cd文件,刚好和cache.table里的filepath,我们可以断定这个文件就是我们从网上拽下来的图片:

0818b9ca8b590ca3270a3433284dd417.png

为了验证猜想,我给Button增加事件响应,就是弹出Dialog,里面加载缓存的图片,完整代码如下:

0818b9ca8b590ca3270a3433284dd417.png

package com.ljq.activity;

import java.io.File;

import java.io.FileInputStream;

import android.app.Activity;

import android.app.Dialog;

import android.app.AlertDialog.Builder;

import android.content.DialogInterface;

import android.content.DialogInterface.OnClickListener;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Bundle;

import android.view.View;

import android.webkit.WebView;

import android.widget.Button;

import android.widget.ImageView;

public class WebViewActivity extends Activity {

private WebView webView;

private static final String url="file:///android_asset/index.html";

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

webView=(WebView)findViewById(R.id.webView);

webView.loadUrl(url);

//点击按钮时弹出对话框 Button button=(Button)findViewById(R.id.button);

button.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

ImageView imageView=new ImageView(WebViewActivity.this);

imageView.setImageBitmap(getPictureFromCache());

Builder builder=new android.app.AlertDialog.Builder(WebViewActivity.this);

//设置对话框的图标 builder.setTitle("从缓存查看图片");

builder.setView(imageView);

//退出按钮 builder.setPositiveButton("退 出", new OnClickListener(){

public void onClick(DialogInterface dialog, int which) {

//关闭alert对话框架 dialog.cancel();

}

});

builder.create().show();

}

});

}

/*** 从缓存获取图片

*

*@return*/

private Bitmap getPictureFromCache(){

Bitmap bitmap=null;

try {

//这里写死,在实际开发项目中要灵活使用 File file=new File(getCacheDir()+"/webviewCache/10d8d5cd");

FileInputStream inStream=new FileInputStream(file);

bitmap=BitmapFactory.decodeStream(inStream);

} catch (Exception e) {

e.printStackTrace();

}

return bitmap;

}

}

0818b9ca8b590ca3270a3433284dd417.png

第六步:再次运行工程,点击button按钮,效果如下图所示:

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
select distinct a.EMPI_ID, a.PATIENT_NO, a.MR_NO, a.PAT_NAME, a.PAT_SEX, a.PAT_AGE, a.PAT_PHONE_NO, b.DIAG_RESULT, a.ADMIT_DATE, a.DISCHARGE_DEPT_NAME, a.ATTEND_DR from BASIC_INFORMATION a join PA_DIAG b on a.MZZY_SERIES_NO=b.MZZY_SERIES_NO join EXAM_DESC_RESULT_CODE c on a.MZZY_SERIES_NO=c.MZZY_SERIES_NO join DRUG_INFO d on a.MZZY_SERIES_NO=d.MZZY_SERIES_NO join EMR_CONTENT e on a.MZZY_SERIES_NO=e.MZZY_SERIES_NO JOIN TEST_INFO A17 ON a.MZZY_SERIES_NO = A17.MZZY_SERIES_NO where a.PAT_AGE>='18' and (to_char(a.ADMIT_DATE,'YYYY-MM-DD') >= '2021-01-01') AND (b.DIAG_RESULT LIKE '%鼻咽癌%' or b.DIAG_RESULT LIKE '%鼻咽恶性肿瘤%' or b.DIAG_CODE LIKE '%C11/900%') and d.DRUG_NAME not in (select DRUG_NAME FROM DRUG_INFO WHERE DRUG_NAME like '卡培他滨') and b.DIAG_RESULT NOT IN (SELECT DIAG_RESULT FROM PA_DIAG WHERE DIAG_RESULT LIKE '%HIV阳性%') and b.DIAG_RESULT NOT IN (SELECT DIAG_RESULT FROM PA_DIAG WHERE DIAG_RESULT LIKE '%充血性心力衰竭%') AND to_char(( A17.TEST_DETAIL_ITEM_NAME = '中性粒细胞' AND A17.TEST_RESULT >= 1.5 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '血小板' AND A17.TEST_RESULT >= 100 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '血红蛋白' AND A17.TEST_RESULT >= 9 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '丙氨酸氨基转移酶' AND A17.TEST_RESULT <= 2.5 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '天门冬氨酸氨基转移酶' AND A17.TEST_RESULT <= 2.5 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '肌酐清除率' AND A17.TEST_RESULT > 51 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '肌酐' AND A17.TEST_RESULT <=1.5 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '凝血酶原时间' AND A17.TEST_RESULT <= 1.5 ))语句哪里有问题
最新发布
06-07
这个 SQL 语句中有一个问题,就是在最后一个 AND 子句中的 to_char() 函数的参数不正确。to_char() 函数需要一个日期或数字类型的参数,但是这里传入的是一个逻辑类型的表达式。 如果你想要在 WHERE 子句中使用逻辑表达式,则可以使用 CASE WHEN 语句来实现。下面是修改后的 SQL 语句: ``` SELECT DISTINCT a.EMPI_ID, a.PATIENT_NO, a.MR_NO, a.PAT_NAME, a.PAT_SEX, a.PAT_AGE, a.PAT_PHONE_NO, b.DIAG_RESULT, a.ADMIT_DATE, a.DISCHARGE_DEPT_NAME, a.ATTEND_DR FROM BASIC_INFORMATION a JOIN PA_DIAG b ON a.MZZY_SERIES_NO = b.MZZY_SERIES_NO JOIN EXAM_DESC_RESULT_CODE c ON a.MZZY_SERIES_NO = c.MZZY_SERIES_NO JOIN DRUG_INFO d ON a.MZZY_SERIES_NO = d.MZZY_SERIES_NO JOIN EMR_CONTENT e ON a.MZZY_SERIES_NO = e.MZZY_SERIES_NO JOIN TEST_INFO A17 ON a.MZZY_SERIES_NO = A17.MZZY_SERIES_NO WHERE a.PAT_AGE >= '18' AND (TO_CHAR(a.ADMIT_DATE, 'YYYY-MM-DD') >= '2021-01-01') AND ( b.DIAG_RESULT LIKE '%鼻咽癌%' OR b.DIAG_RESULT LIKE '%鼻咽恶性肿瘤%' OR b.DIAG_CODE LIKE '%C11/900%' ) AND d.DRUG_NAME NOT IN ( SELECT DRUG_NAME FROM DRUG_INFO WHERE DRUG_NAME LIKE '卡培他滨' ) AND b.DIAG_RESULT NOT IN ( SELECT DIAG_RESULT FROM PA_DIAG WHERE DIAG_RESULT LIKE '%HIV阳性%' ) AND b.DIAG_RESULT NOT IN ( SELECT DIAG_RESULT FROM PA_DIAG WHERE DIAG_RESULT LIKE '%充血性心力衰竭%' ) AND ( CASE WHEN A17.TEST_DETAIL_ITEM_NAME = '中性粒细胞' AND A17.TEST_RESULT >= 1.5 THEN 'Y' WHEN A17.TEST_DETAIL_ITEM_NAME = '血小板' AND A17.TEST_RESULT >= 100 THEN 'Y' WHEN A17.TEST_DETAIL_ITEM_NAME = '血红蛋白' AND A17.TEST_RESULT >= 9 THEN 'Y' WHEN A17.TEST_DETAIL_ITEM_NAME = '丙氨酸氨基转移酶' AND A17.TEST_RESULT <= 2.5 THEN 'Y' WHEN A17.TEST_DETAIL_ITEM_NAME = '天门冬氨酸氨基转移酶' AND A17.TEST_RESULT <= 2.5 THEN 'Y' WHEN A17.TEST_DETAIL_ITEM_NAME = '肌酐清除率' AND A17.TEST_RESULT > 51 THEN 'Y' WHEN A17.TEST_DETAIL_ITEM_NAME = '肌酐' AND A17.TEST_RESULT <= 1.5 THEN 'Y' WHEN A17.TEST_DETAIL_ITEM_NAME = '凝血酶原时间' AND A17.TEST_RESULT <= 1.5 THEN 'Y' ELSE 'N' END) = 'Y'; ``` 在最后一个 AND 子句中,使用了 CASE WHEN 语句来判断测试结果是否符合条件。如果测试结果符合条件,则返回 Y,否则返回 N。然后再判断返回值是否等于 Y。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值