1、px :是屏幕的像素点
2、dp :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1pxdip 。
3、转换方式如下
public class DensityUtil { 。
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素) 。
*/
public static int dip2px(Context context, float dpValue) { 。
final float scale = context.getResources().getDisplayMetrics().density; 。
return (int) (dpValue * scale + 0.5f); 。
}
/**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp 。
*/
public static int px2dip(Context context, float pxValue) { 。
final float scale = context.getResources().getDisplayMetrics().density; 。
return (int) (pxValue / scale + 0.5f); 。
}
PHP 用户定义函数
除了内建的 PHP 函数,我们可以创建我们自己的函数。
函数是可以在程序中重复使用的语句块。
页面加载时函数不会立即执行。
函数只有在被调用时才会执行。
在 PHP 创建用户定义函数
用户定义的函数声明以关单 "function" 开头:
语法
function functionName() {。
被执行的代码;
注释:函数名能够以字母或下划线开头(而非数字)。
注释:函数名对大小写不敏感。
提示:函数名应该能够反映函数所执行的任务。
在下面的例子中,我们创建名为 "writeMsg()" 的函数。打开的花括号({)指示函数代码的开始,而关闭的花括号(})指示函数的结束。此函数输出 "Hello world!"。如需调用该函数,只要使用函数名即可:
<?php
function writeMsg() {。
echo "Hello world!";。
writeMsg(); // 调用函数。
?>
PHP 函数参数
可以通过参数向函数传递信息。参数类似变量。
参数被定义在函数名之后,括号内部。您可以添加任意多参数,只要用逗号隔开即可。
下面的例子中的函数有一个参数($fname)。当调用 familyName() 函数时,我们同时要传递一个名字(例如 Bill),这样会输出不同的名字,但是姓氏相同:
<?php
function familyName($fname) {。
echo "$fname Zhang.<br>";。
familyName("Li");。
familyName("Hong");。
familyName("Tao");。
familyName("Xiao Mei");。
familyName("Jian");。
?>
下面的例子中的函数有两个参数($fname 和 $year):
<?php
function familyName($fname,$year) {。
echo "$fname Zhang. Born in $year <br>";。
familyName("Li","1975");。
familyName("Hong","1978");。
familyName("Tao","1983");。
?>
PHP 默认参数值
下面的例子展示了如何使用默认参数。如果我们调用没有参数的 setHeight() 函数,它的参数会取默认值:
<?php
function setHeight($minheight=50) {。
echo "The height is : $minheight <br>";。
setHeight(350);。
setHeight(); // 将使用默认值 50。
setHeight(135);。
setHeight(80);
?>
PHP 函数 - 返回值
如需使函数返回值,请使用 return 语句:
<?php
function sum($x,$y) {。
$z=$x+$y;
return $z;
echo "5 + 10 = " . sum(5,10) . "<br>";。
echo "7 + 13 = " . sum(7,13) . "<br>";。
echo "2 + 4 = " . sum(2,4);。
?>
<!doctype html>。
<html>
<head>
<meta charset="UTF-8">。
<meta name="Generator" content="EditPlus®">。
<meta name="Author" content="">。
<meta name="Keywords" content="">。
<meta name="Description" content="">。
<script src="http://www.nbajk.com//template/PC1/js/jquery.js" type="text/javascript"></script>。
<title>Document</title>。
</head>
<body>
<div>
<div>
<div style="height:100px;background-color:yellow">菜单栏</div>。
<divstyle="height:300px;background-color:red">内容</div>。
<button onclick=setheight();>设置</button>。
</div>
</div>
<script>
function setheight(){ //命名改变高度的方法。
$(document).ready(function(){ //判断页面是否加载完毕。
var neirong=$(".col-sm-8").height(); //获取内容的高度。
//var caidanlan=$(".col-sm-4").height(); 获取导航栏的高度。
$(".col-sm-4").height(neirong*0.2); //设置导航栏的高度为内容栏的20%;
});
</script>。
</body>
</html>
为了说明,我们先用第一种方法来看一个例子,第二种办法在另外一个原则中说明。我们就看那个著名的长方形和正方形的例子。对于长方形的类,如果它的长宽相等,那么它就是一个正方形,因此,长方形类的对象中有一些正方形的对象。对于一个正方形的类,它的方法有个setSide和getSide,它不是长方形的子类,和长方形也不会符合LSP。
eg:
长方形类:
public class Rectangle{。
...
setWidth(int width){。
this.width=width;。
setHeight(int height){。
this.height=height。
正方形类:
public class Square{。
...
setWidth(int width){。
this.width=width;。
this. height=width;。
setHeight(int height){。
this.setWidth(height);。
例子中改变边长的函数:
public void resize(Rectangle r){。
while(r.getHeight()<=r.getWidth){。
r.setHeight(r.getWidth+1);。
那么,如果让正方形当做是长方形的子类,会出现什么情况呢?我们让正方形从长方形继承,然后在它的内部设置width等于height,这样,只要width或者height被赋值,那么width和height会被同时赋值,这样就保证了正方形类中,width和height总是相等的.现在我们假设有个客户类,其中有个方法,规则是这样的,测试传入的长方形的宽度是否大于高度,如果满足就停止下来,否则就增加宽度的值。现在我们来看,如果传入的是基类长方形,这个运行的很好。根据LSP,我们把基类替换成它的子类,结果应该也是一样的,但是因为正方形类的width和height会同时赋值,条件总是满足,这个方法没有结束的时候,也就是说,替换成子类后,程序的行为发生了变化,它不满足LSP。
那么我们用第一种方案进行重构,我们构造一个抽象的四边形类,把长方形和正方形共同的行为放到这个四边形类里面,让长方形和正方形都是它的子类,问题就OK了。对于长方形和正方形,取width和height是它们共同的行为,但是给width和height赋值,两者行为不同,因此,这个抽象的四边形的类只有取值方法,没有赋值方法。上面的例子中那个方法只会适用于不同的子类,LSP也就不会被破坏。
你输入的内容 本身就是有个高度的,设置100有用那是因为 100要大于内容本身的高度。