您的位置:首页 > Web前端 > JavaScript

各种dialog,alertdialog,AlertDialog.Builder(this)的总结,并封住成javaScript调用

2011-05-26 22:05 239 查看
package com.emn.emf.android.basecommands.loading;

import org.json.JSONException;

import org.json.JSONObject;

import android.app.AlertDialog;

import android.app.Dialog;

import android.app.ProgressDialog;

import android.content.Context;

import android.content.DialogInterface;

import android.os.Bundle;

import android.os.Handler;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.TextView;

import com.emn.emf.android.AndroidBaseActivity;

import com.emn.emf.android.CommandObject;

import com.emn.emf.android.R;

public class Loading extends AndroidBaseActivity implements CommandObject {

private ProgressDialog myDialog2 = null;

private ProgressDialog myDialogTime = null;

private long time = 0,time2 = 0,time3 = 0;

private CustomDialog cd;

private Dialog cd2;

public AlertDialog alertDialog;

private String showCenterTipTitle = "",showCenterTipTitle2 = "",showCenterTipTitle3 = "",showCenterTipTitle4 = "";

private String showCenterTipTime = "",showCenterTipTime2 = "",showCenterCallback3 = null,showCenterTipContent3 = "";

private String showCenterTipContent = "",showCenterTipContent2 = "" ,showCenterTipTimeTitle = "";;

private String showCenterCallback4 = null,showCenterTipContent4 = "";

private String showCenterTipTimeTime = "",showCenterTipTiemContent = "",showCenterCallback = "";

private Handler mHandler = new Handler();

@Override

public Boolean checkValidation(String checkCommand, Object parameters) {

// TODO Auto-generated method stub

return Boolean.TRUE;

}

/*

* (non-Javadoc)

* @see com.emn.emf.android.CommandObject#handleIt(java.lang.String, java.lang.Object)

*/

@Override

public Object handleIt(String checkCommand, Object parameters) {

String jsonstartLoad = "";

if (checkCommand.equals("startLoad")) {

jsonstartLoad = getStartLoad(parameters);

} else if (checkCommand.equals("finishLoad")) {

jsonstartLoad = getFinishLoading();

} else if (checkCommand.equals("showCenterTipMyTwoButton")) {

jsonstartLoad = getshowCenterTipMyTwoButton(parameters);

} else if (checkCommand.equals("showCenterTipMyTime")) {

jsonstartLoad = getshowCenterTipMyTime(parameters);

} else if (checkCommand.equals("showCenterTipButtonTwo")) {

jsonstartLoad = getshowCenterTipButtonTwo(parameters);

}

else if (checkCommand.equals("showCenterTipButtonOne")) {

jsonstartLoad = getshowCenterTipBttonOne(parameters);

}else if (checkCommand.equals("showCenterTipTimeSystem")) {

jsonstartLoad = getshowCenterTipTimeSystem(parameters);

}

return jsonstartLoad;

}

/*

* 启动对话框,带有系统默认旋转图片,可以自定义标题,和内容提示部分。

*/

private String getStartLoad(Object parameters) {

String loadingTitle = "";

String loadingContent = "";

String strJSONParam = parameters.toString();

JSONObject jsonObject;

try {

jsonObject = new JSONObject(strJSONParam);

loadingTitle = jsonObject.getString("title");

loadingContent = jsonObject.getString("content");

} catch (JSONException e1) {

e1.printStackTrace();

}

CharSequence strDialogTitle = (CharSequence) loadingTitle;

CharSequence strDialogBody = (CharSequence) loadingContent;

// 显示Progress对话框

myDialog2 = ProgressDialog.show(AndroidBaseActivity.self,

strDialogTitle, strDialogBody, true);

return "{states:success}";

}

/*

* 加载Loading效果,你可以自定义指定标题,内容。但没有自动取消。

* 如果需要取消需要调用JS方法finishLoading()进行取消。

*/

private String getshowCenterTipTimeSystem(Object parameters) {

String strJSONParam = parameters.toString();

JSONObject jsonObject;

try {

jsonObject = new JSONObject(strJSONParam);

showCenterTipTimeTitle = jsonObject.getString("title");

showCenterTipTimeTime = jsonObject.getString("time");

showCenterTipTiemContent = jsonObject.getString("content");

time2 = Long.parseLong(showCenterTipTimeTime);

} catch (JSONException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

CharSequence strDialogTitle = (CharSequence) showCenterTipTimeTitle;

CharSequence strDialogBody = (CharSequence) showCenterTipTiemContent;

// 显示Progress对话框

myDialogTime = ProgressDialog.show(AndroidBaseActivity.self,

strDialogTitle, strDialogBody, true);

new Thread() {

public void run() {

try {

sleep(time2);

} catch (Exception e) {

e.printStackTrace();

} finally { // 卸载所创建的myDialog对象。

myDialogTime.dismiss();

}

}

}.start(); // 开始运行运行线程

return "{states:success}";

}

/*

* 取消Loading效果,和getshowCenterTipTime(Object parameters)配对使用。

*/

private String getFinishLoading() {

if(myDialog2 == null) {

return "{states:success}";

}

myDialog2.dismiss();

return "{states:success}";

}

/*

* 自定义dialog,按确定,可以指定执行JS方法,可以指定标题,内容。

* 暂时不支持指定时间,需要的话可以随时添加;

*/

private String getshowCenterTipMyTwoButton(Object parameters) {

String strJSONParam = parameters.toString();

JSONObject jsonObject;

try {

jsonObject = new JSONObject(strJSONParam);

showCenterTipTitle = jsonObject.getString("title");

showCenterTipTime = jsonObject.getString("time");

showCenterTipContent = jsonObject.getString("content");

showCenterCallback = jsonObject.getString("callback");

time = Long.parseLong(showCenterTipTime);

} catch (JSONException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

cd = new CustomDialog(AndroidBaseActivity.self);

cd.show();

return "{states:success}";

}

/*

* 自定义对话框

*/

class CustomDialog extends Dialog {

public CustomDialog(Context context) {

super(context);

}

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.custom_dialog);

setTitle(showCenterTipTitle);

TextView text = (TextView) findViewById(R.id.text);

text.setText(showCenterTipContent);

ImageView image = (ImageView) findViewById(R.id.image);

image.setImageResource(R.drawable.icon);

Button buttonYes = (Button) findViewById(R.id.button_yes);

buttonYes.setHeight(5);

buttonYes.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v) {

dismiss();

mHandler.post(new Runnable() {

public void run() {

getWebView().loadUrl(

"javascript:" + showCenterCallback);

}

});

}

});

