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

相关文章

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3