提示对话框在屏幕上方弹出对话框,为用户显示简单的提示信息。提示对话框仅用于显示提示信息,不与用户交互,一段时间后会自动消失,显示期间用户可以继续操作其它界面元素。
new ToastDialog(this) .setText("吃了吗?您呐!") .setDuration(5000) .setAlignment(LayoutAlignment.CENTER) .setOffset(0, -200) .show();
new ToastDialog(this) .setContentCustomComponent(LayoutScatter .getInstance(this) .parse(ResourceTable.Layout_toast_dialog, null, false)) .setSize(LayoutConfig.MATCH_CONTENT, LayoutConfig.MATCH_CONTENT) .setDuration(5000) .setAlignment(LayoutAlignment.CENTER) .setOffset(0, -200) .show();
例程:ToastDialog
...\ToastDialog\entry\src\main\resources\base\layout\ability_main.xml
<?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:height="match_parent" ohos:width="match_parent" ohos:alignment="center" ohos:orientation="vertical"> <Text ohos:id="$+id:txtDefaultLayout" ohos:height="match_content" ohos:width="match_content" ohos:text="默认布局" ohos:text_size="40vp" /> <Text ohos:id="$+id:txtCustomLayout" ohos:height="match_content" ohos:width="match_content" ohos:text="自定义布局" ohos:text_size="40vp" /> </DirectionalLayout>
...\ToastDialog\entry\src\main\resources\base\graphic\background_toast_dialog.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:shape="rectangle"> <solid ohos:color="#acff7f27"/> <corners ohos:radius="15vp"/> </shape>
...\ToastDialog\entry\src\main\resources\base\layout\toast_dialog.xml
<?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:height="match_content" ohos:width="match_content" ohos:left_padding="20vp" ohos:top_padding="5vp" ohos:right_padding="20vp" ohos:bottom_padding="5vp" ohos:background_element="$graphic:background_toast_dialog"> <Text ohos:height="match_content" ohos:width="match_content" ohos:text="吃了吗?您呐!" ohos:text_size="24vp" ohos:text_color="#ffffff" /> </DirectionalLayout>
...\ToastDialog\entry\src\main\java\com\minwei\toastdialog\slice\MainAbilitySlice.java
public class MainAbilitySlice extends AbilitySlice { @Override public void onStart(Intent intent) { ... findComponentById(ResourceTable.Id_txtDefaultLayout) .setClickedListener(component -> { new ToastDialog(this) .setText("吃了吗?您呐!") .setDuration(5000) .setAlignment(LayoutAlignment.CENTER) .setOffset(0, -200) .show(); }); findComponentById(ResourceTable.Id_txtCustomLayout) .setClickedListener(component -> { new ToastDialog(this) .setContentCustomComponent(LayoutScatter .getInstance(this) .parse(ResourceTable.Layout_toast_dialog, null, false)) .setSize(LayoutConfig.MATCH_CONTENT, LayoutConfig.MATCH_CONTENT) .setDuration(5000) .setAlignment(LayoutAlignment.CENTER) .setOffset(0, -200) .show(); }); } ... }
运行效果如下图所示:
String[] week = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"}; ListDialog listDialog = new ListDialog(this); listDialog.setTitleText("一个星期有七天:"); listDialog.setItems(week); listDialog.setAutoClosable(true); listDialog.setButton(0, "确定", new IDialog.ClickedListener() { @Override public void onClick(IDialog iDialog, int i) { listDialog.destroy(); } }); listDialog.show(); listDialog.getListContainer().setPaddingLeft(190);
private int selectedId = 0; ListDialog listDialog = new ListDialog(this, ListDialog.SINGLE); listDialog.setTitleText("选择一天去嗨皮:"); listDialog.setSingleSelectItems(week, selectedId); listDialog.setOnSingleSelectListener( new IDialog.ClickedListener() { @Override public void onClick(IDialog iDialog, int i) { selectedId = i; } }); listDialog.setAutoClosable(true); listDialog.setButton(0, "确定", new IDialog.ClickedListener() { @Override public void onClick(IDialog iDialog, int i) { ((Text)findComponentById( ResourceTable.Id_txtSingleSelected)) .setText(week[selectedId]); listDialog.destroy(); } }); listDialog.setButton(1, "取消", new IDialog.ClickedListener() { @Override public void onClick(IDialog iDialog, int i) { listDialog.destroy(); } }); listDialog.show(); listDialog.getListContainer().setPaddingLeft(140);
private boolean selectedItems[] = { false, true, false, true, false, true, false}; ListDialog listDialog = new ListDialog(this, ListDialog.MULTI); listDialog.setTitleText("多嗨几天又如何:"); listDialog.setMultiSelectItems(week, selectedItems); listDialog.setAutoClosable(true); listDialog.setButton(0, "确定", new IDialog.ClickedListener() { @Override public void onClick(IDialog iDialog, int i) { String multiSelected = new String(); for (i = 0; i < selectedItems.length; ++i) if (selectedItems[i] = ((Checkbox)listDialog .getItemComponent(i)).isChecked()) multiSelected += week[i] + " "; ((Text)findComponentById( ResourceTable.Id_txtMultiSelected)) .setText(multiSelected); listDialog.destroy(); } }); listDialog.setButton(1, "取消", new IDialog.ClickedListener() { @Override public void onClick(IDialog iDialog, int i) { listDialog.destroy(); } }); listDialog.show(); listDialog.getListContainer().setPaddingLeft(140);
例程:ListDialog
...\ListDialog\entry\src\main\resources\base\layout\ability_main.xml
<?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:height="match_parent" ohos:width="match_parent" ohos:alignment="center" ohos:orientation="vertical"> <Text ohos:id="$+id:txtNormalList" ohos:height="match_content" ohos:width="match_content" ohos:text="普通列表" ohos:text_size="40vp" /> <Text ohos:id="$+id:txtSingleList" ohos:height="match_content" ohos:width="match_content" ohos:text="单选列表" ohos:text_size="40vp" /> <Text ohos:id="$+id:txtSingleSelected" ohos:height="match_content" ohos:width="match_content" ohos:text_size="30vp" ohos:text_color="#0000ff" /> <Text ohos:id="$+id:txtMultiList" ohos:height="match_content" ohos:width="match_content" ohos:text="多选列表" ohos:text_size="40vp" /> <Text ohos:id="$+id:txtMultiSelected" ohos:height="match_content" ohos:width="match_parent" ohos:multiple_lines="true" ohos:text_size="30vp" ohos:text_color="#008800" ohos:text_alignment="center" /> </DirectionalLayout>
...\ListDialog\entry\src\main\java\com\minwei\listdialog\slice\MainAbilitySlice.java
public class MainAbilitySlice extends AbilitySlice { private int selectedId = 0; private boolean selectedItems[] = { false, true, false, true, false, true, false}; @Override public void onStart(Intent intent) { ... String[] week = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"}; findComponentById(ResourceTable.Id_txtNormalList) .setClickedListener(component -> { ListDialog listDialog = new ListDialog(this); listDialog.setTitleText("一个星期有七天:"); listDialog.setItems(week); listDialog.setAutoClosable(true); listDialog.setButton(0, "确定", new IDialog.ClickedListener() { @Override public void onClick(IDialog iDialog, int i) { listDialog.destroy(); } }); listDialog.show(); listDialog.getListContainer().setPaddingLeft(190); }); findComponentById(ResourceTable.Id_txtSingleList) .setClickedListener(component -> { ListDialog listDialog = new ListDialog(this, ListDialog.SINGLE); listDialog.setTitleText("选择一天去嗨皮:"); listDialog.setSingleSelectItems(week, selectedId); listDialog.setOnSingleSelectListener( new IDialog.ClickedListener() { @Override public void onClick(IDialog iDialog, int i) { selectedId = i; } }); listDialog.setAutoClosable(true); listDialog.setButton(0, "确定", new IDialog.ClickedListener() { @Override public void onClick(IDialog iDialog, int i) { ((Text)findComponentById( ResourceTable.Id_txtSingleSelected)) .setText(week[selectedId]); listDialog.destroy(); } }); listDialog.setButton(1, "取消", new IDialog.ClickedListener() { @Override public void onClick(IDialog iDialog, int i) { listDialog.destroy(); } }); listDialog.show(); listDialog.getListContainer().setPaddingLeft(140); }); findComponentById(ResourceTable.Id_txtMultiList) .setClickedListener(component -> { ListDialog listDialog = new ListDialog(this, ListDialog.MULTI); listDialog.setTitleText("多嗨几天又如何:"); listDialog.setMultiSelectItems(week, selectedItems); listDialog.setAutoClosable(true); listDialog.setButton(0, "确定", new IDialog.ClickedListener() { @Override public void onClick(IDialog iDialog, int i) { String multiSelected = new String(); for (i = 0; i < selectedItems.length; ++i) if (selectedItems[i] = ((Checkbox)listDialog .getItemComponent(i)).isChecked()) multiSelected += week[i] + " "; ((Text)findComponentById( ResourceTable.Id_txtMultiSelected)) .setText(multiSelected); listDialog.destroy(); } }); listDialog.setButton(1, "取消", new IDialog.ClickedListener() { @Override public void onClick(IDialog iDialog, int i) { listDialog.destroy(); } }); listDialog.show(); listDialog.getListContainer().setPaddingLeft(140); }); } ... }
运行效果如下图所示:
利用剪贴板可以实现跨应用程序的数据交换。只有拥有焦点的窗口(AbilitySlice)可以使用剪贴板。
SystemPasteboard pasteboard = SystemPasteboard.getSystemPasteboard(this);
pasteboard.setPasteData(PasteData.creatPlainTextData( ((Text)findComponentById(ResourceTable.Id_txtCopy)) .getText()));
PasteData pasteData = pasteboard.getPasteData(); if (pasteData.getProperty().hasMimeType( PasteData.MIMETYPE_TEXT_PLAIN)) for (int i = 0; i < pasteData.getRecordCount(); ++i) { Record record = pasteData.getRecordAt(i); if (record.getMimeType().equals( PasteData.MIMETYPE_TEXT_PLAIN)) { ((Text)findComponentById(ResourceTable.Id_txtPaste)) .setText(record.getPlainText().toString()); break; } }
例程:Pasteboard
...\Pasteboard\entry\src\main\resources\base\layout\ability_main.xml
<?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:height="match_parent" ohos:width="match_parent" ohos:alignment="center" ohos:orientation="vertical" ohos:background_element="#000000"> <Text ohos:id="$+id:txtCopy" ohos:height="match_content" ohos:width="match_content" ohos:text="我挥一挥衣袖,不带走一片云彩" ohos:text_size="20fp" ohos:text_color="#00a2e8" /> <Text ohos:id="$+id:txtPaste" ohos:height="match_content" ohos:width="match_content" ohos:text="点击复制按钮,再点击粘贴按钮" ohos:text_size="20fp" ohos:text_color="#ff7f27" /> <DirectionalLayout ohos:height="match_content" ohos:width="match_content" ohos:top_margin="20vp" ohos:orientation="horizontal"> <Button ohos:id="$+id:btnCopy" ohos:height="match_content" ohos:width="match_content" ohos:left_padding="10vp" ohos:right_padding="10vp" ohos:top_padding="5vp" ohos:bottom_padding="5vp" ohos:background_element="#00a2e8" ohos:text="复制" ohos:text_size="20fp" ohos:text_color="#ffffff" /> <Button ohos:id="$+id:btnPaste" ohos:height="match_content" ohos:width="match_content" ohos:left_padding="10vp" ohos:right_padding="10vp" ohos:top_padding="5vp" ohos:bottom_padding="5vp" ohos:left_margin="20vp" ohos:background_element="#ff7f27" ohos:text="粘贴" ohos:text_size="20fp" ohos:text_color="#ffffff" /> </DirectionalLayout> </DirectionalLayout>
...\Pasteboard\entry\src\main\java\com\minwei\pasteboard\slice\MainAbilitySlice.java
public class MainAbilitySlice extends AbilitySlice { @Override public void onStart(Intent intent) { ... findComponentById(ResourceTable.Id_btnCopy) .setClickedListener(new ClickedListener() { @Override public void onClick(Component component) { copy(); } }); findComponentById(ResourceTable.Id_btnPaste) .setClickedListener(new ClickedListener() { @Override public void onClick(Component component) { paste(); } }); } ... private void copy() { SystemPasteboard pasteboard = SystemPasteboard.getSystemPasteboard(this); if (pasteboard == null) return; pasteboard.setPasteData(PasteData.creatPlainTextData( ((Text)findComponentById(ResourceTable.Id_txtCopy)) .getText())); } private void paste() { SystemPasteboard pasteboard = SystemPasteboard.getSystemPasteboard(this); if (pasteboard == null) return; PasteData pasteData = pasteboard.getPasteData(); if (pasteData == null) return; if (!pasteData.getProperty().hasMimeType( PasteData.MIMETYPE_TEXT_PLAIN)) return; for (int i = 0; i < pasteData.getRecordCount(); ++i) { Record record = pasteData.getRecordAt(i); if (record.getMimeType().equals( PasteData.MIMETYPE_TEXT_PLAIN)) { ((Text)findComponentById(ResourceTable.Id_txtPaste)) .setText(record.getPlainText().toString()); break; } } } }
运行效果如下图所示: