Flutter第7天--字体图标+综合小案例+Android代码交互,app架构图

这篇具有很好参考价值的文章主要介绍了Flutter第7天--字体图标+综合小案例+Android代码交互,app架构图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

);

//中间的信息
var center4 = Row(
children: [
Expanded(child: pda(center_right, 5)),
Image.network( note.imgUrl,
width: 80, height: 80, fit: BoxFit.fitHeight )
],
);

var end4 = Row(
children: [
Icon( Icons.grade, color: Colors.green, size: 20, ),
Text( “1000W”, style: infoStyle,),
pd(Icon(Icons.tag_faces, color: Colors.lightBlueAccent, size: 20),
l: 15, r: 5),
Text(“2000W”, style: infoStyle),
],
);

var item4 = Column(
children: [line1_4, Expanded(child: center4), end4],
);

var aCard = Card(
child: Container( height: 160,color: Colors.white,
padding: EdgeInsets.all(10), child: item4));
return aCard;
}
}


现在万事俱备,东风也到了,num小小动一下:num=30

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

也许你感觉还未开始,但确实已经结束了…


6.底部导航栏的切换:(下面两个图一样的,为了撑场面…)

刚才是数据没有分类型,现在点击底部导航,按范围进行展示

get(style: "area/A", num: 30)//这样就是展示又有安卓类的文章

- -
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

android_stack.dart添加成员变量

这里我默认加载完,做分页的话,再添加个_count的成员变量就行了

String style = “area/A”;

//页面打开,默认加载安卓页
@override
void initState() {
super.initState();
get(style: style, num: 1000).then((beanLi) {
_notes = beanLi;
setState(() {});
});
}

//底部栏点击监听—动态改变范围
void _onTapBNB(int position) {
switch (position) {
case 0:
style = “area/A”;
break;
case 1:
style = “area/SB”;
break;
case 2:
style = “area/Re”;
break;
case 3:
style = “area/Note”;
break;
case 4:
style = “area/A”;
break;
}
_curIndex = position;
get(style: style, num: 1000).then((beanLi) {
_notes = beanLi;
setState(() {});
});
}


7.底部栏和搜索功能

底部栏用法详情在第四篇

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

底部栏:这里把事件写在里面了,你也可以抽成方法

或者有些控件太长,你也可以抽出来做变量

var searchSheet = BottomSheet(
onClosing: () {},
builder: (context) => (Card(
color: Color.fromARGB(255, 214, 242, 251),
child: Wrap(
children: [
Center(child: pdhv(TextField(
onChanged: (v) {style = “name/” + v;}), h: 60)),
Center(child: pdhv( GestureDetector(child:
Image.asset(“images/icon_90.png”,width: 50,height: 50 ),
onTap: () {
get(style: style, num: 1000).then((beanLi) {
_notes = beanLi;
setState(() {});
});
},
),
v: 10)),
],
))));

//点击按钮弹出:
var scContext; //先声明一下Scaffold的context
var scaffold = Scaffold(
appBar: AppBar(
title: Text(“张风捷特烈”),
),
body: Builder(builder: (context) {
scContext = context;
return HomeListPage(_notes);
}),
floatingActionButton: FloatingActionButton(
onPressed: () {
Scaffold.of(scContext).showBottomSheet(searchSheet.builder);
},
//下面不用修改,略…

Ok,小案例就这样


三、Android代码交互
1.最简单的无参无返回函数调用:两对应

不得不说:前六天不能弹吐司真是不好受,原生交互肯定先拿他开刀

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


1.1:Android代码

public class MainActivity extends FlutterActivity {
private static final String CHANNEL = “www.toly1994.com/test.名字随意起”;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);

new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
new MethodChannel.MethodCallHandler() {
@Override
public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {
if (methodCall.method.equals(“showToast”)) {
showToast(“Hello Flutter,I am in Android”);
} else {
result.notImplemented();
}
}
}
);
}
/**

  • 显示吐司
  • @param msg 信息
    */
    public void showToast(String msg) {
    Toast toast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
    toast.show();
    }
    }

import ‘package:flutter/material.dart’;
import ‘package:flutter/services.dart’;

const platform = const MethodChannel(“www.toly1994.com/test.名字随意起”);

