nativeObj
nativeObj管理系统原生对象。
对象:
- AnimationOptions: 原生动画参数
- AnimationViewStyles: 原生动画窗口样式
- Bitmap: 原生图片对象
- BitmapSaveOptions: JSON对象,保存图片的参数
- ImageSlider: 原生图片轮播控件对象
- ImageSliderStyles: 图片轮播控件样式
- ImageSliderImageStyles: 图片轮播控件中图片项配置参数
- Rect: 区域信息对象
- RectStyles: 绘制区域样式对象
- RichTextStyles: 富文本样式
- Position: 区域信息对象
- TextStyles: 绘制文本样式对象
- View: 原生控件对象
- ViewAnimationOptions: View控件动画参数
- ViewDrawTagStyles: View控件绘制元素参数
- ViewEvents: View控件事件
- ViewStatusbarStyles: JSON对象,View控件的系统状态栏区域样式
- ViewStyles: View控件样式
回调方法:
- BitmapSaveSuccessCallback: 图片保存操作成功回调接口
- TouchEventCallback: 触屏事件的回调函数
- NativeObjSuccessCallback: 操作成功回调函数接口
- NativeObjErrorCallback: 操作错误回调函数接口
模块:
5+功能模块(permissions)
{
// ...
"permissions":{
// ...
"NativeObj": {
"description": "原生对象"
}
}
}
AnimationOptions
原生动画参数
interface AnimationOptions {
attribute String type;
attribute Number duration;
}
说明:
指定动画的类型、持续时间等信息。
属性:
- type: (String
类型
)动画类型
可取值: "pop-in" - 从右侧平移入栈动画效果(副窗口从右侧向左平移滑出显示,主窗口从当前屏幕区域向左侧平移滑出被遮盖),如果仅传入一个View控件对象则自动降级为slide-in-right动画; "pop-out" - 从右侧平移出栈动画效果(副窗口从当前屏幕区域向右侧平移出可视区域,主窗口从左侧向右平移滑出显示),如果仅出入一个View控件对象则自动降级为slide-out-right动画; "slide-in-right" - 从右侧横向滑动效果(主窗口从当前屏幕右侧外向内横向滑动显示); "slide-out-right - 横向向右侧滑出屏幕动画(主窗口从屏幕中横向向右侧滑动到屏幕外)。
- duration: (Number
类型
)动画持续时间
单位为毫秒,默认值为200ms。
示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var bitmap1=null,bitmap2=null;
// H5 plus事件处理
function plusReady(){
bitmap1 = new plus.nativeObj.Bitmap('bmp1');
bitmap1.load('bmp1.png',function(){
console.log('bmp1.png load success!');
},function(e){
console.log('bmp1.png load failed! '+JSON.stringify(e));
});
bitmap2 = new plus.nativeObj.Bitmap('bmp2');
bitmap2.load('bmp2.png',function(){
console.log('bmp2.png load success!');
},function(e){
console.log('bmp2.png load failed! '+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 原生动画
function nativeAnimation(){
// 开始动画
var options = {type:'pop-out',duration:1000};
plus.nativeObj.View.startAnimation(options,{bitmap:bitmap1},{bitmap:bitmap2},function(){
console.log('plus.nativeObj.View.startAnimation动画结束');
// 关闭原生动画
plus.nativeObj.View.clearAnimation();
});
}
</script>
</head>
<body>
<button onclick="nativeAnimation()">原生窗口动画</button><br/>
</body>
</html>
AnimationViewStyles
原生动画窗口样式
interface AnimationViewStyles {
attribute Bitmap bitmap;
attribute String text;
}
说明:
指定动画窗口的样式,如背景图片,绘制的文字等。
属性:
- bitmap: (Bitmap
类型
)动画窗口上绘制的背景图片
图片可以通过Webview对象的draw方法截图,也可以通过Bitmap的API从本地文件中加载。
- text: (String
类型
)动画窗口上绘制的文本内容
- textStyles: (TextStyles
类型
)动画窗口上绘制的文本样式
- textRect: (Rect
类型
)动画窗口上绘制的文本区域
默认值为{top:'0px',left:'0px',width:'100%',height:'44px'}。
示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var bitmap1=null,bitmap2=null;
// H5 plus事件处理
function plusReady(){
bitmap1 = new plus.nativeObj.Bitmap('bmp1');
bitmap1.load('bmp1.png',function(){
console.log('bmp1.png load success!');
},function(e){
console.log('bmp1.png load failed! '+JSON.stringify(e));
});
bitmap2 = new plus.nativeObj.Bitmap('bmp2');
bitmap2.load('bmp2.png',function(){
console.log('bmp2.png load success!');
},function(e){
console.log('bmp2.png load failed! '+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 原生动画
function nativeAnimation(){
// 开始动画
var view = {bitmap:bitmap1,text:'主窗口',textStyles:{size:'28px',color:'#FF0000'},textRect:{top:'0px',left:'0px',width:'100%',height:'100px'}};
var other = {bitmap:bitmap1,text:'副窗口',textStyles:{size:'22px',color:'#00FF00'},textRect:{top:'0px',left:'0px',width:'100%',height:'44px'}};
plus.nativeObj.View.startAnimation( {type:'pop-in'},view,other,function(){
console.log('plus.nativeObj.View.startAnimation动画结束');
// 关闭原生动画
plus.nativeObj.View.clearAnimation();
});
}
</script>
</head>
<body>
<button onclick="nativeAnimation()">原生窗口动画</button><br/>
</body>
</html>
Bitmap
原生图片对象
interface Bitmap {
readonly attribute String id;
static function Array[Bitmap] getItems();
static function Bitmap getBitmapById( id );
function void clear();
function void load( path, successCallback, errorCallback );
function void loadBase64Data( data, successCallback, errorCallback );
function void save( path, options, successCallback, errorCallback );
function String toBase64Data();
}
说明:
原生图片对象会占用较大的内存资源,在使用时需谨慎管理,当图片不再使用时应该及时调用clear方法进行销毁。
构造:
- Bitmap(id, path): 创建Bitmap对象
属性:
- id: Bitmap对象的标识
方法:
- getItems: 静态方法,获取所有Bitmap图片对象
- getBitmapById: 静态方法,获取指定标识的Bitmap图片对象
- clear: 销毁Bitmap图片
- load: 加载Bitmap图片
- loadBase64Data: 加载Base64编码格式图片到Bitmap对象
- recycle: 回收Bitmap图片内存
- save: 保存图片
- toBase64Data: 获取图片的Base64编码数据
Bitmap(id, path)
创建Bitmap对象
var bitmap = new plus.nativeObj.Bitmap(id, path);
说明:
创建后为空Bitmap对象,需要调用Webview对象的draw方法更新,或者调用load/loadBase64Data方法加载图片。
参数:
- id:
(
String
)
可选 Bitmap图片对象的id
给图片对象指定id后,可以通过plus.nativeObj.Bitmap.getBitmapById()获取。 如果不设置id则创建匿名图片对象,仅可通过plus.nativeObj.Bitmap.getItems()获取。 可创建多个相同id的图片,此时plus.nativeObj.Bitmap.getBitmapById()获取第一个创建的id图片对象。 - path:
(
String
)
可选 Bitmap对象自动加载图片的地址
当图片对象未加载到内存或内存被回收(调用recycle方法),此时使用图片对象时自动加载图片的地址。 适用于低内存环境下使用,仅在图片实际使用时才自动加载到内存中,使用后调用recycle方法回收释放内存。 注意:调用load/save方法会更新此地址。
返回值:
Bitmap : Bitmap图片对象示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var wc=null,bitmap=null;
// H5 plus事件处理
function plusReady(){
wc = plus.webview.currentWebview();
bitmap = new plus.nativeObj.Bitmap("test");
// 将webview内容绘制到Bitmap对象中
wc.draw(bitmap,function(){
console.log('绘制图片成功');
},function(e){
console.log('绘制图片失败:'+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
</script>
</head>
<body>
创建Bitmap对象<br/>
</body>
</html>
id
Bitmap对象的标识
说明:
String 类型 只读属性
在创建Bitmap对象时设置,如果没有设置标识,此属性值为null。
示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
var bitmap = new plus.nativeObj.Bitmap("test");
// ...
console.log( bitmap.id ); // 输出"test"
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
</script>
</head>
<body>
Bitmap对象的标识<br/>
</body>
</html>
getItems
静态方法,获取所有Bitmap图片对象
Array[Bitmap] plus.nativeObj.Bitmap.getItems();
说明:
获取应用运行期创建的所有Bitmap图片对象,包含所有空Bitmap对象,不包含已经销毁的Bitmap对象。返回的Bitmap对象在数组中按创建的属性排列,及数组中第一个是最先创建的Bitmap对象。
参数:
无
返回值:
Array[ Bitmap ] : 应用中创建的所有Bitmap图片对象数组。示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
// 获取所有Bitmap对象
var bitmaps=plus.nativeObj.Bitmap.getItems();
for(var i=0;i<bitmaps.length;i++){
console.log("Bitmap"+i+": "+bitmaps[i].id);
}
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
</script>
</head>
<body>
获取所有Bitmap图片对象<br/>
</body>
</html>
getBitmapById
静态方法,获取指定标识的Bitmap图片对象
Bitmap plus.nativeObj.Bitmap.getBitmapById( id );
说明:
在应用中已创建的图片对象中查找指定标识的Bitmap对象并返回。 若存在多个相同标识的Bitmap图片,则返回第一个创建的Bitmap图片。
参数:
- id:
(
String
)
必选 要查找的Bitmap图片标识
返回值:
Bitmap : Bitmap图片对象,若没有查找到指定标识的图片对象则返回null。示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
wc = plus.webview.currentWebview();
bitmap = new plus.nativeObj.Bitmap("test");
// 将webview内容绘制到Bitmap对象中
wc.draw(bitmap,function(){
console.log('绘制图片成功');
},function(e){
console.log('绘制图片失败:'+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 查找Bitmap对象
function findBitmap(){
var bitmap = plus.nativeObj.Bitmap.getBitmapById("test");
if(bitmap){
console.log("Success: "+bitmap.id);
}else{
console.log("Can't find bitmap");
}
}
</script>
</head>
<body>
获取指定标识的Bitmap图片对象<br/>
<button onclick="findBitmap()">Find</button>
</body>
</html>
clear
销毁Bitmap图片
void bitmap.clear();
说明:
释放Bitmap图片占用的内存资源,销毁后图片对象将不可使用,其id属性值为undefined,调用其所有方法操作都会失败。
参数:
无
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var wc=null,bitmap=null;
// H5 plus事件处理
function plusReady(){
wc = plus.webview.currentWebview();
bitmap = new plus.nativeObj.Bitmap("test");
// 将webview内容绘制到Bitmap对象中
wc.draw(bitmap,function(){
console.log('绘制图片成功');
},function(e){
console.log('绘制图片失败:'+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 销毁Bitmap图片
function clearBitmap(){
bitmap.clear();
}
</script>
</head>
<body>
销毁Bitmap图片<br/>
<button onclick="clearBitmap()">Clear</button>
</body>
</html>
load
加载Bitmap图片
void bitmap.load( path, successCallback, errorCallback );
说明:
从指定的路径(仅支持本地文件系统)中加载图片,此操作将覆盖之前的图片内容, 如果加载图片失败则保留之前的图片内容。
参数:
- path:
(
String
)
必选 要加载的图片路径
支持以下图片路径: 相对路径 - 相对于当前页面的host位置,如"a.jpg",注意当前页面为网络地址则不支持; 绝对路径 - 系统绝对路径,如Android平台"/sdcard/logo.png",此类路径通常通过其它5+ API获取的; 扩展相对路径URL(RelativeURL) - 以"_"开头的相对路径,如"_www/a.jpg"; 本地路径URL - 以“file://”开头,后面跟随系统绝对路径。 - successCallback:
(
NativeObjSuccessCallback
)
必选 加载图片操作成功回调
加载图片操作成功时调用。 - errorCallback:
(
NativeObjErrorCallback
)
必选 加载图片操作失败回调
加载图片操作失败时调用,并返回失败信息。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
var bitmap = new plus.nativeObj.Bitmap("test");
// 从本地加载Bitmap图片
bitmap.load('icon.png',function(){
console.log('加载图片成功');
},function(e){
console.log('加载图片失败:'+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
</script>
</head>
<body>
加载Bitmap图片<br/>
</body>
</html>
loadBase64Data
加载Base64编码格式图片到Bitmap对象
void bitmap.loadBase64Data( data, successCallback, errorCallback );
说明:
从Base64编码格式图片数据中加载图片,此操作将覆盖之前的图片内容, 如果加载图片失败则保留之前的图片内容。
参数:
- data:
(
String
)
必选 要加载图片的Base64编码格式数据
如果数据格式不正确或者不是有效的图片数据则返回失败。 - successCallback:
(
NativeObjSuccessCallback
)
必选 加载图片操作成功回调
加载图片操作成功时调用。 - errorCallback:
(
NativeObjErrorCallback
)
必选 加载图片操作失败回调
加载图片操作失败时调用,并返回失败信息。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var bitmap=null;
// H5 plus事件处理
function plusReady(){
bitmap = new plus.nativeObj.Bitmap("test");
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
</script>
</head>
<body>
加载Base64编码格式图片到Bitmap对象<br/>
<button onclick="loadDataImage()">LoadBase64Data</button><br/>
<canvas id="cimg"></canvas><br/>
</body>
<script type="text/javascript">
// 获取图片的base64格式数据
var data = null;
var img = new Image();
img.onload = function(){
var cx = cimg.getContext('2d');
cimg.width = img.width;
cimg.height = img.height;
cx.drawImage( img, 0, 0 );
data = cimg.toDataURL();
}
img.src = 'logo.png';
// 加载Base64编码格式图片到Bitmap对象
function loadDataImage(){
bitmap.loadBase64Data( data, function(){
console.log("加载Base64图片数据成功");
}, function(){
console.log('加载Base64图片数据失败:'+JSON.stringify(e));
} );
}
</script>
</html>
recycle
回收Bitmap图片内存
void bitmap.recycle();
说明:
释放Bitmap图片占用的内存资源,但不销毁图片对象,依然可以继续使用图片对象。 当图片对象再次被使用时会自动从设置的路径(构造函数或load/save方法设置)加载到内存中。
参数:
无
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var wc=null,bitmap=null;
// H5 plus事件处理
function plusReady(){
wc = plus.webview.currentWebview();
bitmap = new plus.nativeObj.Bitmap("test","_www/bimap/capture.png");
// 将webview内容绘制到Bitmap对象中
wc.draw(bitmap,function(){
console.log('绘制图片成功');
bitmap.save("_www/bimap/capture.png");
},function(e){
console.log('绘制图片失败:'+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 回收Bitmap图片
function recycleBitmap(){
bitmap.recycle();
}
</script>
</head>
<body>
销毁Bitmap图片<br/>
<button onclick="clearBitmap()">Recycle</button>
</body>
</html>
save
保存图片
void bitmap.save( path, options, successCallback, errorCallback );
说明:
将图片保存到指定的路径(仅支持本地文件系统),如果图片为空或者指定的路径文件已经存在则返回失败。
参数:
- path:
(
String
)
必选 要保存的图片路径
支持以下图片路径: 绝对路径 - 系统绝对路径,如Android平台"/storage/sdcard0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/doc/a.jpg",iOS平台"/var/mobile/Containers/Data/Application/757966CF-345C-4348-B07F-EEF83CF9A369/Library/Pandora/apps/HBuilder/doc/a.png"; 相对路径URL(RelativeURL) - 以"_"开头的相对路径,如"_doc/b.jpg"、"_documents/c.jpg"、"_downloads/d.jpg"; 本地路径URL - 以“file://”开头,后面跟随系统绝对路径。 如果指定的路径无效,或者不可访问则返回失败。 - options:
(
BitmapSaveOptions
)
必选 保存图片的属性
可设置保存图片的格式,压缩质量等参数。 - successCallback:
(
BitmapSaveSuccessCallback
)
必选 保存图片操作成功回调
加载图片操作成功时调用。 - errorCallback:
(
NativeObjErrorCallback
)
必选 保存图片操作失败回调
加载图片操作失败时调用,并返回失败信息。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var wc=null,bitmap=null;
// H5 plus事件处理
function plusReady(){
wc = plus.webview.currentWebview();
bitmap = new plus.nativeObj.Bitmap("test");
// 将webview内容绘制到Bitmap对象中
wc.draw(bitmap,function(){
console.log('绘制图片成功');
},function(e){
console.log('绘制图片失败:'+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 保存图片
function saveBitmap(){
bitmap.save( "_doc/a.jpg"
,{}
,function(i){
console.log('保存图片成功:'+JSON.stringify(i));
}
,function(e){
console.log('保存图片失败:'+JSON.stringify(e));
});
}
</script>
</head>
<body>
保存图片<br/>
<button onclick="saveBitmap()">Save</button>
</body>
</html>
toBase64Data
获取图片的Base64编码数据
String bitmap.toBase64Data();
说明:
读取图片的数据内容,并转换为Base64编码格式字符串。
参数:
无
返回值:
String : 图片的Base64编码数据,如果图片为空则返回null。示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var bitmap = null,wi=null;
// H5 plus事件处理
function plusReady(){
// 获取首页Webview窗口
wi = plus.webview.getLaunchWebview();
// 创建Bitmap对象
bitmap = new plus.nativeObj.Bitmap("test");
// 将首页Webview窗口截图保存到Bitmap中
wi.draw( bitmap, function(){
console.log("截图成功");
}, function(e){
console.log("截图失败:"+JSON.stringify(e));
} );
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 获取图片的Base64编码数据
function base64Image(){
var img=document.getElementById("img");
img.src = bitmap.toBase64Data();
}
</script>
</head>
<body>
获取图片的Base64编码数据<br/>
<button onclick="base64Image()">Base64Data</button><br/>
<img id="img"></img>
</body>
</html>
BitmapSaveOptions
JSON对象,保存图片的参数
interface BitmapSaveOptions {
attribute Boolean overwrite;
attribute String format;
attribute Number quality;
attribute Rect clip;
}
属性:
- overwrite: (Boolean
类型
)覆盖保存图片文件
仅在保存的图片路径文件存在时有效: true表示覆盖存在的文件; false表示不覆盖,如果文件存在,则返回失败。 默认值为false。
- format: (String
类型
)保存图片的格式
支持"jpg"、"png",如果未指定则默认使用指定的保存路径后缀对应的文件格式,如果后缀文件格式无效则使用jpg格式。
- quality: (Number
类型
)保存图片的质量
取值范围为1-100,1表示使用最低的图片质量(保存后的图片文件最小)、100表示使用最高的图片质量(保存后的图片文件最大); 默认值为50。
- clip: (Rect
类型
)指定裁剪区域保存图片
相对于图片的区域信息,默认值为{top:'0px',left:'0px',width:'100%',height:'100%'}。
ImageSlider
原生图片轮播控件对象
interface ImageSlider extends View {
function void addImages(images);
function Number currentImageIndex();
function void setImages(images);
}
说明:
原生图片轮播控件对象从原生View控件(plus.nativeObj.View)继承而来,用于绘制图片轮播内容。
构造:
- ImageSlider(id, styles, tags): 创建图片轮播控件对象
方法:
- addImages: 添加图片轮播控件的图片
- currentImageIndex(): 获取当前图片轮播控件显示的图片索引值
- setImages: 设置图片轮播控件的图片
ImageSlider(id, styles, tags)
创建图片轮播控件对象
var view = new plus.nativeObj.ImageSlider(id, styles, tags);
说明:
与原生View控件一样,创建后需要调用show方法显示,或者添加到Webview中显示。
参数:
- id:
(
String
)
必选 图片轮播控件对象的id
与原生View控件的id作用一样。 - styles:
(
ImageSliderStyles
)
可选 图片轮播控件的样式
设置控件的位置、大小及显示的图片等信息。 - tags:
(
Array[
ViewDrawTagStyles
]
)
可选 图片轮播控件上需要额外绘制的内容
与原生View控件一样,额外绘制自定义内容。
返回值:
ImageSlider : 原生图片轮播控件示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var view=null;
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready', plusReady, false);
}
// 创建原生View控件
function createView(){
view = new plus.nativeObj.ImageSlider('test',
{top:'100px',left:'0px',height:'200px',width:'100%',position:'absolute',images:[{src:'1.png'},{src:'2.png'},{src:'3.png'}]});
plus.webview.currentWebview().append(view);
}
</script>
</head>
<body>
创建图片轮播控件,添加到Webview窗口显示<br/>
<button onclick="createView()">创建图片轮播控件</button><br/>
</body>
</html>
addImages
添加图片轮播控件的图片
void slider.addImages(images);
说明:
动态添加图片轮播控件显示的图片。
参数:
- images:
(
Array[
ImageSliderImageStyles
]
)
必选 添加的轮播图片数组
至少必须添加一张图片的地址信息,否则无法添加。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生图片轮播控件
var view=null;
function createView(){
view = new plus.nativeObj.ImageSliderView('test',{top:'200px',left:'0px',height:'50%',width:'100%',images:[{src:'1.png'},{src:'2.png'},{src:'3.png'}]});
// 直接显示
view.show();
}
// 添加原生图片轮播控件上显示的图片
function updateView(){
view.addImages([{src:'4.png'},{src:'5.png'}]);
}
</script>
</head>
<body>
<button onclick="createView()">创建图片轮播对象</button><br/>
<button onclick="updateView()">添加图片</button>
</body>
</html>
currentImageIndex()
获取当前图片轮播控件显示的图片索引值
Number slider.currentImageIndexs();
说明:
索引值从0开始,即0表示图片轮播控件当前显示第一张图片。
参数:
无
返回值:
Number : 当前图片轮播控件显示的图片索引值示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生图片轮播控件
var view=null;
var images=[{src:'1.png'},{src:'2.png'},{src:'3.png'}];
function createView(){
view = new plus.nativeObj.ImageSliderView('test',{top:'200px',left:'0px',height:'50%',width:'100%',images:images});
// 直接显示
view.show();
}
// 获取当前显示的图片
function currentImage(){
var index = view.currentImageIndex();
var currentImage = images[index];
console.log('Current image: '+currentImage.src);
}
</script>
</head>
<body>
<button onclick="createView()">创建图片轮播对象</button><br/>
<button onclick="currentImage()">获取当前显示的图片</button>
</body>
</html>
setImages
设置图片轮播控件的图片
void slider.setImages(images);
说明:
动态更新图片轮播控件显示的图片。
参数:
- images:
(
Array[
ImageSliderImageStyles
]
)
必选 更新后的轮播图片数组
至少必须设置一张图片的地址信息,否则可能导致图片轮播控件显示不正常。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生图片轮播控件
var view=null;
function createView(){
view = new plus.nativeObj.ImageSliderView('test',{top:'200px',left:'0px',height:'50%',width:'100%',images:[{src:'1.png'},{src:'2.png'},{src:'3.png'}]});
// 直接显示
view.show();
}
// 更新原生图片轮播控件
function updateView(){
view.setImages([{src:'4.png'},{src:'5.png'}]);
}
</script>
</head>
<body>
<button onclick="createView()">创建图片轮播对象</button><br/>
<button onclick="updateView()">更新图片轮播对象</button>
</body>
</html>
ImageSliderStyles
图片轮播控件样式
interface ImageSliderStyles extends ViewStyles {
attribute Array<ImageSliderImageStyles> images;
attribute Boolean loop;
attribute Boolean fullscreen;
}
说明:
从ViewStyles继承而来,扩展支持轮播图片等配置。
属性:
- images: (Array[
ImageSliderImageStyles
]
类型
)轮播的图片
至少必须设置一张图片的地址信息,否则可能导致图片轮播控件显示不正常。
- loop: (Boolean
类型
)是否可循环轮播
可取值: "true" - 支持循环轮播; "false" - 不支持循环轮播。 默认值为"false"。
- fullscreen: (Boolean
类型
)是否可全屏显示
可取值: "true" - 表示可全屏显示,用户点击轮播图片时全屏显示; "false" - 表示不可全屏显示,用户点击轮播图片时无响应。 默认值为"true"。
ImageSliderImageStyles
图片轮播控件中图片项配置参数
说明:
用于指定图片地址等信息。
属性:
- src: (String
类型
)图片地址
支持本地地址(相对地址、绝对路径、RelativeURL、本地路径URL); 也支持网络地址(http://或https://)。
- align: (String
类型
)图片水平对齐方式
仅在图片显示的宽度与图片轮播控件宽度不一致时有效,可取值: "left" - 图片在轮播控件中水平居左对齐; "center" - 图片在轮播控件中水平居中对齐; "right" - 图片在轮播控件中水平居右对齐。 默认值为"center"。
- height: (String
类型
)图片显示的高度
可取值: 像素值,如"100px"; 百分比,如"10%",现对于图片轮播控件的高度; 自动计算"auto",如果指定图片宽度(width),则按图片实际大小等比缩放图片高度值,如果没有指定宽度(width值为"auto")则自动缩放图片至可完整显示。
- width: (String
类型
)图片显示的宽度
可取值: 像素值,如"100px"; 百分比,如"10%",相对于图片轮播控件的宽度; 自动计算"auto",如果指定图片高度(height),则按图片实际大小等比缩放图片宽度值,如果没有指定高度(height值为"auto")则自动缩放图片至可完整显示。 默认值为"auto"。
- verticalAlign: (String
类型
)图片垂直对齐方式
仅在图片显示的高度与图片轮播控件宽度不一致时有效,可取值: "top" - 图片在轮播控件中垂直居顶对齐; "middle" - 图片在轮播控件中垂直居中对齐; "bottom" - 图片在轮播控件中垂直居底对齐。 默认值为"middle"。
Rect
区域信息对象
interface Rect {
attribute String top;
attribute String left;
attribute String width;
attribute String height;
}
说明:
包括位置、大小等信息。
属性:
- top: (String
类型
)区域左上角的垂直偏移量
可取值: 像素值,如"100px"; 百分比,如"10%",相对于作用对象的高度; 自动计算,如"auto",根据height值自动计算,相对于作用对象垂直居中。
- left: (String
类型
)区域左上角的水平偏移量
可取值: 像素值,如"100px"; 百分比,如"10%",相对于作用对象的宽度; 自动计算,如"auto",根据width值自动计算,相对于作用对象水平居中。
- width: (String
类型
)区域的宽度
可取值: 像素值,如"100px"; 百分比,如"10%",相对于作用对象的宽度。
- height: (String
类型
)区域的高度
可取值: 像素值,如"100px"; 百分比,如"10%",相对于作用对象的高度。 内容自适应,如"wrap_content",根据内容计算高度(如调用drawText绘制文本时支持)。
RectStyles
绘制区域样式对象
interface RectStyles {
attribute String color;
attribute String radius;
attribute String strokeColor;
attribute String strokeWidth;
attribute String style;
}
说明:
用于定义矩形区域的显示样式,如空心/实心样式、圆角等信息。
属性:
- color: (String
类型
)绘制颜色
矩形填充区域的颜色,可取值: "#RRGGBB"格式字符串,如"#FF0000"表示绘制红色区域; "rgba(R,G,B,A)",其中R/G/B分别代表红色值/绿色值/蓝色值,正整数类型,取值范围为0-255,A为透明度,浮点数类型,取值范围为0-1(0为全透明,1为不透明),如"rgba(255,0,0,0.5)",表示红色半透明。 默认值为"#FFFFFF"(白色)。
- radius: (String
类型
)矩形区域的圆角半径
可取值:圆角半径像素值,数字加"px"格式字符串,如"6px"。 默认值为"0px"(矩形无圆角)。
- borderColor: (String
类型
)矩形边框颜色
绘制矩形边框的颜色,可取值: "#RRGGBB"格式字符串,如"#FF0000"表示绘制红色区域; "rgba(R,G,B,A)",其中R/G/B分别代表红色值/绿色值/蓝色值,正整数类型,取值范围为0-255,A为透明度,浮点数类型,取值范围为0-1(0为全透明,1为不透明),如"rgba(255,0,0,0.5)",表示红色半透明。 默认值为矩形填充区域颜色(color属性值)。
- borderWidth: (String
类型
)矩形边框宽度
可取值:像素值,数字加"px"格式字符串,如"2px"。 默认值为"0px"(无边框)。
示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready', plusReady, false);
}
// 创建原生View控件
function createView(){
var view = new plus.nativeObj.View('test', {top:'200px',left:'0px',height:'44px',width:'100%'});
// 绘制空心圆角矩形
view.drawRect({color:'#FF0000',strokeWideh:'2px',radius:'5px',style:'stroke'},
{top:'0px',left:'0px',width:'100%',height:'100%'});
view.show();
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
</body>
</html>
RichTextStyles
富文本样式
interface RichTextStyles{
attribute String align;
attribute String family;
attribute String fontSrc;
}
说明:
用于定义富文本使用的默认使用的字体名称、字体文件路径等信息。
属性:
- align: (String
类型
)富文本内容的水平对齐方式
对整体内容有效,无法单独控制每行的内容。 可取值: "left"-字体在指定的区域中水平居左对齐; "center"-字体在指定的区域中水平居中对齐; "right"-字体在指定的区域中水平居右对齐。 默认值为"left"。
- family: (String
类型
)富文本默认使用的字体名称
例如"Times New Roman", 如果指定名称的字体不存在,则使用系统默认字体。
- fontSrc: (String
类型
)富文本默认使用的字体文件路径
加载字体文件路径,必须为本地路径,如果指定的文件路径无效,则使用系统默认字体。
示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready', plusReady, false);
}
// 创建原生View控件
function createView(){
var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'});
var richtext = '<font color="#FF0000" style="font-size:10px;">文本</font><br/><a href="" style="font-size:12px;">链接</a><br/><img src="./t.png" width="20px" height="20px"></img>';
// 绘制文本
view.drawText(richtext, {top:'0px',left:'0px',width:'100%',height:'wrap_content'}, {family:'Times New Roman',fontSrc:'_www/font.ttf'});
view.show();
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
</body>
</html>
Position
区域信息对象
interface Position {
attribute String top;
attribute String left;
attribute String width;
attribute String height;
attribute String bottom;
attribute String right;
}
说明:
包括位置、大小等信息。
属性:
- top: (String
类型
)区域顶部相对于作用对象(或容器)向下的偏移量
可取值:像素值,如"100px";百分比,如"10%",相对于作用对象(或容器)的高度; 自动计算,如"auto",根据height值自动计算,相对于作用对象(或容器)垂直居中。
- left: (String
类型
)区域左侧相对于作用对象(或容器)向右的偏移量
可取值:像素值,如"100px";百分比,如"10%",相对于作用对象(或容器)的宽度; 自动计算,如"auto",根据width值自动计算,相对于作用对象(或容器)水平居中。
- width: (String
类型
)区域的宽度
可取值:像素值,如"100px";百分比,如"10%",相对于作用对象(或容器)的宽度。
- height: (String
类型
)区域的高度
可取值:像素值,如"100px";百分比,如"10%",相对于作用对象(或容器)的高度。
- bottom: (String
类型
)区域底部相对于作用对象(或容器)向上的偏移量
可取值:像素值,如"100px";百分比,如"10%",相对于作用对象(或容器)的高度。 当设置了top和height值时,忽略此属性值; 当未设置top值时,可通过bottom属性值来确定区域的垂直位置; 当未设置height值时,可通过top和bottom属性值来确定区域的高度。
- right: (String
类型
)区域右侧相对于作用对象(或容器)向左的偏移量
可取值:像素值,如"100px";百分比,如"10%",相对于作用对象(或容器)的宽度。 当设置了left和width值时,忽略此属性值; 当未设置left值时,可通过right属性值来确定区域的水平位置; 当未设置width值时,可通过left和right属性值来确定区域的宽度。
示例:
<!DOCTYPE html>
<html>
<head>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<meta name="HandheldFriendly" content="true"/>
<meta name="MobileOptimized" content="320"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var wc=null;
var bitmap=null; // 返回图标
// H5 plus事件处理
function plusReady(){
wc=plus.webview.currentWebview();
plus.key.addEventListener('backbutton', function(){
nv&&!bChild?(nv.close(),nv=null):plus.runtime.quit();
}, false);
var bdata = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABYCAYAAAADWlKCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAKwwAACsMBNCkkqwAAABZ0RVh0Q3JlYXRpb24gVGltZQAwOS8xMi8xM5w+I3MAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzVxteM2AAACcklEQVR4nO3a0XESURiG4TeO99iBWoGZ+RvADtKBpAPtwBLsANJBrEAs4MyYDmIHSQXkgk0mMLK7ILt8/+F778ici394OGfDsher1Qqn05tTD+A2M4hYBhHLIGIZRCyDiGUQsQwilkHEMohYBhHLIGIZRCyDiGUQsQwilkHEMohYBhHLIGIZRCyDiGUQsQwilkHEMohYb089wNCVUq6Ay+blfUQsTjhOZxc1P9tbSlkAX7b+/C0ifpxgnF5Ve2TtwAD4OvIoe1UlSAsGwPsRR9m76kA6MAD+jjTKQVUF0gMD4HaEUQ6umot6T4ybiJgNP83hVbFDasGACnZIT4yfEXE1wjj/Xeod0hPjDpgNPsyRSguyB8Y0Ih6Gn+g4pQSpFQMSgtSMAclAaseARCDngAFJQM4FAxKAnBMGiH8xLKVMgV89ln6MiPthpxkn6R0SEUvgusfSZSnlsnuZftI75LlSygyYdyx7ZH1s/Rl+ouFKAQIvx9ctMGlZlh4lDQhAcywtqRhF+hqyXfMmT1m/6buasL6mzMaY6dilAoENlLuWZRNgnhEl1ZH1ulLKO9bH16eOpdfqz2K9Lt0Oea75EjilfadAsp2SFgQ2UH53LJ2XUr4PPtARSntkbVfL7+rVgEBvlM/NHQDJUh9Z2zWf/puOZbPhJzm8qkDgBaXt/teHcSY5rOpAAJp/c/vclJSrShDYifKI+NPvVV3U/1VzU3LavFyo/25SPUi2qj2ysmYQsQwilkHEMohYBhHLIGIZRCyDiGUQsQwilkHEMohYBhHLIGIZRCyDiGUQsQwilkHEMohYBhHLIGIZRCyDiGUQsZ4Ak9fPFwUy/HsAAAAASUVORK5CYII=';
bitmap = new plus.nativeObj.Bitmap('back');
bitmap.loadBase64Data(bdata, function(){
bitmap.isLoadSuccess = true;
console.log('Back bitmap load success');
}, function(e){
console.log('Back bitmap load failed: '+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready',plusReady,false);
}
var nv=null;
// 创建原生View控件
function creatView(){
nv=nv||new plus.nativeObj.View('test', {top:'100px',bottom:'0px'}, [
{id:'background', tag:'rect', position:{}, color:'#FFFFFF'},
{id:'rect1', tag:'rect', position:{left:'0px',right:'100px',height:'100px'}, color:'#FF0000'},
{id:'back1', tag:'img', src:bitmap, position:{right:'0px',width:'50px',height:'44px'}},
{id:'font1', tag:'font', position:{left:'0px',right:'100px',height:'100px'}, text:'初始文字', textStyles:{color:'#00FF00',size:'50px'}}
]);
// 绘制底部区域
nv.drawRect('#FF0000', {left:'100px',right:'100px',bottom:'0px',height:'100px'}, 'rect2');
nv.drawBitmap(bitmap, {}, {bottom:'0px',width:'50px',height:'44px'}, 'back2');
nv.drawText('底部文本内容', {bottom:'0px',height:'100px'}, {color:'#00FF00'}, 'font2');
nv.show();
}
</script>
</head>
<body style="background:#0000FF;">
使用bottom属性定位绘制内容<br/>
<button onclick="creatView()">显示</button>
</body>
</html>
TextStyles
绘制文本样式对象
interface TextStyles {
attribute String align;
attribute String color;
attribute String family;
attribute String size;
attribute String style;
attribute String weight;
attribute String fontSrc;
attribute String overflow;
}
说明:
用于定义文本的显示样式,如字体大小、字体颜色、字体粗细、字体样式、字体名称等信息。
属性:
- align: (String
类型
)水平对齐方式
可取值: "left"-字体在指定的区域中水平居左对齐; "center"-字体在指定的区域中水平居中对齐; "right"-字体在指定的区域中水平居右对齐。 默认值为"center"。
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>NativeObj Example</title> <script type="text/javascript"> // H5 plus事件处理 function plusReady(){ } if(window.plus){ plusReady(); }else{ document.addEventListener("plusready",plusReady,false); } // 创建原生View控件 function createView(){ var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'}); // 绘制文本 view.drawText('原生绘制的文本内容', {top:'0px',left:'0px',width:'100%',height:'100%'}, {align:'left'}); view.show(); } </script> </head> <body> <button onclick="createView()">创建View对象</button><br/> </body> </html>
- color: (String
类型
)字体颜色
可取值: "#RRGGBB"格式字符串,如"#FF0000"表示绘制红色区域; "rgba(R,G,B,A)",其中R/G/B分别代表红色值/绿色值/蓝色值,正整数类型,取值范围为0-255,A为透明度,浮点数类型,取值范围为0-1(0为全透明,1为不透明),如"rgba(255,0,0,0.5)",表示红色半透明。 默认值为"#000000"(黑色)。
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>NativeObj Example</title> <script type="text/javascript"> // H5 plus事件处理 function plusReady(){ } if(window.plus){ plusReady(); }else{ document.addEventListener("plusready",plusReady,false); } // 创建原生View控件 function createView(){ var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'}); // 绘制文本 view.drawText('原生绘制的文本内容', {top:'0px',left:'0px',width:'100%',height:'100%'}, {color:'#FF0000'}); view.show(); } </script> </head> <body> <button onclick="createView()">创建View对象</button><br/> </body> </html>
- decoration: (Boolean
类型
)文本装饰
可取值: "none" - 无装饰效果; "underline" - 文本带下划线效果; "line-through" - 文本带贯穿线(删除线)效果。 默认值为"none"。
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>NativeObj Example</title> <script type="text/javascript"> // H5 plus事件处理 function plusReady(){ } if(window.plus){ plusReady(); }else{ document.addEventListener("plusready",plusReady,false); } // 创建原生View控件 function createView(){ var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'}); // 绘制带删除线文本 view.drawText('原生绘制的文本内容', {top:'0px',left:'0px',width:'100%',height:'100%'}, {decoration:'line-through'}); view.show(); } </script> </head> <body> <button onclick="createView()">创建View对象</button><br/> </body> </html>
- family: (String
类型
)字体名称
例如"Times New Roman", 如果指定名称的字体不存在,则使用默认字体。
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>NativeObj Example</title> <script type="text/javascript"> // H5 plus事件处理 function plusReady(){ } if(window.plus){ plusReady(); }else{ document.addEventListener("plusready",plusReady,false); } // 创建原生View控件 function createView(){ var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'}); // 绘制文本 view.drawText('原生绘制的文本内容', {top:'0px',left:'0px',width:'100%',height:'100%'}, {family:'Times New Roman'}); view.show(); } </script> </head> <body> <button onclick="createView()">创建View对象</button><br/> </body> </html>
- fontSrc: (String
类型
)字体文件路径
加载字体文件路径。
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>NativeObj Example</title> <script type="text/javascript"> // H5 plus事件处理 function plusReady(){ } if(window.plus){ plusReady(); }else{ document.addEventListener("plusready",plusReady,false); } // 创建原生View控件 function createView(){ var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'}); // 绘制文本 view.drawText('原生绘制的文本内容', {top:'0px',left:'0px',width:'100%',height:'100%'}, {family:'Times New Roman',fontSrc:'_www/font.ttf'}); view.show(); } </script> </head> <body> <button onclick="createView()">创建View对象</button><br/> </body> </html>
- lineSpacing: (String
类型
)文本的行间距
可取值: 像素值,如"100px";百分比,如"10%",相对于字体的高度(size属性); 默认值为"20%"。
- margin: (String
类型
)字体的边距
用于设置字体在绘制目标区域四个方向(top/right/bottom/left)的边距,可取值:像素值,如"10px";百分比,相对于绘制目标区域,如"5%"; 默认值为"0px"。
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>NativeObj Example</title> <script type="text/javascript"> // H5 plus事件处理 function plusReady(){ } if(window.plus){ plusReady(); }else{ document.addEventListener("plusready",plusReady,false); } // 创建原生View控件 function createView(){ var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'}); // 绘制文本 view.drawText('原生绘制的文本内容', {top:'0px',left:'0px',width:'100%',height:'100%'}, {align:'right',margin:'10px'}); view.show(); } </script> </head> <body> <button onclick="createView()">创建View对象</button><br/> </body> </html>
- overflow: (String
类型
)文本内容超出显示区域时处理方式
可取值: "clip" - 超出显示区域时内容裁剪; "ellipsis" - 超出显示区域时尾部显示省略标记(...)。 默认值为"clip"。
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>NativeObj Example</title> <script type="text/javascript"> // H5 plus事件处理 function plusReady(){ } if(window.plus){ plusReady(); }else{ document.addEventListener("plusready",plusReady,false); } // 创建原生View控件 function createView(){ var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'}); // 绘制文本 view.drawText('原生绘制的长字符串文本内容', {top:'0px',left:'0px',width:'50%',height:'100%'}, {overflow:'ellipsis'}); view.show(); } </script> </head> <body> <button onclick="createView()">创建View对象</button><br/> </body> </html>
- size: (String
类型
)字体大小
可取值:字体高度像素值,数字加"px"格式字符串,如"12px"。 默认值为"16px"。
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>NativeObj Example</title> <script type="text/javascript"> // H5 plus事件处理 function plusReady(){ } if(window.plus){ plusReady(); }else{ document.addEventListener("plusready",plusReady,false); } // 创建原生View控件 function createView(){ var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'}); // 绘制文本 view.drawText('原生绘制的文本内容', {top:'0px',left:'0px',width:'100%',height:'100%'}, {size:'44px'}); view.show(); } </script> </head> <body> <button onclick="createView()">创建View对象</button><br/> </body> </html>
- style: (String
类型
)字体样式
可取值:"normal" - 正常字体样式;"italic" - 斜体样式。默认值为"normal"。
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>NativeObj Example</title> <script type="text/javascript"> // H5 plus事件处理 function plusReady(){ } if(window.plus){ plusReady(); }else{ document.addEventListener("plusready",plusReady,false); } // 创建原生View控件 function createView(){ var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'}); // 绘制文本 view.drawText('原生绘制的文本内容', {top:'0px',left:'0px',width:'100%',height:'100%'}, {style:'italic'}); view.show(); } </script> </head> <body> <button onclick="createView()">创建View对象</button><br/> </body> </html>
- verticalAlign: (String
类型
)垂直对齐方式
文本内容在指定绘制区域中的垂直对齐方式,可取值: "top" - 垂直居顶对齐; "middle" - 垂直居中对齐; "bottom" - 垂直居底对齐。 默认值为"middle"。
- weight: (String
类型
)字体粗细
可取值:"normal" - 普通字体;"bold" - 粗字体。默认值为"normal"。
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>NativeObj Example</title> <script type="text/javascript"> // H5 plus事件处理 function plusReady(){ } if(window.plus){ plusReady(); }else{ document.addEventListener("plusready",plusReady,false); } // 创建原生View控件 function createView(){ var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'}); // 绘制文本 view.drawText('原生绘制的文本内容', {top:'0px',left:'0px',width:'100%',height:'100%'}, {weight:'bold'}); view.show(); } </script> </head> <body> <button onclick="createView()">创建View对象</button><br/> </body> </html>
- whiteSpace: (String
类型
)文本换行模式
可取值: "nowrap" - 不换行,将所有文本在一行中绘制,忽略换行符("\n"); "normal" - 自动换行,当指定的宽度无法绘制所有文本时自动换行绘制,碰到'\n'字符时强制换行。 默认值为"nowrap"。
View
原生控件对象
interface View {
readonly attribute String id;
static function void startAnimation(options, view, otherview, callback);
static function void clearAnimation(type);
static function View getViewById(id);
function void addEventListener(event, listener, capture);
function void animate(options, callback);
function void close();
function void clearRect(position, id);
function void draw(tags);
function void drawBitmap(src, sprite, position, id);
function void drawRect(color, position, id);
function void drawText(text, position, styles, id);
function void drawRechText(text, position, styles, id);
function void reset();
function void restore();
function void show();
function void setStyle(styles);
function void setTouchEventRect(rect);
function void hide();
function void interceptTouchEvent(intercept);
function Boolean isVisible();
}
说明:
原生控件对象可用于在屏幕上绘制图片或文本内容,当控件不再使用时需要调用close方法销毁控件。
构造:
- View(id, styles, tags): 创建View对象
属性:
- id: View对象的标识
方法:
- startAnimation: 静态方法,开始原生动画
- clearAnimation: 静态方法,关闭原生动画窗口
- getViewById: 静态方法,获取指定标识的View控件对象
- addEventListener: 添加事件监听器
- animate: View控件内容动画
- close: 关闭View控件
- clearRect: 清空矩形区域
- draw: 绘制内容
- drawBitmap: 绘制图片
- drawRect: 绘制矩形区域
- drawText: 绘制文本
- drawRichText: 绘制富文本
- reset: 重置view控件显示内容
- restore: 恢复View控件显示内容
- show: 显示View控件
- setStyle: 设置View控件的样式
- setTouchEventRect: 指定监听触屏事件区域
- hide: 隐藏View控件
- interceptTouchEvent: 是否拦截View控件的触屏事件
- isVisible: 获取View控件的显示状态
View(id, styles, tags)
创建View对象
var view = new plus.nativeObj.View(id, styles, tags);
说明:
创建后View对象后,需要调用View对象的show方法显示。 默认显示为无内容样式(背景透明),需要调用drawBitmap/drawText方法更新控件显示的内容。
参数:
- id:
(
String
)
必选 View控件对象的id
给View控件对象指定id后,可以通过plus.nativeObj.View.getViewById()获取。 如果不设置id则创建匿名View控件对象,此时必须通过返回的对象进行操作。 可创建多个相同id的View控件,此时plus.nativeObj.View.getViewById()获取第一个创建的id控件对象。 - styles:
(
ViewStyles
)
可选 View控件的样式
设置控件的位置、大小等信息。 - tags:
(
Array[
ViewDrawTagStyles
]
)
可选 View控件初始绘制内容
可设置绘制图片、矩形区域、文本等内容。
返回值:
View : 原生View控件示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var view=null;
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生View控件
function createView(){
view = new plus.nativeObj.View('test',
{top:'0px',left:'0px',height:'44px',width:'100%'},
[{tag:'img',id:'img',src:'nbg.png',position:{top:'0px',left:'0px',width:'100%',height:'100%'}},
{tag:'rect',id:'rect',color:'#FF0000',position:{top:'0px',left:'0px',width:'100%',height:'1px'}},
{tag:'font',id:'font',text:'原生控件',textStyles:{size:'18px'}}
]);
view.show();
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
</body>
</html>
id
View对象的标识
说明:
String 类型 只读属性
在创建原生控件View对象时设置,如果没有设置标识,此属性值为null。
示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
var view = new plus.nativeObj.View("test");
// ...
console.log( view.id ); // 输出"test"
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
</script>
</head>
<body>
View对象的标识<br/>
</body>
</html>
startAnimation
静态方法,开始原生动画
void plus.nativeObj.View.startAnimation(options, view, otherview, callback);
说明:
参数:
- options:
(
AnimationOptions
)
必选 原生动画参数
用于指定动画的类型、持续时间等。 - view:
(
AnimationViewStyles
|
View
)
必选 原生动画主窗口样式
使用AnimationViewStyles类型对象时指定主窗口(底层窗口)的样式,如背景图片,绘制的文字等。 使用View类型对象时则将View控件作为原生动画的主窗口,动画过程中会自动将View控件从显示栈中移除,动画结束后需要调用show方法才能重新显示。 - otherview:
(
AnimationViewStyles
|
View
)
可选 原生动画副窗口样式
使用AnimationViewStyles类型对象时指定副窗口(顶层层窗口)的样式,如背景图片,绘制的文字等。 使用View类型对象时则将View控件作为原生动画的副窗口,动画过程中会自动将View控件从显示栈中移除,动画结束后需要调用show方法才能重新显示。 - callback:
(
NativeObjSuccessCallback
)
可选 原生动画结束回调函数
原生动画效果结束时触发。 注意:动画结束时仍然会显示原生窗口(主/副窗口),需要调用plus.nativeObj.View.clearAnimation方法关闭原生动画。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var bitmap1=null,bitmap2=null;
// H5 plus事件处理
function plusReady(){
bitmap1 = new plus.nativeObj.Bitmap('bmp1');
bitmap1.load('bmp1.png',function(){
console.log('bmp1.png load success!');
},function(e){
console.log('bmp1.png load failed! '+JSON.stringify(e));
});
bitmap2 = new plus.nativeObj.Bitmap('bmp2');
bitmap2.load('bmp2.png',function(){
console.log('bmp2.png load success!');
},function(e){
console.log('bmp2.png load failed! '+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 原生动画
function nativeAnimation(){
// 开始动画
plus.nativeObj.View.startAnimation( {type:'pop-in'},{bitmap:bitmap1},{bitmap:bitmap2},function(){
console.log('plus.nativeObj.View.startAnimation动画结束');
// 关闭原生动画
plus.nativeObj.View.clearAnimation();
});
}
// 释放图片
function clearBitmap(){
bitmap1.clear();
bitmap2.clear();
bitmap1=bitmap2=null;
}
</script>
</head>
<body>
<button onclick="nativeAnimation()">原生窗口动画</button><br/>
<button onclick="clearBitmap()">释放图片资源</button><br/>
</body>
</html>
clearAnimation
静态方法,关闭原生动画窗口
void plus.nativeObj.View.clearAnimation(type);
说明:
通过plus.nativeObj.View.startAnimation方法开始原生动画后,不会自动关闭原生动画窗口对象,需要调用此方法关闭原生动画。
参数:
- type:
(
String
)
必选 关闭原生动画的类型
可取值:"none" - 无任何效果直接关闭原生动画窗口。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var bitmap1=null,bitmap2=null;
// H5 plus事件处理
function plusReady(){
bitmap1 = new plus.nativeObj.Bitmap('bmp1');
bitmap1.load('bmp1.png',function(){
console.log('bmp1.png load success!');
},function(e){
console.log('bmp1.png load failed! '+JSON.stringify(e));
});
bitmap2 = new plus.nativeObj.Bitmap('bmp2');
bitmap2.load('bmp2.png',function(){
console.log('bmp2.png load success!');
},function(e){
console.log('bmp2.png load failed! '+JSON.stringify(e));
});
}
// 原生动画
function nativeAnimation(){
// 开始动画
plus.nativeObj.View.startAnimation( {type:'pop-in'},{bitmap:bitmap1},{bitmap:bitmap2},function(){
console.log('plus.nativeObj.View.startAnimation动画结束');
// 延时500ms关闭原生动画
setTimeout(funciton(){
plus.nativeObj.View.clearAnimation();
}, 500);
});
}
// 释放图片
function clearBitmap(){
bitmap1.clear();
bitmap2.clear();
bitmap1=bitmap2=null;
}
</script>
</head>
<body>
<button onclick="nativeAnimation()">原生窗口动画</button><br/>
<button onclick="clearBitmap()">释放图片资源</button><br/>
</body>
</html>
getViewById
静态方法,获取指定标识的View控件对象
View plus.nativeObj.View.getViewById(id);
说明:
如果存在多个指定id标识的View对象,则返回第一个创建的View控件对象。 如果不存在指定id标识的View对象,则返回null。
参数:
- id:
(
String
)
必选 要查找的View控件标识
返回值:
View : View控件对象,若没有查找到指定标识的控件对象则返回null。示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生View控件
function createView(){
var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'});
// ...
view.show();
plus.nativeUI.toast('创建原生View控件成功');
}
// 查找View控件
function getView(){
var view = plus.nativeObj.View.getViewById('test');
if(view){
console.log("查找到id为'test'的View控件对象");
alert("查找到id为'test'的View控件对象");
}else{
console.log("未查找到id为'test'的View控件对象,请先创建");
alert("未查找到id为'test'的View控件对象,请先创建");
}
}
// 关闭View控件
function closeView(){
var view = plus.nativeObj.View.getViewById('test');
view.close();
plus.nativeUI.toast('销毁View控件成功');
}
</script>
</head>
<body>
<button onclick="createView()">创建View控件</button><br/>
<button onclick="getView()">查找View控件</button><br/>
<button onclick="closeView()">关闭View控件</button><br/>
</body>
</html>
addEventListener
添加事件监听器
void view.addEventListener(event, listener, capture);
说明:
向View控件添加事件监听器,当指定的事件发生时,将触发listener函数的执行。 可多次调用此方法向Webview添加多个监听器,当监听的事件发生时,将按照添加的先后顺序执行。 可通过setTouchEventRect方法指定监听触屏操作的区域。 注意:默认View控件拦截处理触屏事件,可调用view.interceptTouchEvent(false)改变为不拦截处理触屏事件(透传)。
参数:
- event:
(
ViewEvents
)
必选 View控件事件类型
- listener:
(
TouchEventCallback
)
必选 监听事件发生时执行的回调函数
回调函数的参数中保存了触屏事件信息,如点击坐标等。 - capture:
(
Boolean
)
可选 捕获事件流顺序,暂无效果
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
var view = null;
// 创建原生View控件
function createView(){
view = new plus.nativeObj.View('test',{top:'200px',left:'0px',height:'60px',width:'100%'});
// 绘制文本
view.drawText('原生绘制的文本内容', {}, {size:'60px',color:'#FF0000'});
view.show();
plus.nativeUI.toast('创建成功');
}
// 监听原生View控件click事件
function addEventView(){
view.addEventListener("click", onClick, false);
}
// 监听事件函数
function onClick(e){
console.log("点击原生控件:"+JSON.stringify(e));
var clientX = e.clientX; // 在View控件中的X坐标
var clientY = e.clientY; // 在View控件中的Y坐标
var pageX = e.pageX; // 在当前Webview窗口(运行此脚本的窗口)中的X坐标
var pageY = e.pageY; // 在当前Webview窗口(运行此脚本的窗口)中的Y坐标
var screenX = e.screenX; // 在屏幕中的X坐标
var screenY = e.screenY; // 在屏幕中的Y坐标
var target = e.target; // View控件对象
}
</script>
</head>
<body>
<button onclick="createView()">创建View控件</button><br/>
<button onclick="addEventView()">监听原生View控件click事件</button><br/>
</body>
</html>
animate
View控件内容动画
void view.animate(options, callback);
说明:
动画后可能会导致View控件显示内容改变,可通过调用restore方法恢复。
参数:
- options:
(
ViewAnimationOptions
)
可选 View控件动画参数
- callback:
(
NativeObjSuccessCallback
)
可选 View控件动画结束回调函数
View控件动画效果结束时触发。 注意:动画结束时仍然会显示View控件,需要调用其clear方法关闭View控件。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var bitmap1=null,bitmap2=null;
// H5 plus事件处理
function plusReady(){
bitmap1 = new plus.nativeObj.Bitmap('bmp1');
bitmap1.load('bmp1.png',function(){
console.log('bmp1.png load success!');
},function(e){
console.log('bmp1.png load failed! '+JSON.stringify(e));
});
bitmap2 = new plus.nativeObj.Bitmap('bmp2');
bitmap2.load('bmp2.png',function(){
console.log('bmp2.png load success!');
},function(e){
console.log('bmp2.png load failed! '+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 原生动画
function nativeAnimation(){
var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'100%',width:'100%'});
// 绘制图片
view.drawBitmap( bitmap2, {top:'0px',left:'0px',width:'100%',height:'100%'}, {top:'auto',left:'auto',width:'100%',height:'100%'} );
// 开始动画
plus.nativeObj.View.startAnimation( {type:'pop-in'},{bitmap:bitmap1},view,function(){
console.log('plus.nativeObj.View.startAnimation动画结束');
// 开始view控件动画
view.animate({type:'shrink',frames:20,region:{top:'44px',bottom:'48px'}},function(){
plus.nativeObj.View.clearAnimation();
});
});
}
</script>
</head>
<body>
<button onclick="nativeAnimation()">原生窗口动画&View控件动画</button><br/>
</body>
</html>
close
关闭View控件
void view.close();
说明:
释放View控件资源,View对象不可再操作,如果View控件已经显示则自动隐藏。
参数:
无
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
var view = null;
// 创建原生View控件
function createView(){
view = new plus.nativeObj.View('test',{top:'200px',left:'0px',height:'60px',width:'100%'});
// 绘制文本
view.drawText('原生绘制的文本内容', {}, {size:'60px',color:'#FF0000'});
view.show();
}
// 关闭原生View控件
function closeView(){
view.close();
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
<button onclick="closeView()">关闭View对象</button><br/>
</body>
</html>
clearRect
清空矩形区域
void view.clearRect(position, id);
说明:
清除指定矩形区域内容,透明显示其后面的内容。 可多次调用设置多个区域透明。
参数:
- position:
(
Position
)
可选 清除的矩形区域
相对于View控件的区域信息,默认值为{top:'0px',left:'0px',width:'100%',height:'100%'}。 - id:
(
String
)
可选 绘制操作标识
当前View控件已经存在此清除操作(包括绘制操作drawBitmap/drawRect/drawText)标识,则更新绘制操作。 否则做为新的清除操作处理。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生View控件
function createView(){
var view = new plus.nativeObj.View('test',{top:'200px',left:'0px',height:'44px',width:'100%'});
// 绘制矩形
view.drawRect("#FF0000", {top:'0px',left:'0px',width:'100%',height:'100%'});
// 清空矩形区域
view.clearRect({top:'11px',left:'100px',width:'100px',height:'22px'});
view.show();
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
</body>
</html>
draw
绘制内容
void view.draw(tags);
说明:
在当前View控件之上绘制指定的内容,可一次指定绘制多个元素,绘制元素可以是图片/矩形区域/文本, 即将多次调用drawBitmap/drawRect/drawText方法合并调用一次draw方法来实现, 推荐使用draw方法来替换多次调用drawBitmap/drawRect/drawText。
参数:
- tags:
(
Array[
ViewDrawTagStyles
]
)
可选 View控件初始绘制内容
可设置绘制图片、矩形区域、文本等内容。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var view=null;
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生View控件
function createView(){
view = new plus.nativeObj.View('test',
{top:'0px',left:'0px',height:'44px',width:'100%'});
view.draw([
{tag:'img',id:'img',src:'nbg.png',position:{top:'0px',left:'0px',width:'100%',height:'100%'}},
{tag:'rect',id:'rect',color:'#FF0000',position:{top:'0px',left:'0px',width:'100%',height:'1px'}},
{tag:'font',id:'font',text:'原生View控件',textStyles:{size:'18px'},position:{top:'0px',left:'0px',width:'100%',height:'1px'}}
]);
view.show();
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
</body>
</html>
drawBitmap
绘制图片
void view.drawBitmap(src, sprite, position, id);
说明:
在当前View控件之上绘制指定的图片,如果图片无效则不做任何操作。
参数:
- src:
(
String
|
Bitmap
)
必选 绘制的图片资源
可以是图片资源路径(字符串类型)或者图片对象(plus.nativeObj.Bitmap对象)。 src也可以是图片路径,要求为本地路径,可支持以下路径: 相对路径 - 相对于当前页面的host位置,如"a.jpg",注意当前页面为网络地址则不支持; 绝对路径 - 系统绝对路径,如Android平台"/sdcard/logo.png",此类路径通常通过其它5+ API获取的; 扩展相对路径URL(RelativeURL) - 以"_"开头的相对路径,如"_www/a.jpg"; 本地路径URL - 以“file://”开头,后面跟随系统绝对路径。 src为图片路径时支持gif图片,当设置的图片路径文件使用".gif"后缀时则认为是gif图片,如"_www/loading.gif"。 - sprite:
(
Position
)
可选 图片源的绘制区域
相对于图片的区域信息,默认值为{top:'0px',left:'0px',width:'100%',height:'100%'}。 - position:
(
Position
)
可选 绘制图片的目标区域
相对于View控件的区域信息,默认值为{top:'0px',left:'0px',width:'100%',height:'100%'}。 当left/top设置为具体值时,如果src区域与dst区域的宽/高不一致时采用缩放绘制。 - id:
(
String
)
可选 绘制操作标识
当前View控件已经存在此绘制操作(包括drawBitmap/drawRect/drawText)标识,则更新绘制操作。 否则做为新的绘制操作处理。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var bitmap1=null;
// H5 plus事件处理
function plusReady(){
bitmap1 = new plus.nativeObj.Bitmap('bmp1');
bitmap1.load('bmp1.png',function(){
console.log('bmp1.png load success!');
},function(e){
console.log('bmp1.png load failed! '+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生View控件
function createView(){
var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'});
// 绘制图片
view.drawBitmap( bitmap1, {top:'0px',left:'0px',width:'100%',height:'100%'}, {top:'auto',left:'auto',width:'100%',height:'100%'} );
view.show();
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
</body>
</html>
drawRect
绘制矩形区域
void view.drawRect(color, position, id);
说明:
在当前View控件之上绘制指定颜色的矩形区域。
参数:
- styles:
(
RectStyles
|
String
)
必选 矩形区域的样式
字符串类型或RectStyles类型,使用字符串时表示设置矩形区域的颜色,可取值: "#RRGGBB"格式字符串,如"#FF0000"表示绘制红色区域; "rgba(R,G,B,A)",其中R/G/B分别代表红色值/绿色值/蓝色值,正整数类型,取值范围为0-255,A为透明度,浮点数类型,取值范围为0-1(0为全透明,1为不透明),如"rgba(255,0,0,0.5)",表示红色半透明。 默认值为"#FFFFFF"(白色)。 - position:
(
Position
)
可选 绘制的矩形区域
相对于View控件的区域信息,默认值为{top:'0px',left:'0px',width:'100%',height:'100%'}。 - id:
(
String
)
可选 绘制操作标识
当前View控件已经存在此绘制操作(包括drawBitmap/drawRect/drawText)标识,则更新绘制操作。 否则做为新的绘制操作处理。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready', plusReady, false);
}
// 创建原生View控件
function createView(){
var view = new plus.nativeObj.View('test',{top:'200px',left:'0px',height:'44px',width:'100%'});
// 绘制矩形
view.drawRect({color:'#FF0000'}, {top:'0px',left:'0px',width:'100%',height:'100%'});
view.show();
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
</body>
</html>
drawText
绘制文本
void view.drawText(text, position, styles, id);
说明:
在当前View控件之上绘制指定的文本内容,如果文本为空则不做任何操作。
参数:
- text:
(
String
)
必选 要绘制的文本内容
- position:
(
Position
)
可选 绘制文本的目标区域
相对于View控件的区域信息,文字在目前区域中水平/垂直方向居中绘制,默认值为{top:'0px',left:'0px',width:'100%',height:'100%'}。 height属性值支持设置为"wrap_content",表示文本高度根据内容自动计算,此时通过top来定位文本绘制的起始位置。 - styles:
(
TextStyles
)
可选 绘制文本的样式
用于指定字体大小、字体颜色、字体类型等信息。 - id:
(
String
)
可选 绘制操作标识
当前View控件已经存在此绘制操作(包括drawBitmap/drawRect/drawText)标识,则更新绘制操作。 否则做为新的绘制操作处理。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生View控件
function createView(){
var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'});
// 绘制文本
view.drawText('原生绘制的文本内容', {top:'0px',left:'0px',width:'100%',height:'100%'}, {size:'22px',color:'#FF0000'});
view.show();
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
</body>
</html>
drawRichText
绘制富文本
void view.drawRichText(text, position, styles, id);
说明:
在当前View控件之上绘制指定的文本内容,如果文本为空则不做任何操作。
参数:
- text:
(
String
)
必选 要绘制的富文本内容
富文本使用html的部分标签,具体标签如下: 图片标签<img src="图片资源url地址" width="图片显示的宽度" height="图片显示的高度" onclick="console.log('clicked img')"></img>; 字体标签<font color="字体颜色"></font>,内容在一行显示不下时自动换行,行高默认为字体的1.2倍; 换行标签<br/>; 链接标签<a onclick="console.log('clicked a')">链接地址</a>。 如示例“<img onclick="console.log('clicked img')" src="http://img-cdn-qiniu.dcloud.net.cn/icon2.png"/><a onclick="console.log(clicked a)">链接地址</a>”。 - position:
(
Position
)
可选 绘制富文本的目标区域
相对于View控件的区域信息,富文本内容在区域中居顶从左到右绘制,默认值为{top:'0px',left:'0px',width:'100%',height:'100%'}。 height属性值支持设置为"wrap_content",表示文本高度根据内容自动计算,此时通过top来定位文本绘制的起始位置。 - styles:
(
RichTextStyles
)
可选 绘制富文本的样式
用于指定默认字体等信息。 - id:
(
String
)
可选 绘制操作标识
当前View控件已经存在此绘制操作(包括drawBitmap/drawRect/drawText/drawRichText)标识,则更新绘制操作。 否则做为新的绘制操作处理。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready', plusReady, false);
}
// 创建原生View控件
function createView(){
var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'});
var richtext = '<font color="#FF0000" style="font-size:10px;">文本</font><br/><a href="" style="font-size:12px;">链接</a><br/><img src="./t.png" width="20px" height="20px"></img>';
// 绘制文本
view.drawRichText(richtext, {top:'0px',left:'0px',width:'100%',height:'wrap_content'});
view.show();
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
</body>
</html>
reset
重置view控件显示内容
void view.reset();
说明:
清除调用drawBitmap、drawText方法绘制的内容,将View控件重置为空内容(透明不可见)。
参数:
无
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var view = null;
// H5 plus事件处理
function plusReady(){
view = new plus.nativeObj.View('test',{top:'200px',left:'0px',height:'60px',width:'100%'});
view.show();
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 绘制View控件
function drawView(){
// 绘制文本
view.drawText( 'Test绘制文本内容', {}, {size:'60px',color:'#FF0000'} );
}
// 重置View控件
function resetView(){
view.reset();
}
</script>
</head>
<body>
<button onclick="drawView()">绘制View对象</button><br/>
<button onclick="resetView()">重置View对象</button><br/>
</body>
</html>
restore
恢复View控件显示内容
void view.restore();
说明:
恢复调用animate方法改变View控件的内容,更新至动画前的内容。
参数:
无
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var bitmap1=null,view=null;
// H5 plus事件处理
function plusReady(){
bitmap1 = new plus.nativeObj.Bitmap('bmp1');
bitmap1.load('bmp1.png',function(){
console.log('bmp1.png load success!');
},function(e){
console.log('bmp1.png load failed! '+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建View控件
function createView(){
view = new plus.nativeObj.View('test',{top:'100px',left:'0px',height:'100%',width:'100%'});
// 绘制图片
view.drawBitmap( bitmap1, {top:'0px',left:'0px',width:'100%',height:'100%'}, {top:'auto',left:'auto',width:'100%',height:'100%'} );
view.show();
}
// View控件动画
function animateView(){
// 开始view控件动画
view.animate({type:'shrink',frames:20,region:{top:'44px',bottom:'48px'}},function(){
console.log("View控件动画结束");
});
}
// 恢复View控件
function restoreView(){
view.restore();
}
</script>
</head>
<body>
<button onclick="createView()">创建View控件</button><br/>
<button onclick="animateView()">View控件动画</button><br/>
<button onclick="restoreView()">恢复View控件</button><br/>
</body>
</html>
show
显示View控件
void view.show();
说明:
将View控件显示到屏幕,显示在所有Webview窗口之上。
参数:
无
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生View控件
function createView(){
var view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'});
// 绘制文本
view.drawText( 'Test', {}, {size:'60px',color:'#FF0000'} );
view.show();
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
</body>
</html>
setStyle
设置View控件的样式
void view.setStyle(styles);
说明:
动态更新View控件样式。
参数:
- styles:
(
ViewStyles
)
可选 View控件的样式
更新控件的位置、大小等信息。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生View控件
var view=null;
function createView(){
view = new plus.nativeObj.View('test',{top:'200px',left:'0px',height:'50%',width:'100%'});
// 绘制区域
view.drawRect("#FF0000", {top:'0px',left:'0px',width:'100%',height:'50%'});
view.drawRect("#00FF00", {top:'50%',left:'0px',width:'100%',height:'50%'});
view.show();
}
// 更新原生View控件
function updateView(){
view.setStyle({top:'0px',left:'0px',height:'50%',width:'100%'});
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
<button onclick="updateView()">更新View对象</button>
</body>
</html>
setTouchEventRect
指定监听触屏事件区域
void view.setTouchEventRect(rect);
说明:
当调用addEventListener监听View控件事件时,可调用此方法限定监听事件的区域,仅当用户触屏操作在指定区域时才触发监听事件。 非限定监听事件的区域则不拦截,透传给其它窗口处理。 注意:此操作覆盖之前设置的区域。
参数:
- rect:
(
Array[
Rect
]
|
Rect
)
可选 要监听触屏事件区域
参数类型为数组(Array)时可支持设置多个区域。 Rect为相对于View控件的区域信息(超出View控件区域则无效),默认值为{top:'0px',left:'0px',width:'100%',height:'100%'},即默认拦截View控件所有区域。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生View控件
var view=null;
function createView(){
view = new plus.nativeObj.View('test',{top:'200px',left:'0px',height:'50%',width:'100%'});
// 绘制区域
view.drawRect("#FF0000", {top:'0px',left:'0px',width:'100%',height:'50%'});
view.drawRect("#00FF00", {top:'50%',left:'0px',width:'100%',height:'50%'});
view.show();
}
// 监听事件
function listenerEvent(){
view.setTouchEventRect({top:'0px',left:'0px',width:'100%',height:'50%'});
view.addEventListener("click", function(e){
console.log("点击原生控件:"+JSON.stringify(e));
}, false);
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
<button onclick="listenerEvent()">监听事件</button>
</body>
</html>
hide
隐藏View控件
void view.hide();
说明:
将View控件从屏幕隐藏,如果View控件未显示则不做任何操作。
参数:
无
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
var view = null;
// 创建原生View控件
function createView(){
view = new plus.nativeObj.View('test',{top:'200px',left:'0px',height:'60px',width:'100%'});
// 绘制文本
view.drawText('原生绘制的文本内容', {}, {size:'60px',color:'#FF0000'});
plus.nativeUI.toast('创建成功');
}
// 显示原生View控件
function showView(){
view.show();
}
// 隐藏原生View控件
function hideView(){
view.hide();
}
</script>
</head>
<body>
<button onclick="createView()">创建View控件</button><br/>
<button onclick="showView()">显示View控件</button><br/>
<button onclick="hideView()">隐藏View控件</button><br/>
</body>
</html>
interceptTouchEvent
是否拦截View控件的触屏事件
void view.interceptTouchEvent(intercept);
说明:
设置为拦截后View控件上的触屏事件不再传递(即不透传),否则触屏事件将继续传递给View控件下的其它窗口处理(即透传)。 注意:View控件默认拦截触屏事件(不透传)。
参数:
- intercept:
(
Boolean
)
可选 是否拦截触屏事件
true表示拦截处理触屏事件,false表示不拦截触屏事件,透传事件给其它窗口处理。 默认值为true。
返回值:
void : 无示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
var view = null;
// 创建原生View控件
function createView(){
view = new plus.nativeObj.View('test',{top:'200px',left:'0px',height:'60px',width:'100%'});
// 绘制文本
view.drawText('原生绘制的文本内容', {}, {size:'60px',color:'#FF0000'});
view.interceptTouchEvent(true);
plus.nativeUI.toast('创建成功');
}
// 显示原生View控件
function showView(){
view.show();
}
// 隐藏原生View控件
function hideView(){
view.hide();
}
</script>
</head>
<body>
<button onclick="createView()">创建View控件并拦截事件</button><br/>
<button onclick="showView()">显示View控件</button><br/>
<button onclick="hideView()">隐藏View控件</button><br/>
</body>
</html>
isVisible
获取View控件的显示状态
Boolean view.isVisible();
参数:
无
返回值:
Boolean : 如果View控件显示则返回true,如果View控件未显示则返回false。示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
var view = null;
// 创建原生View控件
function createView(){
view = new plus.nativeObj.View('test',{top:'200px',left:'0px',height:'60px',width:'100%'});
// 绘制文本
view.drawText('原生绘制的文本内容', {}, {size:'60px',color:'#FF0000'});
plus.nativeUI.toast('创建成功');
}
// 显示原生View控件
function showView(){
view.show();
}
// 隐藏原生View控件
function hideView(){
view.hide();
}
// 查看View控件的显示状态
function visibleView(){
var visible = view.isVisible();
console.log('View控件状态:'+visible);
alert('View控件状态:'+visible);
}
</script>
</head>
<body>
<button onclick="createView()">创建View控件</button><br/>
<button onclick="showView()">显示View控件</button><br/>
<button onclick="hideView()">隐藏View控件</button><br/>
<button onclick="visibleView()">获取View控件的显示状态</button><br/>
</body>
</html>
ViewAnimationOptions
View控件动画参数
interface ViewAnimationOptions {
attribute String type;
attribute Number duration;
attribute Number frames;
attribute Rect region;
}
说明:
指定动画的类型、持续时间等信息。
属性:
- type: (String
类型
)动画类型
可取值:"shrink" - 从上到下分块收缩清除窗口动画。
- duration: (Number
类型
)动画持续时间
单位为毫秒,默认值为200ms。
- frames: (Number
类型
)动画帧数
必须为大于0的整数,默认值为12。
- region: (Rect
类型
)动画作用区域
支持以下属性: top - 区域距离控件顶部的偏移量,属性值可取像素值(如"100px"),百分比(如"10%",相对于控件的高度),默认值为'0px'; bottom - 区域距离控件底部的偏移量,属性值可取像素值(如"100px"),百分比(如"10%",相对于控件的高度),默认值为'0px'; left - 区域距离控件左侧的偏移量,属性值可取像素值(如"100px"),百分比(如"10%",相对于控件的宽度),默认值为'0px'; right - 区域距离控件右侧的偏移量,属性值可取像素值(如"100px"),百分比(如"10%",相对于控件的宽度),默认值为'0px'。 如“{top:'44px',bottom:'48px'}”。
示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var bitmap1=null;
// H5 plus事件处理
function plusReady(){
bitmap1 = new plus.nativeObj.Bitmap('bmp1');
bitmap1.load('bmp1.png',function(){
console.log('bmp1.png load success!');
},function(e){
console.log('bmp1.png load failed! '+JSON.stringify(e));
});
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
var view=null;
// 创建原生View控件
function createView(){
view = new plus.nativeObj.View('test',{top:'0px',left:'0px',height:'44px',width:'100%'});
// 绘制图片
view.drawBitmap( bitmap1, {top:'0px',left:'0px',width:'100%',height:'100%'}, {top:'auto',left:'auto',width:'100%',height:'100%'} );
view.show();
}
function animateView(){
view.animate({type:'shrink',frames:20,region:{top:'44px',bottom:'48px'}});
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
<button onclick="animateView()">View对象动画</button><br/>
</body>
</html>
ViewDrawTagStyles
View控件绘制元素参数
interface ViewDrawTagStyles {
attribute String id;
attribute String tag;
attribute String color;
attribute Position position;
attribute RectStyles rectStyles;
attribute String src;
attribute Position sprite;
attribute String text;
attribute TextStyles textStyles;
attribute RichTextStyles richTextStyles;
}
说明:
指定绘制图片、矩形区域、文本内容等信息。
属性:
- id: (String
类型
)绘制操作标识
可通过view对象的drawBitmap/drawRect/drawText/clearRect方法进行更新。
- tag: (String
类型
)绘制操作类型
可取值: "img" - 绘制图片,与drawBitmap操作一致,此时id、src、position、sprite属性值有效; "rect" - 绘制矩形区域,与drawRect操作一致,此时id、color、position属性值有效; "font" - 绘制文本内容,与drawText操作一致,此时id、position、text、textStyles属性值有效; "richtext" - 绘制富文本内容,与drawRechText操作一致,此时id、position、text、richTextStyles属性值有效。
- color: (String
类型
)矩形区域颜色
不推荐使用(推荐使用rectStyles),可取值: "#RRGGBB"格式字符串,如红色为"#FF0000"。 "rgba(R,G,B,A)",其中R/G/B分别代表红色值/绿色值/蓝色值,正整数类型,取值范围为0-255,A为透明度,浮点数类型,取值范围为0-1(0为全透明,1为不透明),如"rgba(255,0,0,0.5)",表示红色半透明。 当tag属性值为"rect"时有效,用于指定矩形区域颜色,默认值为"#FFFFFF"(白色)。
- position: (Position
类型
)绘制内容区域
当tag属性值为"img"时,用于指定绘制图片的目标区域; 当tag属性值为"rect"时,用于指定绘制的矩形区域; 当tag属性值为"font"时,用于指定绘制文本的目标区域,此时height属性值支持设置为"wrap_content",表示文本高度根据内容自动计算,此时通过top来定位文本绘制的起始位置。 相对于View控件的区域信息,默认值为{top:'0px',left:'0px',width:'100%',height:'100%'}。
- rectStyles: (RectStyles
类型
)绘制区域的样式
当tag属性值为"rect"时有效,用于指定绘制区域的样式、填充颜色、圆角大小等信息。
- src: (String
类型
)绘制的图片资源
当tag属性值为"img"时有效,可以是图片资源路径(字符串类型)或者图片对象(plus.nativeObj.Bitmap对象)。 src路径支持gif图片,但设置的图片路径文件使用".gif"后缀时则认为是gif图片,如"_www/loading.gif"。
- sprite: (Position
类型
)图片源的绘制区域
当tag属性值为"img"时有效,用于指定图片源的绘制区域,相对于图片的区域信息,默认值为{top:'0px',left:'0px',width:'100%',height:'100%'}。
- text: (String
类型
)绘制的文本内容
当tag属性值为"font"时有效,用于保存绘制的文本内容。
- textStyles: (TextStyles
类型
)绘制文本的样式
当tag属性值为"font"时有效,用于指定绘制文本内容的字体大小、字体颜色、字体类型等信息。
- richTextStyles: (RichTextStyles
类型
)绘制富文本的样式
当tag属性值为"richtext"时有效,用于指定绘制富文本内容的默认字体颜色、字体类型等信息。
示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
var view=null;
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生View控件
function createView(){
view = new plus.nativeObj.View('test',
{top:'0px',left:'0px',height:'44px',width:'100%'});
view.draw([
{tag:'img',id:'img',src:'nbg.png',position:{top:'0px',left:'0px',width:'100%',height:'100%'}},
{tag:'rect',id:'rect',rectStyles:{color:'#FF0000'},position:{top:'0px',left:'0px',width:'100%',height:'1px'}},
{tag:'font',id:'font',text:'原生控件',textStyles:{size:'18px'}}
]);
view.show();
}
</script>
</head>
<body>
<button onclick="createView()">创建View对象</button><br/>
</body>
</html>
ViewEvents
View控件事件
常量:
- "doubleclick": (String
类型
)双击事件
双击屏幕时触发。 注意:如果将View控件设置为不拦截触屏事件(view.interceptTouchEvent(false))则不会触发此事件。
- "click": (String
类型
)点击事件
当手指点击屏幕时触发。 注意:如果将View控件设置为不拦截触屏事件(view.interceptTouchEvent(false))则不会触发此事件。
- "touchstart": (String
类型
)开始触屏事件
当手指触摸屏幕时候触发。 注意:如果将View控件设置为不拦截触屏事件(view.interceptTouchEvent(false))则不会触发此事件。
- "touchmove": (String
类型
)触摸滑屏事件
当手指在屏幕上滑动的时候连续地触发。 注意:如果将View控件设置为不拦截触屏事件(view.interceptTouchEvent(false))则不会触发此事件。
- "touchend": (String
类型
)结束触屏事件
当手指从屏幕上离开的时候触发。 注意:如果将View控件设置为不拦截触屏事件(view.interceptTouchEvent(false))则不会触发此事件。
ViewStatusbarStyles
JSON对象,View控件的系统状态栏区域样式
说明:
仅在应用设置为沉浸式状态栏样式下有效,非沉浸式状态栏样式下忽略此属性。
属性:
- background: (String
类型
)系统状态栏区域背景颜色
颜色值格式为"#RRGGBB",如"#FF0000"表示为红色背景,默认值为应用manifest.json中plus->statusbar->background属性配置的值。
ViewStyles
View控件样式
interface ViewStyles {
attribute String backgroundColor;
attribute String left;
attribute String top;
attribute String bottom;
attribute String height;
attribute String width;
attribute String dock;
attribute Number opacity;
attribute String position;
attribute ViewStatusbarStyles statusbar;
}
说明:
包括位置、大小等信息等,其中位置信息相对于父容器控件进行计算。
属性:
- backgroundColor: (String
类型
)区域背景颜色
颜色值格式为"#RRGGBB",如"#FF0000"为红色,默认值为透明区域。
- bottom: (String
类型
)View控件垂直向上的偏移量
现对于父容器底部的距离,可取值: 像素值,如"100px"; 百分比,如"10%",相对于父容器的高度,如果没有父容器则相对于屏幕高度。 当设置了top和height值时,忽略此属性值; 未设置height值时,可通过top和bottom属性值来确定View控件的高度。
- dock: (String
类型
)View控件的停靠方式
仅当View控件添加到Webview窗口对象中并且position属性值设置为"dock"时才生效,此时View控件挤压Webview窗口的大小。 可取值: "top",控件停靠则页面顶部; "bottom",控件停靠在页面底部; "right",控件停靠在页面右侧; "left",控件停靠在页面左侧。 默认值为"top"。
- height: (String
类型
)区域的高度
可取值: 像素值,如"100px"; 百分比,如"10%",相对于父容器的高度,如果没有父容器则相对于屏幕高度; 内容自适应,如"wrap_content",根据内容计算控件的高度。 默认值为"100%"。
- left: (String
类型
)区域左上角的水平偏移量
可取值: 像素值,如"100px"; 百分比,如"10%",相对于父控件的宽度; 自动计算,如"auto",根据width值自动计算,相对于父控件水平居中。 默认值为"0px"。
- opacity: (Number
类型
)View控件的不透明度
取值范围为0-1,0为全透明,1为不透明,默认值为1,即不透明。
平台支持
- Android - 4.0+ (支持): 需Android4.0及以上平台才支持,Android4.0以前平台忽略此属性。
- iOS - 7.0+ (支持)
- position: (String
类型
)View控件的排版方式
仅当View控件添加到Webview窗口对象中时才生效。 可取值: "static",View控件在页面中正常定位,如果页面存在滚动条则随窗口内容滚动; "absolute",Veiw控件在页面中绝对定位,如果页面存在滚动条不随窗口内容滚动; "dock",View控件在页面中停靠,停靠的位置由dock属性值决定。 默认值为"absolute"。
- statusbar: (ViewStatusbarStyles
类型
)View控件的状态栏样式
仅在应用设置为沉浸式状态栏样式下有效,设置此属性后将自动保留系统状态栏区域不被View控件占用(即View控件非沉浸式样式显示)。
- top: (String
类型
)View控件左上角的垂直偏移量
可取值:像素值,如"100px";百分比,如"10%",相对于父控件的高度;自动计算,如"auto",根据height值自动计算,相对于父控件垂直居中。
- width: (String
类型
)区域的宽度
可取值:像素值,如"100px";百分比,如"10%",相对于父控件的宽度。
示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>NativeObj Example</title>
<script type="text/javascript">
// H5 plus事件处理
function plusReady(){
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
// 创建原生View控件
var view=null;
function createView(){
view = new plus.nativeObj.View('test',{top:'200px',left:'0px',height:'50%',width:'100%',backgroundColor:'#FF0000'});
view.drawRect("#000000", {top:'25%',left:'25%',width:'50%',height:'50%'}, 'test');
view.show();
}
// 更新原生View控件
function updateView(){
view.setStyle({backgroundColor:'#00FF00'}); // 更新背景颜色
view.drawRect('#FFFFFF', {top:'25%',left:'25%',width:'50%',height:'50%'}, 'test'); // 更新区域
}
// 关闭View控件
function closeView(){
view.close();
view=null;
}
</script>
</head>
<body>
<br/><br/>
<button onclick="createView()">创建View对象</button><br/>
<button onclick="updateView()">更新View对象</button><br/>
<button onclick="closeView()">关闭View对象</button>
</body>
</html>
BitmapSaveSuccessCallback
图片保存操作成功回调接口
void onSuccess( Event event ){
// Code here
var target = event.target; // 保存后的图片url路径,以"file://"开头
var size = event.size; // 保存后图片的大小,单位为字节(Byte)
var width = event.width; // 保存后图片的实际宽度,单位为px
var height = event.height; // 保存后图片的实际高度,单位为px
}
参数:
- event:
(
Event
)
可选 保存后的图片信息
可通过event.target(String类型)获取保存后的图片url路径,以"file://"开头,可直接在html页面中通过src属性引用,如Android平台"file:///storage/sdcard0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/doc/a.jpg",iOS平台"file:///var/mobile/Containers/Data/Application/757966CF-345C-4348-B07F-EEF83CF9A369/Library/Pandora/apps/HBuilder/doc/a.png"; 可通过event.size(Number类型)获取保存后图片的大小,单位为字节(Byte); 可通过event.width(Number类型)获取保存后的图片的实际宽度,单位为px; 可通过event.height(Number类型)获取保存后的图片的实际高度,单位为px。
返回值:
void : 无TouchEventCallback
触屏事件的回调函数
void onEvent(Event e){
// Event handled code.
var clientX = e.clientX;
var clientY = e.clientY;
var pageX = e.pageX;
var pageY = e.pageY;
var screenX = e.screenX;
var screenY = e.screenY;
var target = e.target;
var imageIndex = e.currentImageIndex;
}
参数:
- event:
(
Event
)
必选 触屏数据
Event对象包含以下属性: target:保存触发此事件的对象; clientX:Number类型,保存触摸目标在View控件中的X坐标; clientY:Number类型,保存触摸目标在View控件中的Y坐标; pageX:Number类型,保存触摸目标在当前页面(运行此脚本的窗口)中的X坐标; pageY:Number类型,保存触摸目标在当前页面(运行此脚本的窗口)中的Y坐标; screenX:Number类型,保存触摸目标在屏幕中的X坐标; screenY:Number类型,保存触摸目标在屏幕中的Y坐标; currentImageIndex:Number类型,保存当前图片轮播控件显示的图片索引值(从0开始),仅监听图片轮播控件(ImageSlider)的click事件时包含此属性。
返回值:
void : 无NativeObjSuccessCallback
操作成功回调函数接口
void onSuccess(){
// Code here
}
参数:
无
返回值:
void : 无NativeObjErrorCallback
操作错误回调函数接口
function void onError( Exception error ) {
// Error.
var code = error.code; // 错误编码
var message = error.message; // 错误描述信息
}
参数:
- error:
(
Exception
)
必选 用户选择操作失败信息
可通过error.code(Number类型)获取错误编码; 可通过error.message(String类型)获取错误描述信息。