ARTS打卡第十四周(2021.4.11)

Algorithm

题目描述

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。

输入

"123.45e+6"

返回值

true

代码

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str string字符串 
     * @return bool布尔型
     */
    public boolean isNumeric (String str) {
        // write code here
        if(null == str || str.length() == 0){
            return false;
        }
        boolean hasE = false, hasPoint = false, optL = false, optR = false;
        int len = str.length();
        int ePos = len;
        int lOptPos = -1;
        for(int i = 0; i < str.length(); i++){
            char c = str.charAt(i);
            if(c == '.'){
                if(hasPoint || i >= ePos || i == len - 1){
                    return false;
                }
                hasPoint = true;
            }else if(c == 'e' || c == 'E'){
                if(hasE || i == 0 || i == len - 1 || i-1 == lOptPos){
                    return false;
                }
                ePos = i;
                hasE = true;
            }else if(c == '+' || c == '-'){
                if(i == len - 1){
                    return false;
                }
                if(i < ePos){
                    if(optL || i != 0){
                        return false;
                    }
                    lOptPos = i;
                    optL = true;
                }else{
                    if(optR || i - ePos != 1|| i == len - 1){
                        return false;
                    }
                    optR = true;
                }
            }else if(c >= '0' && c <= '9'){
                continue;
            }else{
                return false;
            }
        }
        return true;
    } 
}

Review

https://medium.com/androiddevelopers/android-nesting-intents-e472fafc1933

该文章介绍了为何不建议使用嵌套intent

假设有两个App A和B,若A App使用嵌套的intent通过B App调用startActivity,存在两个问题:

(1)若启动的Activity属于A App,那么必须将该Activity标记为exported才可通过B App启动,但如此一来其他App也可以启动这个Activity

(2)Client App可以借此启动B App的所有Activity,包括私有的、未设置exported的Activity等

因此官方建议,若使用跨应用的intent,可使用PendingIntent代替嵌套intent

Tips

1、弹出PopupWindow时背景变为半透明方案:

(1)获取窗体属性并设置透明度

注意:如果当前Activity的主题为透明,使用该方法设置时会一瞬间穿透显示到下方非透明主题的Activity,可能会影响用户体验。

(2)给需要弹出popupWindow的界面加上一层遮罩View

2、WebView与js交互,使用addJavascriptInterface方法进行对象映射,可以使web端调用客户端代码。

需注意接口需要使用@JavascriptInterface注解,并且接口名需与web端一致

3、使用RelativeLayout若需要使两个水平方向的按钮平分宽度,可以借助一个宽高都为0dp的View,将其设置为水平居中,两个按钮分别向其对齐,则可实现该效果

Share

http://www.xmltojava.com/

分享一个可以将xml布局转化为Java代码的网站,由于项目只支持用纯Java写界面,这个网站可以在一定程度提高开发效率,但是有部分属性无法转化为Java代码,需要自己额外处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值