短视频系统源码,根据手指指令放大或缩小图片实现的相关代码
缩放功能
class ScaleAnimatedContent extends StatefulWidget {
final Widget child;
final bool show;
const ScaleAnimatedContent({Key key, this.child, this.show = false})
: super(key: key);
@override
ScaleAnimatedContentState createState() => ScaleAnimatedContentState();
}
class ScaleAnimatedContentState extends State<ScaleAnimatedContent>
with TickerProviderStateMixin {
AnimationController animationController;
Animation<double> animation;
@override
void initState() {
animationController = new AnimationController(
vsync: this,
duration: new Duration(milliseconds: 600),
);
// animationSlideUp = new Tween(begin: 0.0,end: 1.0).animate(animationController);
animation = Tween(begin: 0.0, end: 1.0).animate(animationController);
if (widget.show) {
animationController.forward();
}
super.initState();
}
@override
void didUpdateWidget(ScaleAnimatedContent oldWidget) {
if (widget != oldWidget) {
if (widget.show && !oldWidget.show) {
animationController.forward(from: 0.0);
} else if (!widget.show) {
animationController.reverse();
}
}
super.didUpdateWidget(oldWidget);
}
@override
Widget build(BuildContext context) {
return ScaleTransition(
scale: animation,
child: widget.child,
);
}
@override
void dispose() {
animationController.dispose();
super.dispose();
}
}
滑动效果
class SlideAnimatedContent extends StatefulWidget {
final Widget child;
final bool show;
const SlideAnimatedContent({Key key, this.child, this.show = false})
: super(key: key);
@override
SlideAnimatedContentState createState() => SlideAnimatedContentState();
}
class SlideAnimatedContentState extends State<SlideAnimatedContent>
with TickerProviderStateMixin {
AnimationController animationController;
Animation<Offset> animationSlideUp;
@override
void initState() {
animationController = new AnimationController(
vsync: this,
duration: new Duration(milliseconds: 600),
);
animationSlideUp = new Tween(
begin: Offset(0.0, 5.0),
end: Offset(0.0, 0.0),
).animate(CurvedAnimation(parent: animationController, curve: Curves.ease));
if (widget.show) {
animationController.forward();
}
super.initState();
}
@override
void didUpdateWidget(SlideAnimatedContent oldWidget) {
if (widget != oldWidget) {
if (widget.show && !oldWidget.show) {
animationController.forward(from: 0.0);
} else if (!widget.show) {
animationController.reverse();
}
}
super.didUpdateWidget(oldWidget);
}
@override
Widget build(BuildContext context) {
return SlideTransition(
position: animationSlideUp,
child: FadeTransition(
opacity: animationController,
child: widget.child,
),
);
}
@override
void dispose() {
animationController.dispose();
super.dispose();
}
}
以上就是 短视频系统源码,根据手指指令放大或缩小图片实现的相关代码,更多内容欢迎关注之后的文章