Button buttonNo = (Button) findViewById(R.id.button_no);

buttonNo.setSingleLine(true);

buttonNo.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v) {

dismiss();

}

});

}

}

/*

* 自定义dialog,可以指定执行时间长度,标题,内容部分支持最大48*48像素PNG图片。

*

*/

private String getshowCenterTipMyTime(Object parameters) {

String strJSONParam = parameters.toString();

JSONObject jsonObject;

try {

jsonObject = new JSONObject(strJSONParam);

showCenterTipTitle2 = jsonObject.getString("title");

showCenterTipTime2 = jsonObject.getString("time");

showCenterTipContent2 = jsonObject.getString("content");

// showCenterCallback = jsonObject.getString("callback");

time3 = Long.parseLong(showCenterTipTime2);

} catch (JSONException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

cd2 = new CustomDialog2(AndroidBaseActivity.self);

cd2.setContentView(R.layout.custom_dialog2);

cd2.setTitle(showCenterTipTitle2);

cd2.show();

new Thread() {

public void run() {

try {

sleep(time3);

} catch (Exception e) {

e.printStackTrace();

} finally { // 卸载所创建的myDialog对象。

cd2.dismiss();

}

}

}.start(); // 开始运行运行线程

return "{states:success}";

}

class CustomDialog2 extends Dialog {

public CustomDialog2(Context context) {

super(context);

}

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.custom_dialog2);

TextView text = (TextView) findViewById(R.id.text);

text.setText(showCenterTipContent2);

ImageView image = (ImageView) findViewById(R.id.image);

image.setImageResource(R.drawable.icon);

}

}

/*

* 系统dialog的封装,可以指定执行时间,标题,内容。

* 有确定按钮,和取消按钮,点击确定时执行一个JS方法,取消不执行。

*

*/

