weex+android原生开发学习笔记(四)

2024-05-11 20:32

本文主要是介绍weex+android原生开发学习笔记(四),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

ting

 

1、input type动态设置不成功问题?

    解决参考1:http://www.mamicode.com/info-detail-2180938.html   依然不成功
    
    解决参考2:https://blog.csdn.net/qq_27731445/article/details/79501300  扩展android原生组件用weex引擎引入到weex库,给weex调用;考虑到还有ios端所以就先放弃这个功能
    
    input标签的type不支持动态修改,尝试:type也无法实现,在查看相关SDK源码发现也只是对type加注解,这方法只会在初始化时执行一次。 

    注: 最新版的weex sdk是支持的

2、android端manifest中对activity设置intent-filter的data属性和解释:
    我的整理:https://blog.csdn.net/u010326875/article/details/84869767
    
3、整理android端集成阿里云视频点播播放器

    记录整理:https://blog.csdn.net/u010326875/article/details/84941820
    
    有需要demo源码的私我(QQ:1105230742)

4、android端对module打包成jar报错:

    参考:https://blog.csdn.net/ymlvtimi/article/details/82251880

    * What went wrong:
    Could not resolve all files for configuration ':JdyVideo:lintClassPath'.
    > Could not download groovy-all.jar (org.codehaus.groovy:groovy-all:2.4.12)
    
    解决:1》、设置→ gradle(android)勾选(Enable embedded Maven repository)
    
          2》、第一不行的话,修改下面google
                google()替换成 maven { url ‘https://dl.google.com/dl/android/maven2/’ } 
    
    编译module成jar和arr的配置:
            https://blog.csdn.net/github_27263697/article/details/79868363
            
5、android端扩展组件给weex调用:

        参考:http://weex.apache.org/cn/guide/extend-android.html  有示例可参考
        
        扩展组件继承:WXComponent<T>
        扩展布局容器继承: WXVContainer<LinearLayout>
        
        注意一点:  这个在weex端不需要引入即可使用
        
        1》、android端创建扩展的组件:
            
                public class RichText extends WXComponent<TextView> {

                    public RichText(WXSDKInstance instance, WXDomObject dom, WXVContainer parent) {
                        super(instance, dom, parent);
                    }

                    @Override
                    protected TextView initComponentHostView(@NonNull Context context) {
                        TextView textView = new TextView(context);
                        textView.setTextSize(20);
                        textView.setTextColor(Color.BLACK);
                        return textView;
                    }

                    @WXComponentProp(name = "tel")
                    public void setTel(String telNumber) {
                        getHostView().setText("tel: " + telNumber);
                    }
                }
        2》、android端Application中注册组件:
        
            WXSDKEngine.registerComponent("richText", RichText.class);
            
        3》、weex端直接使用即可,不需要引入:
        
            <template>
              <div>
                <richText tel="12305" style="width:200;height:100">12305</richText>
              </div>
            </template>
        
6、    weex扩展阿里云视频组件,报错:

    错误:反射出错,找不到阿里云的so文件(aliffmpeg.so)
    
    解决:https://help.aliyun.com/document_detail/61908.html?spm=a2c4g.11186623.6.846.6a394658HtpOI8  
    
    1》、文档要求 :  播放器SDK支持Android4.0以上。手机芯片要求armv7或arm64架构。
        所以需要配置ndk支持 armv7或arm64架构
            ndk {
                // 根据需要选择添加对应cpu类型的.so库(还可以添加 'arm64-v8a', 'x86_64', 'mips', 'mips64')
                abiFilters 'armeabi-v7a', 'armeabi', 'x86'
            }
    2》、修改项目根目录下的 build.gradle
                repositories {
                    google()
                    jcenter()
                    maven { url "https://dl.bintray.com/alibabaweex/maven" }
                }
    3》、在依赖工程里build.gradle添加依赖:
    
            implementation 'com.aliyun.dpa:oss-android-sdk:2.7.3'
            
            //阿里云播放器
            api(name: 'AlivcPlayer-3.4.8', ext: 'aar')
            api(name: 'AlivcReporter-1.2', ext: 'aar')
        
    4》、扩展的组件错误解决(扩展布局容器):
    
        public class aliPlayer extends WXVContainer<LinearLayout> {

            WXSDKInstance instance;
            private LinearLayout hostView;
            private VideoViewLayout videoPlayer;

            public JdyVideoPlayer(WXSDKInstance instance, WXVContainer parent, BasicComponentData basicComponentData){
                super(instance,parent,basicComponentData);
                this.instance=instance;
            }

            @Override
            protected LinearLayout initComponentHostView(@NonNull Context context) {
                hostView = (LinearLayout)LayoutInflater.from(instance.getContext()).inflate(R.layout.ali_video_player,null);
                videoPlayer = hostView.findViewById(R.id.videoPlayer);
                return hostView;
            }
            
            //当然对应的也有生命周期方法
            @Override
            public void onActivityResume() {
                super.onActivityResume();
                if(videoPlayer!=null){
                    videoPlayer.onResume();
                }
            }

            @Override
            public void onActivityPause() {
                super.onActivityPause();
                if(videoPlayer!=null){
                    videoPlayer.onPause();
                }
            }

            /**
             * 开始播放视频
             * @param videoUrl String (支持点播Url和Mp4 Url)
             * @WXComponentProp  方法名 startPlay
             */
            @WXComponentProp(name = "startPlay")
            public void startPlay(final String videoUrl) {
                videoPlayer.startPlay(videoUrl);
            }

        }
        
7、    android端@Getter和@Setter解释:

    参考:https://www.jianshu.com/p/93353398e964
        
8、涉及到android端的几个工具:

    1》、Android-Debug-Database (参考:https://github.com/amitshekhariitbhu/Android-Debug-Database)
        https://blog.csdn.net/u012381726/article/details/60140939
        查看手机中的数据库文件,利用这个库,我们可以通过浏览器方便的查看的数据库啦,并且可以执行SQL语句
        
    2》、AndroidUtilCode (参考:https://github.com/Blankj/AndroidUtilCode)
            
        android端有人整理好的工具库
    
    3》、TinyDB  (参考:https://github.com/kcochibili/TinyDB--Android-Shared-Preferences-Turbo)
        sharedPreference存储的封装,方便存储直接存储对象等
        
9、weex实现时间轴组件:
    
    https://blog.csdn.net/u010326875/article/details/84976863
    
10、android端代码,着重字体颜色  , 全变成蓝色,改成android studio默认的着重颜色:

    电脑打开C盘,找到自己用户(C:\Users\baiyi),删除android和android studio包(.android、.AndroidStudio3.2),打开android studio然后选择custom手动配置sdk,初始化下载即可;然后自己配置android studio的字体大小

11、weex实现text组件内容单行展示:
    .textSingleLine{
        lines:1;
        white-space: nowrap; /*//文本强制不换行;*/
        text-overflow:ellipsis; /*//文本溢出显示省略号;*/
        overflow:hidden; /*//溢出的部分隐藏;*/
    }

12、weex中,text内容换行使用:

    错误写法:
        <text> 只能删除状态为“草稿”  \n 的领用记录!!! </text>
    
    正确写法:
        data中声明:errorPopWindowText:'只能删除状态为“草稿” \n 的领用记录!!!'
        <text> {{ errorPopWindowText }} </text>
        
13、自定义控件,不要再div标签里做计算,不然耗时出不来:


    错误写法:
        <template>
            <div class="addModifyDeleteContainer" :style="{width: (windowWidth+10)+'px',marginLeft:((750-windowWidth)/2)+'px',marginTop:windowMarginTop+'px'}">
                <slot name="content"></slot>
                <text v-if="isShowClose" class="closeButton" :style="{width:( windowWidth-10)+'px'}" @click="textClick"> 关闭 </text>
            </div>
        </template>
            
        这样写是不对的:    
        :style="{width: (windowWidth+10)+'px',marginLeft:((750-windowWidth)/2)+'px',marginTop:windowMarginTop+'px'}
        
    正确写法:
        在class里指定即可
        <div class="addModifyDeleteContainer">
                <slot name="content"></slot>
                <text v-if="isShowClose" class="closeButton" @click="textClick"> 关闭 </text>
        </div>
        
14、js判断对象object是字符串还是数字或其他类型

    let typeString = typeof objString;
    
    typeof的类型:string、number、boolean 等等
    
15、js验证密码,大小写字母数字特殊字符和位数:

             /**
             * 校验密码  密码最少为6位,包括至少一个大写字母,1个小写字母,1个数字,1个特殊字符!
             * let pattern = /^.*(?=.{6,})(?=.*\d{1,})(?=.*[A-Z]{1,})(?=.*[a-z]{1,})(?=.*[!@#$%^&*?\(\)]{1,}).*$/;
             * */
            checkPassword(password){
                if(password===''){
                    return false;
                }
                let upperChar =/^.*(?=.*[A-Z]{1,}).*$/;
                if(!upperChar.test(password)){
                    this.errorTips='没有包含大写字母';
                    return false;
                }
                var lowerChar =/^.*(?=.*[a-z]{1,}).*$/;
                if(!lowerChar.test(password)){
                    this.errorTips='没有包含小写字母';
                    return false;
                }
                var numberChar =/^.*(?=.*\d{1,}).*$/;
                if(!numberChar.test(password)){
                    this.errorTips='没有包含数字';
                    return false;
                }
                if(password.length<6){
                    this.errorTips='密码最少为6位';
                    return false;
                }

                //var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>《》/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]");
                var pattern =/^.*(?=.*[!@#$%^&*?\(\)]{1,}).*$/;
                if(!pattern.test(password)){
                    this.errorTips='没有包含特殊字符';
                    return false;
                }
                this.errorTips='';
                return true;
            },
        
16、weex js的es6合并数组:

        self.resultList=[...result.data.resultList,self.resultList];//ES6合并数组
        
17、weex屏幕的高度,使用weex-ui:

    Utils.env.getPageHeight()+90 ;导航栏高度90
    
18、js操作数组的方法:

    基础数组:https://blog.csdn.net/museions/article/details/78491040  介绍很详细,感谢
    

这篇关于weex+android原生开发学习笔记(四)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/980577

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo