“https://images.unsplash.com/photo-1463453091185-61582044d556?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1050&q=80”,
“https://images.unsplash.com/photo-1545130368-4c55e2418062?ixlib=rb-1.2.1&auto=format&fit=crop&w=926&q=80”,
“https://images.unsplash.com/photo-1438761681033-6461ffad8d80?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1050&q=80”,
“https://images.unsplash.com/photo-1470441623172-c47235e287ee?ixlib=rb-1.2.1&auto=format&fit=crop&w=1052&q=80”,
“https://images.unsplash.com/photo-1458662236860-b721a6735660?ixlib=rb-1.2.1&auto=format&fit=crop&w=1050&q=80”,
“https://images.unsplash.com/photo-1530268729831-4b0b9e170218?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1050&q=80”,
“https://images.unsplash.com/photo-1534308143481-c55f00be8bd7?ixlib=rb-1.2.1&auto=format&fit=crop&w=1188&q=80”,
“https://images.unsplash.com/photo-1525879000488-bff3b1c387cf?ixlib=rb-1.2.1&auto=format&fit=crop&w=634&q=80”,
“https://images.unsplash.com/photo-1535201344891-231e85e83c8a?ixlib=rb-1.2.1&auto=format&fit=crop&w=1050&q=80”
];
//Avatar widget
Widget avatarWidget(String urlImg, double radius) {
return Container(
width: radius,
height: radius,
decoration: BoxDecoration(
shape: BoxShape.circle,
image: DecorationImage(
fit: BoxFit.cover,
alignment: Alignment.topCenter,
image: NetworkImage(urlImg),
)),
);
}
//StoryButton widget
Widget storyButton(String urlImg, double radius) {
return InkWell(
onTap: () {},
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: Container(
width: radius,
height: radius,
decoration: BoxDecoration(
shape: BoxShape.circle,
image: DecorationImage(
fit: BoxFit.cover,
alignment: Alignment.topCenter,
image: NetworkImage(urlImg),
)),
),
),
);
}
//List items widget
Widget listItem(
String urlImg, String userName, String, message, String hour) {
return InkWell(
onTap: () {},
child: Padding(
padding: EdgeInsets.symmetric(vertical: 8.0, horizontal: 4.0),
child: Container(
child: Row(
children: [
avatarWidget(urlImg, 60.0),
SizedBox(
width: 10.0,
),
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
userName,
style: TextStyle(
color: Colors.white,
fontSize: 20.0,
fontWeight: FontWeight.bold,
),
),
Text(
message,
style: TextStyle(
color: Colors.white,
fontSize: 16.0,
fontWeight: FontWeight.w300,
),
),
],
),
),
Text(
hour,
style: TextStyle(
color: Colors.grey[50],
),
)
],
),
),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
body: Container(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 15.0, vertical: 35.0),
child: Column(
children: [
//First let’s create our menu bar
Row(
children: [
// for the first par i’ll need to create a custom widget for my avatar button
avatarWidget(_avatarUrl[0], 50.0),
SizedBox(
width: 10.0,
),
Expanded(
child: Text(
“Messages”,
style: TextStyle(
color: Colors.white,
fontSize: 20.0,
fontWeight: FontWeight.w700,
),
),
),
MaterialButton(
onPressed: () {},
elevation: 0.0,
padding: EdgeInsets.all(8.0),
color: Colors.blue,
shape: CircleBorder(),
child: Icon(Icons.edit, color: Colors.white),
)
],
),
//Now let’s create the search bar
SizedBox(
height: 20.0,
),
TextField(
cursorColor: Colors.white,
style: TextStyle(color: Colors.white),
decoration: InputDecoration(
prefixIcon: Icon(Icons.search, color: Colors.white),
hintText: “Search”,
contentPadding: EdgeInsets.only(left: 34.0),
filled: true,
fillColor: Colors.grey[800],
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(50.0),
borderSide: BorderSide.none,
)),
),
SizedBox(
height: 20.0,
),
//Now it’s time to create our list view for storys
Container(
height: 60.0,
width: double.infinity,
child: ListView(
scrollDirection: Axis.horizontal,
children: [
//let’s now create our story widget, but before let’s add the add button
MaterialButton(
onPressed: () {},
elevation: 0.0,
padding: EdgeInsets.all(8.0),
color: Colors.grey[800],
shape: CircleBorder(),
child: Icon(Icons.add, color: Colors.grey[300]),
),
//Now let’s create our storybutton widget
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
外链图片转存中…(img-syW3jUkl-1715516612896)]
[外链图片转存中…(img-skkPVnTD-1715516612897)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!