var toastTest = Center(
child: RaisedButton(
onPressed: () {
platform.invokeMethod(“showToast”);
},
child: new Text(“点击弹吐司”),
),
);

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


2.Flutter中传参,调用Android含参方法:三对应

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


2.1:Android代码

public class MainActivity extends FlutterActivity {
private static final String CHANNEL = “www.toly1994.com/test.名字随意起”;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);

new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
new MethodChannel.MethodCallHandler() {
@Override
public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {
if (methodCall.method.equals(“showToast”)) {
//解析参数
String msg = methodCall.argument(“msg”);
showToast(msg);
} else {
result.notImplemented();
}
}
}
);
}

/**

  • 显示吐司
  • @param msg 信息
    */
    public void showToast(String msg) {
    Toast toast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
    toast.show();
    }
    }

2.2:Flutter代码:

import ‘package:flutter/material.dart’;
import ‘package:flutter/services.dart’;

const platform = const MethodChannel(“www.toly1994.com/test.名字随意起”);

var toastTest = Center(
child: RaisedButton(
onPressed: () {
platform.invokeMethod(“showToast”,{“msg”:“Flutter大爷我赏你一口吐司”});
},
child: new Text(“点击弹吐司”),
),
);

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


2.3:加返回值的方法调用:

举什么例子,我想了一会,就来个MD5码吧

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

//Activity添加判断分支
if (methodCall.method.equals(“getMD5”)) {
String arg = methodCall.argument(“arg”);
String md5 = getMD5(arg);
result.success(md5);
}

/**

  • 获取一个字符串的Md5值
  • @param content 内容
  • @return Md5值
    */
    public String getMD5(String content) {
    content = content + “芝麻开门”;
    try {
    MessageDigest digest = MessageDigest.getInstance(“MD5”);
    digest.update(content.getBytes());
    return getHashString(digest);
    } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
    }
    return null;
    }

private static String getHashString(MessageDigest digest) {
StringBuilder builder = new StringBuilder();
for (byte b : digest.digest()) {
builder.append(Integer.toHexString((b >> 4) & 0xf));
builder.append(Integer.toHexString(b & 0xf));
}
return builder.toString();
}

2.2:Flutter代码:

import ‘package:flutter/material.dart’;
import ‘package:flutter/services.dart’;

const platform = const MethodChannel(“www.toly1994.com/test.名字随意起”);

var toastTest = Center(
child: RaisedButton(
onPressed: () {

var result= platform.invokeMethod(“getMD5”,{“arg”:“https://www.jianshu.com/p/9bac0072d1a0”});
result.then((str){
platform.invokeMethod(“showToast”,{“msg”:str});
});

},
child: new Text(“点击弹吐司”),
),
);

基本上也就这三种情况


[彩蛋]–以前Mark的一个小点:Card的shape

有人说学习的时候一个问题会牵扯到很多其他的问题,问题一多就无从下手

我只说一个字:“栈”:来最后一波学习看源码的方法了,走起

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


1.shape是什么:形状

现在的问题栈

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可见默认圆角是4的RoundedRectangleBorder

---->[shape属性]----
/// The default shape is a [RoundedRectangleBorder] with a circular corner
/// radius of 4.0.
final ShapeBorder shape;

---->[RoundedRectangleBorder]----
const RoundedRectangleBorder({
this.side = BorderSide.none,
this.borderRadius = BorderRadius.zero,

//可见有两个属性:BorderSide和BorderRadius

---->[BorderSide]----
class BorderSide {
/// Creates the side of a border.
///
/// By default, the border is 1.0 logical pixels wide and solid black.
const BorderSide({
this.color = const Color(0xFF000000),
this.width = 1.0,
this.style = BorderStyle.solid,

---->[BorderRadius]----
class BorderRadius extends BorderRadiusGeometry {
/// Creates a border radius where all radii are [radius].
const BorderRadius.all(Radius radius) : this.only(
topLeft: radius,
topRight: radius,
bottomLeft: radius,
bottomRight: radius,
);

/// Creates a border radius where all radii are [Radius.circular(radius)].
BorderRadius.circular(double radius) : this.all(
Radius.circular(radius),
);

---->[Radius]------
class Radius {
/// Constructs a circular radius. [x] and [y] will have the same radius value.
const Radius.circular(double radius) : this.elliptical(radius, radius);

/// Constructs an elliptical radius with the given radii.
const Radius.elliptical(this.x, this.y);

/// The radius value on the horizontal axis.
final double x;

/// The radius value on the vertical axis.
final double y;

一个shape牵扯出这么多类,有人可能就栈溢出了,还是使用默认的吧,等一下,且听我分析
当Radius入问题栈之后,看一下也就是两个值,就出栈了,BorderRadius跟着也出栈了

BorderSide三个字段,看一下,出栈了,现在栈顶是RoundedRectangleBorder你还不会吗?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2. RoundedRectangleBorder改变圆角大小+边线

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

var card_shape = Card(
// shape: CircleBorder(side: BorderSide(width: 1)),
shape: RoundedRectangleBorder(
side:BorderSide(color: Color(0xffD516F5),width: 5) ,
borderRadius: BorderRadius.all(Radius.circular(20))),
clipBehavior: Clip.antiAlias,
child: Container(
width: 100,
height: 100,
color: Color(0xffCDECF6),
child: Center(child:Text(
“捷”,
style: TextStyle(color: Colors.black,fontSize: 40),
) ,),
));

那弹栈过后问题跑哪里?
我想应该是临时知识库吧,你解决的问题中获取的知识,经验会累积

可能长久不用知识库里的知识会漏掉,但印象有的,下一次再入栈,解决起来会更快
在的知识库里扎根的知识,那当你遇到时,就不是问题,直接弹栈,这样想学习是不是也挺好玩的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

大神级的Coder知识库丰富,问题都不是问题,也许偶尔入栈一两个,但栈很深(感觉挺浪费哈)

新手就是栈比较浅,问题多,所以容易StackOver,所以修炼你容忍问题的能力(栈深)很有必要
像我这样不深不浅的刚刚好,会碰到问题,也能一点点解决,一点一点踏上封神之路
但所有的大神也都是从新手这样过来的,解决问题的能力也不是与生俱来,祝你慢慢弹栈,收获多多。


3.接下来看ShapeBorder在栈顶,我们去瞅瞅

BorderSide现在已经化敌为友,CircleBorder岂不是秒出栈,并且俘获CircleBorder一枚

而且BorderSide强化+1,知识就是这样积累的,难道还有别的方法吗?除非记忆拷贝…

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

转一转当CD背景感觉挺不错

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

var card_shape = Card(
shape: CircleBorder(side: BorderSide(width: 15,color: Color(0xffF9DFA7))),
clipBehavior: Clip.antiAlias,
child: Container(
width: 100,
height: 100,
color: Color(0xffCDECF6),
child: Center(child:Text(
“捷”,
style: TextStyle(color: Colors.black,fontSize: 40),
) ,),
));


4.前方高能,非战斗人员带好零食

其实觉得shape好玩,是在粗略看源码时,看到了canvas,才mark的

自定义ShapeBorder走起:画具在手,天下我有

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

var card_shape = Card(
shape: StarBorder(),
// shape: CircleBorder(side: BorderSide(width: 15,color: Color(0xffF9DFA7))),
// shape: RoundedRectangleBorder(
// side:BorderSide(color: Color(0xffD516F5),width: 5) ,
// borderRadius: BorderRadius.all(Radius.circular(20))),
clipBehavior: Clip.hardEdge,
child: Container(
width: 100,
height: 100,
color: Color(0xffCDECF6),
child: Center(
child: Text(
“捷”,
style: TextStyle(color: Colors.black, fontSize: 40),
),
),
));

class StarBorder extends ShapeBorder {
@override
// TODO: implement dimensions
EdgeInsetsGeometry get dimensions => null;

@override
Path getInnerPath(Rect rect, {TextDirection textDirection}) {
// TODO: implement getInnerPath
return null;
}

@override
Path getOuterPath(Rect rect, {TextDirection textDirection}) {
print(rect.right);
return regularPolygonPath(10, 50,x: rect.height/2,y: rect.width/2);
}

@override
void paint(Canvas canvas, Rect rect, {TextDirection textDirection}) {
canvas.translate(50, 50);
// canvas.drawPath(nStarPath(5, 40, 20), new Paint());
}

@override
ShapeBorder scale(double t) {
// TODO: implement scale
return null;
}
}

路径封装(稍微优化了一下)

/**

  • n角星路径
  • @param num 几角星
  • @param R 外接圆半径
  • @param r 内接圆半径
  • @return n角星路径
    */
    Path nStarPath(int num, double R, double r, {x = 0, y = 0}) {
    Path path = new Path();
    double perDeg = 360 / num; //尖角的度数
    double degA = perDeg / 2 / 2;
    double degB = 360 / (num - 1) / 2 - degA / 2 + degA;

path.moveTo(cos(_rad(degA)) * R+x, (-sin(_rad(degA)) * R+y));
for (int i = 0; i < num; i++) {
path.lineTo(
cos(_rad(degA + perDeg * i)) * R+x, -sin(_rad(degA + perDeg * i)) * R+y);
path.lineTo(
cos(_rad(degB + perDeg * i)) * r+x, -sin(_rad(degB + perDeg * i)) * r+y);
}
path.close();
return path;
}

/**

  • 画正n角星的路径:
  • @param num 角数
  • @param R 外接圆半径
  • @return 画正n角星的路径
    */
    Path regularStarPath(int num, double R,{x = 0, y = 0}) {
    double degA, degB;
    if (num % 2 == 1) {
    //奇数和偶数角区别对待
    degA = 360 / num / 2 / 2;
    degB = 180 - degA - 360 / num / 2;
    } else {
    degA = 360 / num / 2;

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
Flutter第7天--字体图标+综合小案例+Android代码交互,app架构图,2024年程序员学习,flutter,android,交互
Flutter第7天--字体图标+综合小案例+Android代码交互,app架构图,2024年程序员学习,flutter,android,交互
Flutter第7天--字体图标+综合小案例+Android代码交互,app架构图,2024年程序员学习,flutter,android,交互
Flutter第7天--字体图标+综合小案例+Android代码交互,app架构图,2024年程序员学习,flutter,android,交互
Flutter第7天--字体图标+综合小案例+Android代码交互,app架构图,2024年程序员学习,flutter,android,交互
Flutter第7天--字体图标+综合小案例+Android代码交互,app架构图,2024年程序员学习,flutter,android,交互
Flutter第7天--字体图标+综合小案例+Android代码交互,app架构图,2024年程序员学习,flutter,android,交互

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
Flutter第7天--字体图标+综合小案例+Android代码交互,app架构图,2024年程序员学习,flutter,android,交互

如何做好面试突击,规划学习方向?

面试题集可以帮助你查漏补缺,有方向有针对性的学习,为之后进大厂做准备。但是如果你仅仅是看一遍,而不去学习和深究。那么这份面试题对你的帮助会很有限。最终还是要靠资深技术水平说话。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。

学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。

我们搜集整理过这几年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

Flutter第7天--字体图标+综合小案例+Android代码交互,app架构图,2024年程序员学习,flutter,android,交互

我们在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Flutter第7天--字体图标+综合小案例+Android代码交互,app架构图,2024年程序员学习,flutter,android,交互
J3PZq-1712720307464)]

如何做好面试突击,规划学习方向?

面试题集可以帮助你查漏补缺,有方向有针对性的学习,为之后进大厂做准备。但是如果你仅仅是看一遍,而不去学习和深究。那么这份面试题对你的帮助会很有限。最终还是要靠资深技术水平说话。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。

学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。

我们搜集整理过这几年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

[外链图片转存中…(img-TD5FlgDG-1712720307465)]

我们在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-2WpU79Ov-1712720307465)]文章来源地址https://www.toymoban.com/news/detail-855133.html

到了这里,关于Flutter第7天--字体图标+综合小案例+Android代码交互,app架构图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 分别使用Java和Kotlin给Textview设置第三方字体、APP全局字体、 Android X字体设置

    本文介绍Android实现全局设置自定义字体和局部设置自定义字体即单个TextView设置字体,同时也提供了一些优秀的三方字体框架,基本可以满足开发者对字体设置的全部要求。 使用自定义字体前后效果图 首先需要了解Android之assets 简而言之,你的图片、svg文件放在工程的res/d

    2024年02月07日
    浏览(49)
  • android studio修改app图标

    1.找到项目下的多个mipmap-目录(如下图),将要修改的图片在每个目录中都放入一份  2.再找到mipmap-anydpi-v26目录(如下图),修改目录中两个文件的内容,使其指向我们上一步放入的图片 1.找到image aeert点击进入 2.在页面中修改输入 name和layer name,修改path为图片路径,拖动滑

    2024年02月13日
    浏览(58)
  • Android之制作App的图标

    在过去,Android应用程序的图标都是应该放到相应的分辨率的mipmap目录下,不过从Android8.0开始,Google已经不再建议使用单一的一张图片来作为应用程序的图标,而是应该使用前景和背景分离的图标设计方式。具体来讲,应用程序的图标应该被分为两层:前景层和背景层。前景

    2024年02月10日
    浏览(95)
  • Flutter 与原生交互(Android,iOS)

    本质上 Flutter 和 原生通信是通过 Channel 来完成的:Flutter中消息的传递是完全异步的; 消息使用 Channel(平台通道) 在客户端(UI) 和主机(p平台) Flutter 与 native端交互三种方式 1.BasicMessageChannel (用于传递字符串和半结构化信息,持续通信使用,例如dart端将服务器的数据陆续传入到

    2024年02月17日
    浏览(51)
  • android studio自定义app图标

    1.右键app名称-New-ImageAsset 2. 选择Launcher Icons(Legency only) Name 图标名称这里不要更改 不更改才会替换掉原来的,改了名字调用的还是以前的图标 图表类型为图片图标 选择图片所在路径 next 3.选择分辨率-finish 4.图标自动存在mipmap文件夹下 以上,更改app图标成功

    2024年02月15日
    浏览(45)
  • DAY14_Filter&Listener&Ajax&Axios&Json&fastjson&综合案例-axios和html交互

    Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求 拦截 下来,从而实现一些特殊的功能。 如下图所示,浏览器可以访问服务器上的所有的资源(servlet、jsp、html等) 而在访问到这些资源之前可以使过滤器拦截来下,也就是说在访问

    2024年02月15日
    浏览(38)
  • flutter和android互相调用、android原生项目与flutter module之间的交互、如何在flutter module中使用原生的方法

    bridge.dart MainActivity.kt MainActivity中 Flutter中 android项目依赖flutter module的方式网上有很多,这里就不做讲解。主要说一下这种情况下android如何与flutter module之间进行方法的调用 踩坑:期初我是想让flutter module调用它内部中的.android文件夹下的原生代码。.android文件夹下有Flutter、

    2023年04月08日
    浏览(47)
  • 5.39 综合案例2.0 - STM32蓝牙遥控小车1(手机APP遥控)

    APP遥控) 点 击 跳 转 点击跳转HaaS506官方最新案例 用STM32单片机做了一辆蓝牙控制的麦轮小车,分享一下小车的原理和制作过程。 控制部分分为手机APP,语音模块控制,Haas506开发板三种。 本文介绍手机APP的控制的方法以及小车的制作。 器件说明 器件 数量 说明 STM32F103C8T6单片

    2024年02月09日
    浏览(58)
  • Android S从桌面点击图标启动APP流程 (六)

    系列文章 Android S从桌面点击图标启动APP流程 (一) Android S从桌面点击图标启动APP流程 (二) Android S从桌面点击图标启动APP流程 (三) Android S从桌面点击图标启动APP流程 (四) Android S从桌面点击图标启动APP流程 (五) Android 12的源码链接: android 12 aosp http://aospxref.com/android-12.0.0_r3/ 上文

    2024年02月06日
    浏览(47)
  • Android Studio开发入门教程:如何更改APP的图标?

    环境:Windows10、Android Studio版本如下图、雷电模拟器。 推荐图标库 默认APP图标 将新图标拉进src/main/res/mipmap-hdpi文件夹(一般app的icon图标是存放在mipmap打头的文件夹下的) 更改src/main/AndroidManifest.xml文件内容 引入我们刚刚导入的新图标 保存并运行,在雷电模拟器查看效果

    2024年02月03日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包