Android最全React-Native-版高仿淘宝、京东商城首页、商品分类页面(1),Android如何构建简单的界面

结语

  • 现在随着短视频,抖音,快手的流行NDK模块开发也显得越发重要,需要这块人才的企业也越来越多,随之学习这块的人也变多了,音视频的开发,往往是比较难的,而这个比较难的技术就是NDK里面的技术。
  • 音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以AndroidNDK技术已经是我们必备技能了。
  • 要学习好NDK,其中的关于C/C++,jni,Linux基础都是需要学习的,除此之外,音视频的编解码技术,流媒体协议,ffmpeg这些都是音视频开发必备技能,而且
  • OpenCV/OpenGl/这些又是图像处理必备知识,下面这些我都是当年自己搜集的资料和做的一些图,因为当年我就感觉视频这块会是一个大的趋势。所以提前做了一些准备。现在拿出来分享给大家。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

inputRange: [0, 80], // 当滚动条滚动到0~80的位置时
outputRange: [0, 80], // 将右边距改为从0~80
extrapolate: ‘clamp’ // 滚动超出0~80的范围,不在更改边距
})
const marginTop = this.state.searchViewMargin.interpolate({
inputRange: [0, 160], // 当滚动条滚动到0~160的位置时
outputRange: [0, -36], // 将上边距改为从0~-36
extrapolate: ‘clamp’ // 滚动超出0~160的范围,不在更改边距
})

return (
<AnimatedTouchableOpacity
style={styles.top_search_container(marginRight, marginTop)}
activeOpacity={0.8}
onPress={this.gotoSearch}

{'新品'} ) }

GoodsCategory.js 解析

render() {
return (


// 一级分类列表,采用FlatList
<FlatList
ref={refs => this.flatList = refs}
keyExtractor={(item, index) => index.toString()}
data={this.state.firstCategoryData}
renderItem={this.renderFirstCategoryItem}
ItemSeparatorComponent={this.renderSeparatorLine}
/>


// 二级、三级分类列表,采用SectionList
<SectionList
ref={refs => this.sectionList = refs}
renderSectionHeader={this.renderSecondCategorySectionHeader}
renderItem={this.renderSecondCategoryItem}
sections={this.state.secondCategoryData}
ItemSeparatorComponent={null}
ListHeaderComponent={null}
ListFooterComponent={null}
keyExtractor={(item, index) => index + item}
/>


);
}

// 点击一级分类时,需要计算滚动条的位置
onClickFirstCategoryItem = (item, index) => {
this.setState({selectedFirstCategoryIndex: index});

// 计算当前 item 的高度
const indexHeight = firstCategoryItemHeight * index;

// 计算屏幕一半的高度
const halfHeight = (height - 65) / 2;

// 如果当前 item 的高度 大于 屏幕一半的高度,就让滚动条滚动 indexHeight - halfHeight 高度(类似京东商品分类效果)
if (indexHeight > halfHeight) {
this.flatList.scrollToOffset({
animated: true,
offset: indexHeight - halfHeight,
});
}

this.sectionList.scrollToLocation({
animated: true,
itemIndex: 0,
sectionIndex: 0,
});
};

TopTabView.js 解析

/**

  • 显示下拉菜单
  • @param index 当前选中时的 tab 下标
    */
    showDropdownMenu = (index) => {
    // measure方法测量"箭头图标"在页面中的位置、宽高
    this.arrowIcon.measure((x, y, width, height, pageX, pageY) => {
    const topOffset = pageY + height // 计算"下拉菜单"距离页面顶部的偏移量
    this.dropdownMenu.show(topOffset, index) // 显示"下拉菜单"
    })
    }

组件的 measure((x, y, width, height, pageX, pageY) => {}) 方法可以动态的获取组件在屏幕中的位置、宽高信息。measure 方法的参数 x,y 表示组件的相对位置,width,height 表示组件的宽度和高度,pageX,pageY 表示组件相对于屏幕的绝对位置。

TopDropdownMenu.js 解析

// 使用 Modal 来实现弹窗菜单,达到遮罩效果
render() {
const {isVisible, data, topOffset} = this.state;
return (
<Modal
animationType=“fade”
transparent={true}
onRequestClose={() => this.hide()}
visible={isVisible}

<TouchableOpacity
style={styles.container}
activeOpacity={1}
onPress={() => this.hide()}

<FlatList
style={[styles.content_container, {top: topOffset}]}
keyExtractor={(item, index) => index.toString()}
data={data}
renderItem={this.renderItem}
horizontal={false}
numColumns={2}
renderSeparator={null}
/>

最后

分享一份NDK基础开发资料

详解:Linux网络虚拟化技术

分享内容包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值