-
asp.net中控制反转的理解(文字+代码)
2020-10-25 10:44:40控制反转,从字面意思来看, 就是控制权由被动变主动又变为被动,或被动变主动又变为被动。从这个角度来说,IOC就变得非常容易理解 -
android 文字反转_Android实现文字翻转动画的效果
2020-12-23 12:58:33本文实现了Android程序文字翻转动画的小程序,具体代码如下:先上效果图如下:要求:沿Y轴正方向看,数值减1时动画逆时针旋转,数值加1时动画顺时针旋转。实现动画的具体细节见"RotateAnimation.Java"。为方便查看...本文实现了Android程序文字翻转动画的小程序,具体代码如下:
先上效果图如下:
要求:
沿Y轴正方向看,数值减1时动画逆时针旋转,数值加1时动画顺时针旋转。
实现动画的具体细节见"RotateAnimation.Java"。为方便查看动画旋转方向,可以将RotateAnimation.DEBUG值设置为true即可。
RotateAnimation参考自APIDemos的Rotate3DAnimation
RotateAnimation的构造函数需有三个参数,分别说明动画组件的中心点位置及旋转方向。
RotateAnimation.initialize()将初始化动画组件及其父容器的宽高;通常亦可进行另外的初始化工作,本例中用于执行对camera进行实例化赋值。
RotateAnimation.applyTransformation()第一个参数为动画的进度时间值,取值范围为[0.0f,1.0f],第二个参数Transformation记录着动画某一帧中变形的原始数据。该方法在动画的每一帧显示过程中都会被调用。
在翻转过程中,为了避免在动画下半部分时图像为镜面效果影响数字的阅读,应将翻转角度做180度的减法。代码为
RotateAnimation.applyTransformation()中的:
if (overHalf) {
// 翻转过半的情况下,为保证数字仍为可读的文字而非镜面效果的文字,需翻转180度。
degree = degree - 180;
}
动画翻转到一半后,应更新数字内容。为了得知翻转进度,于RotateAnimation中设计一内部静态接口类"InterpolatedTimeListener",该接口只有一个方法"interpolatedTime(float interpolatedTime)"可以将动画进度传递给监听发起者。
Java代码如下,XML请根据效果图自行实现:
ActRotate.java
package lab.sodino.rotate;
import lab.sodino.rotate.RotateAnimation.InterpolatedTimeListener;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
/**
* @author Sodino E-mail:sodinoopen@hotmail.com
* @version Time:2012-6-27 上午07:32:00
*/
public class ActRotate extends Activity implements OnClickListener, InterpolatedTimeListener {
private Button btnIncrease, btnDecrease;
private TextView txtNumber;
private int number;
/** TextNumber是否允许显示最新的数字。 */
private boolean enableRefresh;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnIncrease = (Button) findViewById(R.id.btnIncrease);
btnDecrease = (Button) findViewById(R.id.btnDecrease);
txtNumber = (TextView) findViewById(R.id.txtNumber);
btnIncrease.setOnClickListener(this);
btnDecrease.setOnClickListener(this);
number = 3;
txtNumber = (TextView) findViewById(R.id.txtNumber);
txtNumber.setText(Integer.toString(number));
}
public void onClick(View v) {
enableRefresh = true;
RotateAnimation rotateAnim = null;
float cX = txtNumber.getWidth() / 2.0f;
float cY = txtNumber.getHeight() / 2.0f;
if (v == btnDecrease) {
number--;
rotateAnim = new RotateAnimation(cX, cY, RotateAnimation.ROTATE_DECREASE);
} else if (v == btnIncrease) {
number++;
rotateAnim = new RotateAnimation(cX, cY, RotateAnimation.ROTATE_INCREASE);
}
if (rotateAnim != null) {
rotateAnim.setInterpolatedTimeListener(this);
rotateAnim.setFillAfter(true);
txtNumber.startAnimation(rotateAnim);
}
}
@Override
public void interpolatedTime(float interpolatedTime) {
// 监听到翻转进度过半时,更新txtNumber显示内容。
if (enableRefresh && interpolatedTime > 0.5f) {
txtNumber.setText(Integer.toString(number));
Log.d("ANDROID_LAB", "setNumber:" + number);
enableRefresh = false;
}
}
}
RotateAnimation.java
import android.view.animation.Animation;
import android.view.animation.Transformation;
/**
* @author Sodino E-mail:sodinoopen@hotmail.com
* @version Time:2012-6-27 上午07:32:00
*/
public class RotateAnimation extends Animation {
/** 值为true时可明确查看动画的旋转方向。 */
public static final boolean DEBUG = false;
/** 沿Y轴正方向看,数值减1时动画逆时针旋转。 */
public static final boolean ROTATE_DECREASE = true;
/** 沿Y轴正方向看,数值减1时动画顺时针旋转。 */
public static final boolean ROTATE_INCREASE = false;
/** Z轴上最大深度。 */
public static final float DEPTH_Z = 310.0f;
/** 动画显示时长。 */
public static final long DURATION = 800l;
/** 图片翻转类型。 */
private final boolean type;
private final float centerX;
private final float centerY;
private Camera camera;
/** 用于监听动画进度。当值过半时需更新txtNumber的内容。 */
private InterpolatedTimeListener listener;
public RotateAnimation(float cX, float cY, boolean type) {
centerX = cX;
centerY = cY;
this.type = type;
setDuration(DURATION);
}
public void initialize(int width, int height, int parentWidth, int parentHeight) {
// 在构造函数之后、getTransformation()之前调用本方法。
super.initialize(width, height, parentWidth, parentHeight);
camera = new Camera();
}
public void setInterpolatedTimeListener(InterpolatedTimeListener listener) {
this.listener = listener;
}
protected void applyTransformation(float interpolatedTime, Transformation transformation) {
// interpolatedTime:动画进度值,范围为[0.0f,10.f]
if (listener != null) {
listener.interpolatedTime(interpolatedTime);
}
float from = 0.0f, to = 0.0f;
if (type == ROTATE_DECREASE) {
from = 0.0f;
to = 180.0f;
} else if (type == ROTATE_INCREASE) {
from = 360.0f;
to = 180.0f;
}
float degree = from + (to - from) * interpolatedTime;
boolean overHalf = (interpolatedTime > 0.5f);
if (overHalf) {
// 翻转过半的情况下,为保证数字仍为可读的文字而非镜面效果的文字,需翻转180度。
degree = degree - 180;
}
// float depth = 0.0f;
float depth = (0.5f - Math.abs(interpolatedTime - 0.5f)) * DEPTH_Z;
final Matrix matrix = transformation.getMatrix();
camera.save();
camera.translate(0.0f, 0.0f, depth);
camera.rotateY(degree);
camera.getMatrix(matrix);
camera.restore();
if (DEBUG) {
if (overHalf) {
matrix.preTranslate(-centerX * 2, -centerY);
matrix.postTranslate(centerX * 2, centerY);
}
} else {
//确保图片的翻转过程一直处于组件的中心点位置
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
}
}
/** 动画进度监听器。 */
public static interface InterpolatedTimeListener {
public void interpolatedTime(float interpolatedTime);
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
-
简述控制反转ioc_用文字描述spring的控制反转IOC是什么?
2021-01-12 10:58:36一、概述1.项目环境:jdk版本:jdk-10.0.1,IDE版本:Eclipse Java EE IDE for Web Developers (4.7.3a),服务器版本:tomcat9.0 字符集:UTF-8,...、项目描述用文字描述spring的控制反转IOC是什么?并使用代码实现...一、概述
1.项目环境:jdk版本:jdk-10.0.1,IDE版本:Eclipse Java EE IDE for Web Developers (4.7.3a),
服务器版本:tomcat9.0 字符集:UTF-8,操作系统版本:Windows7旗舰版
2.完成时间:2019.4.22
3.作者:任鑫
4.项目花费时间:30分钟
二.、项目描述
用文字描述spring的控制反转IOC是什么?并使用代码实现IOC的测试。
IOC,控制反转是一个思想。控制反转就是将对象的创建从java代码转移到外部容器中,比如spring中,把对象的创建,初始化,销毁交给容器去做,由容器区控制对象的生命周期。
DI,依赖注入是在程序运行中,如果需要调用其他对象,不需要在代码中创建,由外部容器创建后传递给程序。依赖注入是目前最好的解耦方式。
IOC是一种思想,DI是IOC实现的一种方式.
三、源代码
Star类
package com.bjsxt.pojo;
public class Star {
private String name;
private int age;
private Partner partner;
public Partner getPartner() {
return partner;
}
public void setPartner(Partner partner) {
this.partner = partner;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Star [name=" + name + ", age=" + age + ", partner=" + partner + "]";
}
}
Partner类
package com.bjsxt.pojo;
public class Partner {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Partner [name=" + name + "]";
}
}
applicationContext.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
SomeTest类
package com.bjsxt.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.bjsxt.pojo.Partner;
import com.bjsxt.pojo.Star;
public class SomeTest {
@Test
public void someTest01(){
//创建容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Star star = ac.getBean("star", Star.class);
Partner partner =ac.getBean("partner",Partner.class);
System.out.println(star);
System.out.println(partner);
}
}
-
WPF示例-2-静态文字反转
2009-10-03 14:54:00最终效果如下: 代码如下: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="文字反转" Height="300" Width="300">最终效果如下:
代码如下:
<Window x:Class="wpf_win_1.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="文字反转" Height="300" Width="300">
<Grid>
<TextBox Name="txtTest" Margin="50,53,49,0" Height="50" VerticalAlignment="Top" Width="180" FontSize="30"></TextBox>
<Rectangle Margin="50,109,0,102" Name="rectangle1" Stroke="Black" HorizontalAlignment="Left" StrokeThickness="0" Width="180" >
<Rectangle.Fill>
<VisualBrush Visual="{Binding ElementName=txtTest}"> <!--复制哪个部分-->
<VisualBrush.RelativeTransform> <!--相对反转-->
<TransformGroup>
<ScaleTransform ScaleX="1" ScaleY="-1"></ScaleTransform> <!--指定以哪个作标进行反转-->
<TranslateTransform Y="1"></TranslateTransform> <!--指定哪个轴进行反转-->
</TransformGroup>
</VisualBrush.RelativeTransform>
</VisualBrush>
</Rectangle.Fill>
</Rectangle>
</Grid>
</Window> -
WPF示例-3-动态文字反转
2009-10-03 15:01:00最终效果如下: Xaml代码如下: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="动态文反转" Height="300" Width="300">...最终效果如下:
Xaml代码如下:
<Window x:Class="wpf_win_1.Window3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="动态文反转" Height="300" Width="300">
<Grid x:Name="gd">
</Grid>
</Window>后台代码如下:
public Window3()
{
InitializeComponent();
Init();
}void Init()
{
TextBox txtBox = new TextBox()
{
Margin = new Thickness(50, 10, 49, 0),
Height = 50,
Width = 180,
FontSize = 30
};
ScaleTransform st = new ScaleTransform() { ScaleX = 1, ScaleY = -1 };
TranslateTransform tt = new TranslateTransform() { Y = 1 };
TransformGroup tg = new TransformGroup();
tg.Children.Add(st);
tg.Children.Add(tt);VisualBrush vb = new VisualBrush() { RelativeTransform = tg };
vb.Visual = txtBox;Rectangle rectangle = new Rectangle()
{
Margin = new Thickness(50, 110, 49, 0),
Height = 50,
Width = 180
};rectangle.Fill = vb;
this.gd.Children.Add(txtBox);
this.gd.Children.Add(rectangle);
} -
Mac 系统 + Chrome浏览器 网页前端出现中文文字反转或顺序错乱
2018-09-01 22:37:00问题背景 React开发的系统,收到一个BUG反馈,*“号个人统计”文字不正确,应为“个人号统计”*。 收到BUG后,打开浏览器查验是什么情况,难道犯了最基本的错误,Ctrl...3. 查看代码,确实是最普通的文字 ```<sp... -
反转单链表四种方法整理
2021-03-16 14:27:02迭代法的代码二、反转单链表之递归法1.递归法的文字描述2.递归法的图解3.递归法的代码三、反转链表之头插法1.头插法文字描述2.头插法图解3.头插法代码四、反转链表之就地反转法1.就地反转法文字描述2.就地反转法图解... -
句子反转
2016-09-24 22:35:36将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I” 所有单词之间用一个空格隔开,语句...C++代码#include #include #include using namespace std;int main() { string s; stack -
android 文字反转_Android 旋转字体 实现(应用角标,如:新,火等关键字)
2020-12-23 12:58:32在安卓应用中常见应用图标,或者gridview ,listview每个条目上有新,火,等45度旋转的字体,然后一个红色...代码如下:package com.edaixi.view;import android.content.Context;import android.graphics.Canvas;imp... -
C#开发tsc ttp-244pro打印机打印出文字怎么能反转(现在是倒的)
2019-03-20 11:00:52这里写自定 义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左... -
反转字符串
2018-01-20 15:03:26请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。 给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和... -
LeetCode 541 反转字符串II Java实现
2020-09-17 08:46:57LeetCode541 题目 给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字符少于 k 个,则将剩余字符全部反转。...代码 class Solution { p -
leetcode_541. 反转字符串 II
2021-03-23 14:37:34目录一、题目内容二、题解思路三、代码 一、题目内容 给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余... -
LeetCode|541.反转字符串II
2020-08-21 10:11:11LeetCode习题答案汇总 题目: 给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k ...代码: cla -
IOC(控制反转)和DI(依赖注入)
2019-03-05 22:18:47控制反转和依赖注入文字表述 ###1.什么是控制反转 在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring容器会控制程序之间的关系,而不是由调用者的程序代码直接控制。这样,控制... -
leetcode- 541 反转字符串 II -java版
2020-04-30 08:24:02文章目录题目代码 题目 给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则... -
【leetcode-python】541. 反转字符串 II
2020-07-27 08:54:00给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于...参考代码1: class Solution: def -
html 标签转译反转译
2018-01-21 16:21:00如果要在 html 标签内原样插入带 html 标签的文字,通常都会被自动解析掉..."这个代码的结果就是这样:如果不希望的话,就要把特殊字符转译,这里就是 </>,不过有另一种方法:document.getElementsByTagName... -
【字符串-简单】541. 反转字符串 II
2021-02-19 21:22:43【题目】 给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字符少于 k 个,则将剩余字符全部反转。...【代码】 【python】 class Solution: -
浅谈Spring框架中的IOC(控制反转)和DI(依赖注入)
2019-03-05 14:39:50控制反转和依赖注入文字表述 1.什么是控制反转 在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring容器会控制程序之间的关系,而不是由调用者的程序代码直接控制。这样,控制权由... -
LeetCode206 反转链表 递归法图示+逐行解题步骤剖析
2020-09-15 22:55:53刚刚开始刷LeetCode的小白,决定用博客记录自己的刷题经历,监督自己吃透每一道题,尽量用简单明了的文字表述清楚解题步骤。 LeetCode206 反转链表 反转链表有许多种方法,迭代,递归等方法都可以实现。 笔者做题... -
【LeetCode】第541题——反转字符串II(难度:简单)
2021-01-28 16:27:29【LeetCode】第541题——反转字符串II(难度:简单)题目描述解题思路代码详解注意点 题目描述 给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字符少于... -
算法修炼之路—【字符串】Leetcode 541 反转字符串II
2020-05-11 11:00:16文章目录题目描述思路分析解题代码复杂度分析Github源码 题目描述 给定一个字符和一个整数k,你需要对从字符开头算起的每个2k个字符的前k个字符反转。 如果剩余少于k个字符,则将剩余的所有全部反转;如果有小于2k但... -
html 标签过滤、转译、反转译
2018-04-04 09:27:001.如果要在 html 标签内原样插入带 html 标签的文字,通常都会被自动解析掉,比如: ...这个代码的结果就是这样: 2.如果不希望的话,就要把特殊字符转译,不过有另一种方法: document.getElementsByTa... -
小白学习[leetcode]之1190反转每对括号间的子串
2020-11-25 16:54:02题目的链接在这里:...请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。 注意,您的结果中 不应 包含任何括号。 一、示意图 二、解题思路 java实现(栈的知识) 代码如下: clas -
Savedev代码转换器「Savedev Code Converter」-crx插件
2021-03-09 21:34:43用于代码转换的实用程序 ... - 反转文字 - 文本到ASCII - ASCII到文本 - 颜色十六进制到RGB - 颜色RGB到十六进制 在线工具:https://sites.google.com/site/savedev/code-converter 支持语言:English -
《程序员面试金典》--判断反转字符串
2015-09-15 20:16:51请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成, 要求只能调用一次检查子串的函数。 给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和... -
最长回文字串
2021-03-12 12:35:44剑指offer-最长回文字串题目:想法:最终代码 题目: 想法: 一开始的想法是利用dp,先将str反转对比原串,发现有一个一直过不去,看了解析发现,dp会将1234ab4321返回4,实际希望是1。因为此时返回的是最大重复... -
C#图像处理(1):在图片上加文字和改变文字的方向
2014-08-18 15:04:00C#在图片上加文字,代码如下: 1 /// <summary> 2 /// 图片上方加文字,文字将会被180度反转 3 /// </summary> 4 /// <param name="Img">待处理图片</param> 5 /// <p...