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);
- }
- }
Android开发经验之在图片上随意点击移动文字的更多相关文章
- android中实现在ImageView上随意画线涂鸦
我实现的思路: 1.继承ImageView类 2.重写onTouchEvent方法,在ACTION_MOVE(即移动时),记录下所经过的点坐标,在ACTION_UP时(即手指离开时,这时一条线已经画完 ...
- Android 使用Canvas在图片上绘制文字
一个小应用,在图片上绘制文字,以下是绘制文字的方法,并且能够实现自动换行,字体自动适配屏幕大小 private void drawNewBitmap(ImageView imageView, Stri ...
- android BadgeView的使用(图片上的文字提醒)
BadgeView主要是继承了TextView,所以实际上就是一个TextView,底层放了一个label,可以自定义背景图,自定义背景颜色,是否显示,显示进入的动画效果以及显示的位置等等: 这是Gi ...
- Android模仿QQ空间图片上传——原理
MainActivity.class package com.example.imagedemotext; import java.io.ByteArrayOutputStream; import j ...
- Android EditText中插入图片并响应点击事件
EditText中插入图片基本就是两种方法: ,通过Html.fromHtml(..)来实现 [mw_shl_code=java,true]eText.append(Html.fromHtml(&qu ...
- Formdata 图片上传 Ajax
/*图片上传*/ $("点击对象").bind("click", function(e){ $('#form-upload').remove(); $('bod ...
- CSS实现文字半透明显示在图片上方法
CSS实现文字半透明显示在图片上方法 在css中文字半透明我们会需要使用滤镜效果也就是css中的filter:alpha来实现了,下面来看两个文字显示在图片上并且半透明的例子. CSS让一行文字显示在 ...
- android 加载自定义图片并在图片上绘图
来源:毕设 关键词:Bitmap Canvas //毕设中需要自定义室内地图,并且在地图上绘制轨迹 //此处是一个测试Demo,实现图片的加载和记录手指在屏幕上的运动轨迹 图片的载入 使用系统提供的内 ...
- android拍照选择图片上传服务器自定义控件
做android项目的时候总免不了遇到图片上传功能,虽然就是调用android系统的拍照和相册选择功能,但是总面部了把一大推代码写在activity里,看上去一大推代码头都昏了.不如把这些功能都集成一 ...
随机推荐
- 题解 CF896C 【Willem, Chtholly and Seniorious】
貌似珂朵莉树是目前为止(我学过的)唯一一个可以维护区间x次方和查询的高效数据结构. 但是这玩意有个很大的毛病,就是它的高效建立在数据随机的前提下. 在数据随机的时候assign操作比较多,所以它的复杂 ...
- ArcGIS api for javascript——查询,然后单击显示信息窗口
描述 本例展示如何配置查询任务为示例的工作流程: 1.用户单击一个要素来加亮显示. 2.用户再一次单击要素来查看属性信息的 InfoWindow. 本例查询USA州,因此ESRI_StateCityH ...
- [Python] Read and plot data from csv file
Install: pip install pandas pip install matplotlib # check out the doc from site import pandas as pd ...
- 数据格式转换 (三)Office文档转HTML
HTML Filter 是由北京红樱枫软件有限公司根据HTML Ver 4.01/CSS式样,研制和开发的MS Office系列文档到HTML转换的通用程序库.便于用户实现对多种文档的统一管 ...
- vue9 计算属性 computed
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 关于es6中对象的扩展
1.Object.is() es5比较两个值是否相等,只有两个运算符,相等(==) 和 严格相等(===),他们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0 等于 -0.es6提 ...
- 我比xx强在哪里?弱在哪里?
向下管理? 向上管理? 自我形象? 人机关系运作? 弱项不在管理方面: 在向上的人际关系处理和机会把握方面.
- linux下支持托盘的邮件客户端Sylpheed
在网上搜索了很多客户端想支持系统托盘,发现一个很不错的邮件客户端Sylpheed.设置方式和foxmail很像,最为重要的是支持系统托盘,很方便,默认没有开启,简单设置下:配置->通用首选项-& ...
- try{futureGirl}catch(Exception){"Kill All Trouble"}——echarts样式
首先先给未来女,解释一下题目吧.这是段代码,我再try{}括号里写了你,意思我会保护你.后面的catch(Exception)是捕捉你的所有麻烦,交给我解决. 今天收工较早,拖着疲惫是身躯回到宿舍,简 ...
- 机房收费系统——UML类图
在对一个软件系统进行设计和建模的时候,一般是从构造系统的基本词汇開始,包含构造这些词汇的基本属性和行为. 系统分析师假设要对所设计的系统清晰认识.还有考虑这些基本词汇之间的关系.而假设把这些行为可视化 ...