《Windows Azure Platform 系列文章目录》
熟悉Azure Virtual Network的读者都知道,如果我们设置了Azure Virtual Network (VNet)的IP Rang是xxx.xxx.0.0 - xxx.xxx.0.255
那第一个加入VNet的虚拟机Private IP为0.4(0.0到0.3的IP地址被系统占用),第二个加入VNet的虚拟机Private IP为0.5,以后加入VNet的虚拟机Private IP地址为在已创建的Azure Private IP上加1。
但是这样会产生2个问题:
1.不能手动设置Private IP地址,Private IP是系统自动生成的,无法预先设置。
2.无法修改Private IP地址。在系统自动分配Private IP之后,想手动修改Private IP也是不可能的。
3.无法固定Private IP地址。在某些情况下,Azure管理人员关闭了VM,造成VM的状态为Stop(Deallocate)的情况下,再次启动Azure VM会造成Private IP改变。
最新的PowerShell (版本号: PowerShell cmdlets for Windows Azure Version 0.7.3)命令增加了新的PowerShell命令,允许用户设置Azure VM Private IP。这4个命令是:
- Get-AzureStaticVNetIP
- Set-AzureStaticVNetIP
- Remove-AzureStaticVNetIP
- Test-AzureStaticVNetIP
接下来,笔者会详细介绍以上的PowerShell命令。
在开始演示之前,请按照[New Portal]Windows Azure Virtual Machine (16) 使用Azure PowerShell创建Azure Virtual Machine中的内容,通过PowerShell将本地证书上传至Azure云端。
在上一章内容中,笔者已经创建Azure Virtual Network:MyVNet。同时创建了2台Azure VM,分别为:
IP | 说明 |
192.168.0.0-192.168.0.3 | Azure Virtual Network 保留 |
192.168.0.4 | AD Server |
192.168.0.5 | Web Server 001 |
在这里,笔者将介绍如何创建第2台Web服务器,即Web Server 002进行负载均衡,并且观察Web Server 002的Private IP设置。
1.确认某个Private IP是否可用
我们要用到的命令是Test-AzureStaticVNetIP:
比如我要查询MyVNet这个虚拟网络中,Private IP为192.168.0.4是否可用,PowerShell命令为:
执行结果为:
可以看到IsAvailable值为False(因为192.168.0.4已经被AD Server占用了)。
然后Azure会在AvailableAddresses中,提供其他可用的IP地址,比如192.168.0.6,192.168.0.7等等
2.创建新的虚拟机,同时设置Private IP
我们用到的命令是Set-AzureStaticVNetIP
来创建个更加复杂的Azure Virtual Machine
首先我们指定默认的存储,在Powershell输入以下命令:
按照以下规格创建虚拟机:
- DNS Name为LeiWeb (需要负载均衡)
- 显示名称为LeiWeb002
- VM Size为Basic_A1 (1Core/1.75GB)
- VM Image为Windows Server 2012 DataCenter 201403.01-en.us
- Windows用户名为leizhang,密码为Pass@word1
- storage account为leivms
- 地缘组为EastAsiaGroup
- 虚拟网络为 MyVNet,子网为Subnet-1
然后我们输入以下命令:
$vm | Add-AzureProvisioningConfig ` -Windows ` -AdminUsername 'leizhang' ` -Password 'Pass@word1'
$vm | Set-AzureSubnet -SubnetNames 'Subnet-1' | Set-AzureStaticVNetIP -IPAddress 192.168.0.7
$vm | New-AzureVM -ServiceName 'LeiWeb' -VNetName 'MyVNet'
执行结果,如下图:
我们也可以在Management Portal上查看到Azure正在开始创建LeiWeb002这台虚拟机,截图下图:
执行完毕后,我们可以查看到虚拟机LeiWeb002的Private IP设置为 192.168.0.7。如下图:
另外告诉各位读者一个特大喜讯:如果你在VNet中的Virtual Machine已经通过Set-AzureStaticVNetIP命令,设置了Private IP。
即使你的VM关机后状态变成Stop_Deallocate,重新开机后这台VM的Private IP还是不会改变的。 O YEAH!!!
3.修改Private IP
这里用到的命令为Set-AzureStaticVNetIP
之前笔者创建的LeiWeb002的Private IP为192.168.0.7,如果需要重新设置怎么办?
LeiWeb002这台虚拟机的信息如下:
- DNS: LeiWeb.cloudapp.net
- Virtual Machine: LeiWeb002
- 设置新的Private IP : 192.168.0.6
然后执行以下PowerShell命令:
执行结果截图如下:
我们可以通过Management Portal查看LeiWeb002这台虚拟机的Private IP已经被修改为192.168.0.6
本文链接:Windows Azure Virtual Network (5) 设置Azure Virtual Machine固定Private IP,转载请注明。
实现类似Android风云直播手机端注册登录页,当手势向下滑动的时候,关闭页面的效果。
使用GestureDetector来实现这个效果,当手势在屏幕上面滑动的时候 ,会掉用onFling方法,所以,在这个方法里面做判断和操作即可。
好了 ,作为一个老程序员了,原理就不讲了,直接上代码,相信你会看懂的,有问题,直接留言或者联系我,我会第一时间回复的。
效果如下:
1.在onCreate方法里面重写 GestureDetector的方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_login);
mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// if (Math.abs(e1.getRawX() - e2.getRawX()) > 250) {
// // System.out.println("水平方向移动距离过大");
// return true;
// }
if (Math.abs(velocityY) < 100) {
// System.out.println("手指移动的太慢了");
return true;
}
// 手势向下 down
if ((e2.getRawY() - e1.getRawY()) > 200) {
finish();//在此处控制关闭
return true;
}
// 手势向上 up
if ((e1.getRawY() - e2.getRawY()) > 200) {
return true;
}
return super.onFling(e1, e2, velocityX, velocityY);
}
});
}
2.同样,如果你想要控制左滑和右滑,直接使用getRawX()方法即可,可以尝试。
3.动画效果实现,重写上抽和下拉的动画效果,可以使用Android自带的一个方法,在finish()方法之前进行调用:
overridePendingTransition(R.anim.slide_up_in, R.anim.slide_up_out);
R.anim.slide_up_out
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="200"
android:fromYDelta="0%"
android:interpolator="@android:anim/accelerate_interpolator"
android:toYDelta="100%" />
</set>
<translate
android:duration="300"
android:fromYDelta="-100%"
android:interpolator="@android:anim/accelerate_interpolator"
android:toYDelta="0%" />
</set>
快去试试吧!
本文链接:android使用GestureDetector实现手势下滑关闭页面的效果。,转载请注明。
没有评论:
发表评论