public
class
Images
extends
Graphics2DActivity
implements
OnClickListener{
private
Button btnImages;
private
int
[] imageDuke;
static
final
private
int
IMAGE_DIALOG=
1
;
int
w, h;
int
offX, offY;
int
alpha =
128
;
FontEx font = FontEx.getSystemFont();
int
fontSize =
24
;
Pen pen =
new
Pen(Color.RED,
2
);
char
[] message =
"Guidebee"
.toCharArray();
int
widthOfMessage =
0
;
private
int
numlocs =
2
;
private
int
numcells = numlocs * numlocs;
private
int
[] cells;
int
cw, ch;
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.images);
graphic2dView = (GuidebeeGraphics2DView)
findViewById(R.id.graphics2dview);
btnImages = (Button) findViewById(R.id.btnImages);
btnImages.setOnClickListener(
this
);
Bitmap bitmap
= BitmapFactory.decodeResource(getResources(),
R.drawable.duke_skateboard);
imageDuke =
new
int
[bitmap.getHeight()
* bitmap.getWidth()];
bitmap.getPixels(imageDuke,
0
, bitmap.getWidth(),
0
,
0
,
bitmap.getWidth(), bitmap.getHeight());
widthOfMessage = font.charsWidth(message,
0
,
message.length, fontSize);
w=bitmap.getWidth();
h=bitmap.getHeight();
offX = (SharedGraphics2DInstance.CANVAS_WIDTH - w) /
2
;
offY = (SharedGraphics2DInstance.CANVAS_HEIGHT - h) /
2
;
cw = w / numlocs;
ch = h / numlocs;
cells =
new
int
[numcells];
for
(
int
i =
0
; i < numcells; i++) {
cells[i] = i;
}
}
private
void
drawJumbleImage(){
Random rand =
new
Random();
int
ri;
for
(
int
i =
0
; i < numcells; i++) {
while
((ri = rand.nextInt(numlocs)) == i) {
}
int
tmp = cells[i];
cells[i] = cells[ri];
cells[ri] = tmp;
}
graphics2D.clear(Color.WHITE);
graphics2D.Reset();
int
dx, dy;
for
(
int
x =
0
; x < numlocs; x++) {
int
sx = x * cw;
for
(
int
y =
0
; y < numlocs; y++) {
int
sy = y * ch;
int
cell = cells[x * numlocs + y];
dx = (cell / numlocs) * cw;
dy = (cell % numlocs) * ch;
graphics2D.drawImage(imageDuke, w, h,
dx + offX, dy + offY,
sx, sy, cw, ch);
}
}
graphic2dView.refreshCanvas();
}
private
void
drawSeeThroughImage(){
alpha +=
16
;
if
(alpha>
255
) alpha=
0
;
graphics2D.clear(Color.WHITE);
graphics2D.Reset();
graphics2D.setDefaultPen(pen);
graphics2D.drawChars(font, fontSize, message,
0
, message.length, offX
+ (w - widthOfMessage) /
2
, offY + h /
2
);
graphics2D.drawImage(imageDuke, w, h,
offX, offY,
0xFFFF00FF
, alpha);
graphic2dView.refreshCanvas();
}
protected
Dialog onCreateDialog(
int
id) {
Dialog dialog;
switch
(id) {
case
IMAGE_DIALOG:
final
CharSequence[] items = {
"DrawMap"
,
"JumbleImage"
,
"SeeThroughImage"
};
AlertDialog.Builder builder
=
new
AlertDialog.Builder(
this
);
builder.setTitle(
"Images"
);
builder.setSingleChoiceItems(items,
-
1
,
new
DialogInterface.OnClickListener() {
public
void
onClick(DialogInterface dialog,
int
item) {
switch
(item){
case
0
:
break
;
case
1
:
drawJumbleImage();
break
;
case
2
:
drawSeeThroughImage();
break
;
}
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
dialog=alert;
break
;
default
:
dialog =
null
;
}
return
dialog;
}
@Override
protected
void
drawImage() {
drawJumbleImage();
}
@Override
public
void
onClick(View view) {
showDialog(IMAGE_DIALOG);
}
}
相关推荐
在Android开发中,Dialog是一种非常重要的UI组件,它用于向用户显示临时信息或者与用户进行交互。本示例“Pro Android学习:Dialog小例子”旨在深入解析如何在Android应用程序中创建和使用Dialogs,以及与Fragment...
本教程将详细讲解如何创建一个全屏显示且带有动画效果的自定义Dialog,并结合相机和图片选择的使用场景进行演示。 首先,我们需要了解Android Dialog的基础知识。Dialog是Android系统提供的一种轻量级窗口,通常...
在Android开发中,有时我们可能需要创建具有独特设计和功能的对话框,以满足特定的用户界面需求。这里我们将深入探讨两种实现自定义显示内容的Dialog的方法:继承Dialog和继承PopupWindow。 首先,我们来看继承...
例如,使用`AlertDialog.Builder`创建一个简单的Dialog: ```java AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("标题") .setMessage("内容") .setPositiveButton("确定",...
Android开发实战经典_020703_对话框:Dialog源代码和视频教程.zip
在Android开发中,Dialog是一种常见的用户交互界面,用于在主线程中显示临时信息或进行简单的用户操作。默认情况下,Dialog会出现在屏幕中央,但开发者可以根据需求自定义其样式和显示位置。本文将深入探讨如何在...
对于输入验证,可以在输入错误时阻止`dismiss()`的调用,并显示错误提示,待用户修正错误后再关闭Dialog: ```java AlertDialog.Builder builder = new AlertDialog.Builder(context); // ... 设置其他属性和内容 ...
各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果...
在Android开发中,Dialog是一种非常常见的用户交互组件,它用于显示一些临时信息或者进行简单的用户操作。当系统默认的Dialog样式不能满足应用的特定需求时,开发者常常会选择自定义Dialog来实现更个性化的界面和...
在Android开发中,"Dialog显示放大图片"是一个常见的需求,特别是在用户需要查看详细图像时。这一功能使得用户可以在不离开当前界面的情况下,通过一个半透明的弹出窗口(Dialog)来查看图片的全貌,同时支持滑动...
在Android开发中,底部弹出Dialog是一种常见的交互方式,它用于显示临时信息或者提供用户一些简短的操作选项。本文将详细讲解如何实现一个带有动画效果的底部弹出Dialog,并通过具体的代码实例进行演示。 首先,...
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> android:id="@+...
本例知识点:Dialog透明,圆角,及GridView的简单用法。 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > ...
android自定义Dialog下载文件 ,在自定义的Dialog上显示文件下载的速度和ProgressBar进度,共享给大家! 欢迎指点提议 Email:vipa1888@163.com QQ 840950105 Author: spring sky
本文将深入讲解如何在Android的Dialog中生成并显示二维码,以及如何处理点击Dialog外部以关闭Dialog的事件。 首先,我们需要了解二维码生成的基本原理。二维码(Quick Response Code)是一种二维条形码,能够存储比...
以下是一份详细的Android开发教程,将介绍如何实现这些效果。 首先,我们来讨论如何控制Dialog的背景。有两种主要方法: 1. 定义一个无背景主题: 在`res/values/styles.xml`文件中,创建一个新的样式`...
在Android开发中,自定义Dialog是一种常见的需求,用于提供一种轻量级的用户交互界面,如提示信息或者进行选择操作。本示例是关于如何创建一个具有多选功能的Dialog,结合了Dialog、ListView和CheckBox的使用。下面...
在Android开发中,Dialog是一个非常重要的组件,它用于在用户界面中显示临时的窗口,用于显示消息、警告或请求用户的输入。这篇开发笔记主要讲解了如何有效地使用Android中的Dialog,并提出了若干注意事项,以确保...