Android 纹理文本

2023-12-02

如何制作带有纹理而不是文本颜色或渐变的文本(例如 png 文件)?就像是this。我理解逻辑,我应该使文本颜色透明并放在文本位图下方。我想我无法通过Textview。我不知道如何使用画布或 OpenGL 来做到这一点。有什么想法吗?


这是一种使用方法PorterDuffXfermode.

public class MainActivity extends Activity {
    private EditText mEditText;
    private ImageView mImageView;
    private Bitmap mTexture;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mEditText = (EditText) findViewById(R.id.activity_main_edittext);
        mImageView = (ImageView) findViewById(R.id.activity_main_image);

        mTexture = BitmapFactory.decodeResource(getResources(),
                R.drawable.texture);
    }

    public void onTextCreate(View v) {
        final String text = mEditText.getEditableText().toString();

        Bitmap result = Bitmap.createBitmap(mTexture.getWidth(),
                mTexture.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(result);
        Paint paint = new Paint();
        paint.setAntiAlias(true);
        paint.setTextSize(200);
        paint.setARGB(255, 0, 0, 0);

        canvas.drawText(text, 200, 200, paint);
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawBitmap(mTexture, 0, 0, paint);
        paint.setXfermode(null);

        mImageView.setImageBitmap(result);
    }
}

布局非常简单:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/activity_main_edittext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:hint="Write a sample text" />

    <ImageView
        android:id="@+id/activity_main_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:onClick="onTextCreate"
        android:text="Do it!" />

</RelativeLayout>

此代码使用写入文本canvas.drawText()。如果你想使用常规的TextView, 你可以:

  • 创建TextView
  • 设置文本
  • 绘制TextView到画布上使用textView.draw(canvas);
  • 而不是做canvas.drawText() use canvas.drawBitmap()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 纹理文本 的相关文章

随机推荐

  • 使用 numpy.savetxt 和 numpy.loadtxt 写入和读取复数

    我需要编写和读取复数 我想用numpy savetxt and numpy loadtxt这样做 由于我编写的代码相当大 我创建了一个测试文件来尝试写入和读取复数 到目前为止 我已经能够使用写复数numpy savetxt 代码如下 imp
  • Ebean EmbeddedId 将列映射到 ManyToOne 关系

    我在尝试创建组合键 EmbeddedId 时遇到了 Ebean 问题 这是我所拥有的草稿 Entity public class EntityA extends Model Id private String ID OneToMany pr
  • “Seq”与“seq”有什么区别?

    我担心不知道什么时候可以使用 Seq seq 你能告诉我有哪些差异吗 这是我的代码 为什么不使用 seq let s ResizeArray
  • 拖放已执行但未执行 - webdriver

    我已经尝试过这两个代码 它被执行但操作没有被执行 任何人都可以告诉我为什么吗 Type one approach Actions action new Actions Browser Driver IWebElement sourceEle
  • javascript中“=”的操作

    考虑下面的代码 var pub json general holis 12 10 2013 12 25 2013 12 26 2013 var holiday holis 12 02 2013 var pub json pub json g
  • 编辑和重新显示内容时强制刷新缓存

    我正在使用 asp net mvc 并且有一个显示项目的视图和一个允许编辑项目的视图 当用户提交编辑的项目时 它会将他们重定向到该项目的视图 由于项目视图正在被缓存 因此在重定向时不会反映更改 查看项目页面也可以内联编辑 然后提交按钮使用
  • 即使在文件名前面添加“r”,openpyxl 也无法在 Windows 上保存

    在 OS X 上 openpyxl save 对于名为 all done xlsx 的文件工作正常 然而 当在 Windows 上尝试时 会导致 c Users Tony Desktop ROI gt python roi cut6 py
  • Roxygen2 - 如何正确记录 S3 方法

    我读过 Roxygen2 PDF 和这个site 并且我不知道 method S3method export 之间的区别以及如何使用它们来正确记录 S3 方法 我编写了以下示例以供讨论 我如何正确记录这些 如何模拟 print 和其他通用函
  • Xamarin Forms 上的 UIWebView 弃用和 App Store 拒绝

    我可以修复以下问题吗 我的设置 Xamarin iOS 版本 13 16 0 13 Visual Studio 社区 Visual Studio Community 2019 for Mac 版本 8 5 2 内部版本 13 Xamarin
  • YouTube API 500 错误

    我正在尝试使用 Youtube Data API V3 编辑我的频道描述 但如果我尝试对 brandingSettings 执行任何操作 则会收到 500 内部服务器错误 我什至尝试启动私人浏览会话并使用不同的 Google 帐户 这是 G
  • 使用 mvvmcross 和 mono touch 将照片上传到网络服务

    我想做的只是使用 mono touch mono droid 和 mvvmcross 将照片上传到网络服务 希望在某种程度上这样我只需要为 android 和 IOS 编写一次代码 我最初的想法是让用户选择一个图像 在android中使用意
  • DateTime.ToOADate - 仅时间

    我有一个带有当前日期 DateTime Now 的 DateTime 变量 我可以将其转换为 OADate 格式 41392 524432 作为示例 但我如何才能转换这个 我是just获取没有日期的时间 例如 1 分 4 秒 01 04 在
  • 有一个为Windows API编写的汇编代码,如何在Linux上编译它并用Wine运行

    中有一个示例代码这个介绍 如下所示 Sample x64 Assembly Program Chris Lomont 2009 www lomont org extrn ExitProcess PROC external functions
  • Docker 在 docker run 命令上给出“没有这样的文件或目录:未知”

    我能够成功构建 Docker 镜像 通过docker build t foo bar 这是它的Dockerfile FROM ubuntu 20 04 COPY benchmark sh home benchmarking programm
  • 根据数据集中的另一个变量设置背景颜色

    我试图展示春分对我的数据的影响 即全年一系列远程跟踪的鸟类数据 为了做到这一点 我想绘制一年中每一天的纬度 并将春分效果作为背景中的颜色分级 我的数据看起来像这样 SO lt data frame date seq as Date 2000
  • 如何将 TIMESTAMPDIFF 添加到 SqlSoup 查询?

    我有一个正在运行并使用 SqlSoup 的报告程序 并且现在由 SqlSoup 调用生成整个查询 MySqL 函数除外 TIMESTAMPDIFF 实际的 SQL 短语应该是 TIMESTAMPDIFF PERIOD start time
  • JavaFX 2 WebView:如何增强滚动条

    我已经使用 JavaFX WebView 实现了日志查看器 然而 对于该日志查看器的用户来说 有一个大问题 网络查看器的滚动条非常细 我什至遇到了一个问题 在 Windows 7 XP 上 奇怪的是在 Windows 8 上没有 当单击滚动
  • 有人能解释一下 C# 中“按值传递”和“按引用传递”是什么意思吗?

    我不太确定 C 中 按值传递 和 按引用传递 的概念 我认为按值传递意味着 int i 9 我们将 int i 传递给一个方法 例如 method i 通过引用传递意味着精确传递其位置 例如 Class method variable 它会
  • Bootstrap 5 - 卡片元素在底部对齐

    好吧 我是 Bootstrap 的新手 我试图将一个按钮元素始终放在卡片的底部 即使正文很小 然而 我总是收到这个结果 它没有将我的按钮放在我需要的右下角
  • Android 纹理文本

    如何制作带有纹理而不是文本颜色或渐变的文本 例如 png 文件 就像是this 我理解逻辑 我应该使文本颜色透明并放在文本位图下方 我想我无法通过Textview 我不知道如何使用画布或 OpenGL 来做到这一点 有什么想法吗 这是一种使