易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
Android开发经验之在图片上随意点击移动文字
只要在图片范围之内,文字可随意点击移动。
package
xiaosi.GetTextImage;
import
Android.content.Context;
import
android.content.res.Resources;
import
android.graphics.Bitmap;
import
android.graphics.BitmapFactory;
import
android.graphics.Canvas;
import
android.graphics.Paint;
import
android.util.DisplayMetrics;
import
android.view.MotionEvent;
import
android.view.View;
import
android.view.WindowManager;
public
class
GetTextImage
extends
View
{
private
float
x =
20
, y =
40
;
private
static
float
windowWidth;
private
static
float
windowHeight;
private
static
float
left =
0
;
//图片在屏幕中位置X坐标
private
static
float
top =
0
;
//图片在屏幕中位置Y坐标
private
String str =
"我爱你"
;
private
DisplayMetrics dm =
new
DisplayMetrics();
//用于获取屏幕的高度和宽度
private
WindowManager windowManager;
private
Bitmap newbitmap;
public
GetTextImage(Context context)
{
super
(context);
windowManager = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
//屏幕的宽度
windowWidth = windowManager.getDefaultDisplay().getWidth();
//屏幕的高度
windowHeight = windowManager.getDefaultDisplay().getHeight();
}
public
void
onDraw(Canvas canvas)
{
Resources res = getResources();
Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.b);
newbitmap = getTextImage(bmp, str, x, y);
canvas.drawBitmap(newbitmap,
0
,
0
,
null
);
}
/**
* 返回值: Bitmap 参数:原图片,文字 功能: 根据给定的文字生成相应图片
*
* @param originalMap
* @param text 文字
* @param x 点击的X坐标
* @param y 点击的Y坐标
* @return
*/
public
static
Bitmap getTextImage(Bitmap originalMap, String text,
float
x,
float
y)
{
float
bitmapWidth = originalMap.getWidth();
float
bitmapHeight = originalMap.getHeight();
// 定义画布
Canvas canvas =
new
Canvas(originalMap);
// 定义画笔
Paint paint =
new
Paint();
//获得文本的长度(像素)
float
textWidth = paint.measureText(text);
canvas.drawBitmap(originalMap,
0
,
0
,
null
);
// 如果图片宽度小于屏幕宽度
if
(left + bitmapWidth < windowWidth)
{
// 右边界
if
(x >= left + bitmapWidth - textWidth)
{
x = left + bitmapWidth - textWidth;
}
// 左边界
else
if
(x <= left)
{
x = left;
}
}
else
{
// 右边界
if
(x >= windowWidth - textWidth)
{
x = windowWidth - textWidth;
}
// 左边界
else
if
(x <=
0
)
{
x =
0
;
}
}
// 如果图片高度小于屏幕高度
if
(top + bitmapHeight < windowHeight)
{
// 下
if
(y >= top + bitmapHeight)
{
y = top + bitmapHeight;
}
// 上
else
if
(y <= top +
10
)
{
y = top +
10
;
}
}
else
{
if
(y >= windowHeight)
{
y = windowHeight;
}
else
if
(y <=
0
)
{
y =
0
;
}
}
// 添加字
canvas.drawText(text, x, y, paint);
return
originalMap;
}
@Override
public
boolean
onTouchEvent(MotionEvent event)
{
if
(event.getAction() == MotionEvent.ACTION_DOWN)
{
x = event.getX();
y = event.getY();
// 重绘
invalidate();
}
return
true
;
}
}
package
xiaosi.GetTextImage;
import
android.app.Activity;
import
android.os.Bundle;
public
class
GetTextImageActivity
extends
Activity {
/** Called when the activity is first created. */
private
GetTextImage get;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
get =
new
GetTextImage(
this
);
setContentView(get);
}
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图