怎么在代码中 改变 drawableRight-Android开发问答?在J2ME中 g.drawString(“Hello World“,10,10,20)中的20是什么意思

2019-01-22 14:27:03 90点热度 0人点赞 0条评论
Android与J2ME开发实战指南:DrawableRight设置及绘图参数解析 一、Android开发中的DrawableRight设置 1.1 DrawableRight的基本概念 DrawableRight是An […]
  • Android与J2ME开发实战指南:DrawableRight设置及绘图参数解析

一、Android开发中的DrawableRight设置

1.1 DrawableRight的基本概念

DrawableRight是Android开发中用于在视图右侧添加可绘制资源(如图标、图片)的功能。它广泛应用于按钮、EditText等控件,通过XML或代码动态设置,实现视觉提示或交互反馈。

1.2 XML配置方法

  • 在布局文件中,通过android:drawableRight属性指定资源ID:
    <EditText    android:id="@+id/editText"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:drawableRight="@drawable/ic_eye" />
  • 支持调整图标大小:
    android:drawablePadding="16dp"
  • 兼容不同屏幕密度:使用矢量图(VectorDrawable)或适配多分辨率资源目录

1.3 代码动态修改

  • 通过setCompoundDrawablesWithIntrinsicBounds()方法:
    editText.setCompoundDrawablesWithIntrinsicBounds(    0, // 左侧    0, // 上方    R.drawable.ic_eye, // 右侧    0); // 下方
  • 实时更新状态:结合点击事件切换图标(如密码可见性开关)
  • 动画效果:使用ObjectAnimator实现图标旋转

1.4 常见问题与解决方案

  • 图标不显示:检查资源路径是否正确,确保资源存在于res/drawable目录
  • 图标被截断:增大控件高度或调整drawablePadding
  • 布局错乱:使用ConstraintLayoutRelativeLayout精确控制位置

二、J2ME绘图参数解析:drawString函数详解

2.1 drawString函数基础

J2ME的Graphics.drawString()用于在Canvas上绘制文本,其完整参数形式为:

void drawString(String str, int x, int y, int anchor)

2.2 参数20的意义

  • 第四个参数anchor为锚点值,决定文本的对齐方式
  • 参数20的二进制表示为10100,拆分为:
    Graphics.HCENTER (4) + Graphics.BASELINE (16) = 20
  • 功能:使文本水平居中于x坐标,并以基线对齐到y坐标

2.3 其他常用锚点值

  • Graphics.TOP | Graphics.LEFT:左上对齐(值为0)
  • Graphics.HCENTER | Graphics.VCENTER:居中对齐(值为5)
  • Graphics.RIGHT | Graphics.BOTTOM:右下对齐(值为22)

2.4 实际应用示例

  • 居中文本显示:
    g.drawString("Hello World", 100, 50, 20);
  • 动态调整文本位置:
    int centerX = getWidth()/2;int centerY = getHeight()/2;g.drawString("Score: " + score, centerX, centerY, 5);

三、技术对比与开发建议

3.1 Android vs J2ME核心差异

特性 Android J2ME
UI框架 丰富的View系统 基于Canvas的手动绘制
资源管理 支持VectorDrawable 依赖位图资源
硬件适配 自动分辨率缩放 需手动计算坐标

3.2 开发者注意事项

  • Android优先使用XML声明式布局,复杂交互再用代码控制
  • J2ME开发需严格管理内存,避免频繁创建图形对象
  • 跨平台迁移时注意坐标系差异:Android原点在左上,J2ME同理但需手动计算

3.3 性能优化技巧

  • Android:使用setCompoundDrawablesRelative()适配系统方向
  • J2ME:预渲染文本图像,减少重复绘制开销
  • 通用:避免在循环中频繁调用绘图函数,合并操作提升帧率

四、应用场景与案例分析

4.1 Android案例:密码输入框

  • EditText右侧添加眼睛图标,点击切换密码可见性
  • 监听点击事件:
    editText.setOnTouchListener(new View.OnTouchListener() {    @Override    public boolean onTouch(View v, MotionEvent event) {        if(event.getAction() == MotionEvent.ACTION_UP) {            int drawablePos = event.getX();            if(drawablePos > (v.getRight() - v.getTotalPaddingRight())) {                // 切换密码可见性                return true;            }        }        return false;    }});

4.2 J2ME案例:游戏得分板

  • 在游戏Canvas上实时显示分数:
    public void paint(Graphics g) {    g.setColor(0xFFFFFF);    g.drawString("Score: " + score, 10, 20, Graphics.TOP | Graphics.LEFT);}
  • 优化:预先计算文本宽度,动态调整位置防止溢出

五、总结

掌握DrawableRight和J2ME绘图参数,能显著提升UI设计效率。Android开发者应善用XML声明和代码联动,而J2ME则需精细控制坐标与资源。面对不同平台时,理解底层原理并灵活运用最佳实践,才能构建高性能、跨设备兼容的应用。

通过本文的深度解析,读者不仅能解决具体技术问题,更能建立系统化的设计思维,从容应对移动端开发中的各类挑战。

PC400

这个人很懒,什么都没留下