private String getshowCenterTipButtonTwo(Object parameters) {

String strJSONParam = parameters.toString();

JSONObject jsonObject;

try {

jsonObject = new JSONObject(strJSONParam);

showCenterTipTitle3 = jsonObject.getString("title");

//showCenterTipTime3 = jsonObject.getString("time");

showCenterTipContent3 = jsonObject.getString("content");

showCenterCallback3 = jsonObject.getString("callback");

//time4 = Long.parseLong(showCenterTipTime3);

} catch (JSONException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

new AlertDialog.Builder(AndroidBaseActivity.self)

.setTitle(showCenterTipTitle3)//.setView(view)

.setMessage(showCenterTipContent3)

.setPositiveButton("确定",

new DialogInterface.OnClickListener(){

public void onClick(

DialogInterface dialoginterface, int i){

getWebView().loadUrl(

"javascript:" + showCenterCallback3);

}

})

.setNegativeButton("取消",

new DialogInterface.OnClickListener(){

public void onClick(

DialogInterface dialoginterface, int i){

}

})

.show();

return "{states:success}";

}

/*

* 系统dialog的封装,可以指定执行时间,标题,内容。

* 只有确定按钮,,点击确定时执行一个JS方法。

*

*/

private String getshowCenterTipBttonOne(Object parameters) {

String strJSONParam = parameters.toString();

JSONObject jsonObject;

try {

jsonObject = new JSONObject(strJSONParam);

showCenterTipTitle4 = jsonObject.getString("title");

//showCenterTipTime3 = jsonObject.getString("time");

showCenterTipContent4 = jsonObject.getString("content");

showCenterCallback4 = jsonObject.getString("callback");

//time4 = Long.parseLong(showCenterTipTime3);

} catch (JSONException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

new AlertDialog.Builder(AndroidBaseActivity.self)

.setTitle(showCenterTipTitle4)//.setView(view)

.setMessage(showCenterTipContent4)

.setPositiveButton("确定",

new DialogInterface.OnClickListener(){

public void onClick(

DialogInterface dialoginterface, int i){

getWebView().loadUrl(

"javascript:" + showCenterCallback4);

}

})

.show();

return "{states:success}";

}

}

2.custom_dialog.xml的代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/layout_root"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@drawable/bg3"

android:padding="10dp"

>

<LinearLayout

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:padding="2px"

>

<ImageView android:id="@+id/image"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginRight="2dp"

/>

<TextView android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textColor="#FFF"

android:paddingTop="12dp"

/>

</LinearLayout>

<LinearLayout

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:padding="5px"

>

<Button

android:id="@+id/button_yes"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text=" 确定 "

/>

<Button

android:id="@+id/button_no"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text=" 取消 "

/>

</LinearLayout>

</LinearLayout>

3.custom_dialog2.xml的代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:padding="10dp"

android:background="@drawable/bg3"

>

<LinearLayout

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_weight="2"

android:padding="2px"

>

<ImageView android:id="@+id/image"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginRight="2dp"

/>

<TextView android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:paddingTop="18px"

android:gravity="center_horizontal"

/>

</LinearLayout>

</LinearLayout>

4.main.js代码

//加载效果,你可以自定义指定标题,内容。但没有自动取消。如果需要取消需要调用JS方法finishLoading()

function getStartLoading(){

return emf.makeCall('startLoading.startLoad', "{title:'联系人',content:'请您稍等正在加载联系人...'}");

}

//与上面方法一对,负责关闭上面的方法。

function finishLoading(){

return emf.makeCall('startLoading.finishLoad', "{}");

}

//自定义dialog,可以指定执行JS方法,可以指定标题,内容。暂时不支持指定时间,需要的话可以随时添加

function showCenterTipMyTwoButton(){

return emf.makeCall('startLoading.showCenterTipMyTwoButton', "{title:'操作成功',content:'操作成功信息部分',time:'5000',callback:'showCenterTipMyTime()'}");

}

//自定义dialog,可以指定执行时间,标题,内容。内容部分支持最大48*48像素PNG图片

function showCenterTipMyTime(){

return emf.makeCall('startLoading.showCenterTipMyTime', "{title:'操作成功时间',content:'时间操作成功信息部分',time:'5000'}");

}

//系统dialog的封装,可以指定执行时间,标题,内容。有确定,执行一个JS方法,取消不执行。

function showCenterTipButtonTwo(){

return emf.makeCall('startLoading.showCenterTipButtonTwo', "{title:'操作标题',content:'时间操作成功信息部分呵呵!',callback:'showCenterTipButtonOne()'}");

}

function showCenterTipButtonOne(){

return emf.makeCall('startLoading.showCenterTipButtonOne', "{title:'操作标题',content:'时间操作成功信息部分呵呵!',callback:'showCenterTipButtonTwo()'}");

}

//系统自带的Dialog,但可以指定执行时间,标题,内容。

function showCenterTipTimeSystem(){

return emf.makeCall('startLoading.showCenterTipTimeSystem', "{title:'恭喜操作成功',content:'操作成功信息部分',time:'5000'}");

}

5.index.html页面代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<title>EMF</title>

<base href="mobile/">

<meta http-equiv="content-type" content="text/html; charset=utf-8">

<script type="text/javascript" src=\'#\'" ///android_asset/main.js"

charset="utf-8"></script>

</head>

<body>

<label id='testlabel'>123 </label>

<br />

<br />

<input type="button" value="getStartLoading()" />

<input type="button" value="showCenterTipMyTwoButton()" />

<input type="button" value="showCenterTipMyTime()" />

<input type="button" value="showCenterTipTimeSystem()" />

<input type="button" value="showCenterTipButtonTwo()" />

<input type="button" value="showCenterTipButtonOne()" />

<br />

</body>

<script type="text/javascript">

//function showCenterTipTest(){

//}

//testlabel.innerText += "abc:" + getDownload();

//getStartLoading();

// window.setTimeout('finishLoading()',6000)

//testlabel.innerText = emf.makeCall('telePhone', '{query:query}');

//testlabel.innerText = "abc:" + getContactsId();

//testlabel.innerText += "abc:" + getDownload();

//testlabel.innerText += "abc:" + getStartLoading();

</script>

</html>

本文出自 “android iOS” 博客,请务必保留此出处http://lovely1133.blog.51cto.com/1612511/575033
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: