如何在ImageView上添加文字

如何在ImageView上添加文字,第1张

ImageView中是不能写文字的,如果说只是想实现文字覆盖图片的这个需求的话,可以考虑使用帧布局。运行结果是字符串覆盖在图片上,复制内容到剪贴板。

代码

<?xml version="1.0" encoding="utf-8"?>

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

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/image"

/>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="雨松MOMO"

android:background="#FF0000"

android:textColor="#000000"

android:textSize="18dip"

/>

</FrameLayout>

关于ImageView的手势缩放,有很多种方法,绝大多数开源自定义缩放都是修改了ondraw函数来实现的。但是ImageView本身有scaleType属性,通过设置android:scaleType="matrix" 可以用很少的代码就实现缩放功能。缩放的优点是实现起来简单,同时因为没有反复调用ondraw函数,缩放过程中不会有闪烁现象。

MATRIX矩阵可以动态缩小放大图片来显示,缩小图片:

代码如下 复制代码

//获得Bitmap的高和宽

int bmpWidth=bmp.getWidth()

int bmpHeight=bmp.getHeight()

//设置缩小比例

double scale=0.8

//计算出这次要缩小的比例

scaleWidth=(float)(scaleWidth*scale)

scaleHeight=(float)(scaleHeight*scale)

//产生resize后的Bitmap对象

Matrix matrix=new Matrix()

matrix.postScale(scaleWidth, scaleHeight)

Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true)

下面将一个自定义的实现了手势缩放的ImageView代码拷贝如下:

代码如下 复制代码

package com.jcodecraeer.stargallerry

import android.content.Context

import android.graphics.Matrix

import android.graphics.PointF

import android.util.AttributeSet

import android.util.FloatMath

import android.view.MotionEvent

import android.widget.ImageView

public class ImageTouchView extends ImageView {

private PointF startPoint = new PointF()

private Matrix matrix = new Matrix()

private Matrix currentMaritx = new Matrix()

private int mode = 0//用于标记模式

private static final int DRAG = 1//拖动

private static final int ZOOM = 2//放大

private float startDis = 0

private PointF midPoint//中心点

/**

* 默认构造函数

* @param context

*/

public ImageTouchView(Context context){

super(context)

}

/**

* 该构造方法在静态引入XML文件中是必须的

* @param context

* @param paramAttributeSet

*/

public ImageTouchView(Context context,AttributeSet paramAttributeSet){

super(context,paramAttributeSet)

}

public boolean onTouchEvent(MotionEvent event) {

switch (event.getAction() &MotionEvent.ACTION_MASK) {

case MotionEvent.ACTION_DOWN:

mode = DRAG

currentMaritx.set(this.getImageMatrix())//记录ImageView当期的移动位置

startPoint.set(event.getX(),event.getY())//开始点

break

case MotionEvent.ACTION_MOVE://移动事件

if (mode == DRAG) {//图片拖动事件

float dx = event.getX() - startPoint.x//x轴移动距离

float dy = event.getY() - startPoint.y

matrix.set(currentMaritx)//在当前的位置基础上移动

matrix.postTranslate(dx, dy)

} else if(mode == ZOOM){//图片放大事件

float endDis = distance(event)//结束距离

if(endDis >10f){

float scale = endDis / startDis//放大倍数

//Log.v("scale=", String.valueOf(scale))

matrix.set(currentMaritx)

matrix.postScale(scale, scale, midPoint.x, midPoint.y)

}

}

break

case MotionEvent.ACTION_UP:

mode = 0

break

//有手指离开屏幕,但屏幕还有触点(手指)

case MotionEvent.ACTION_POINTER_UP:

mode = 0

break


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11665531.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存