记录android开发中琐碎的点

在开发中,我们可能会碰到各种个恶心人的问题,这里记录一下,方便查看

目录:

  • canves 绘制点九图被拉伸,点九不起作用
  • ScrollView 嵌套 RecyclerView 惯性滑动失败
  • 避免重复吐司 ( Toast ) 时,显示时间过长

canves 绘制点九图
点九图本质上也是一个 SVG 矢量图,要不她怎么能自由缩放呢
一般我们都是这样些的:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bubble);
Rect rect = new Rect(l, t, r, b);
canvas.drawBitmap(bitmap, null, rect, new Paint());

然后我们可以看到是这样的,这样就是去了我们制作点九图的初衷了


上面我说了,点九图就是一个 SVG矢量图,那么我们就用path 来画

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bubble);
NinePatch ninePatch = new NinePatch(bitmap, bitmap.getNinePatchChunk(), null);
RectF rectF = new RectF(l, t, r, b);
ninePatch.draw(canvas, rectF);

然后我们就可以看到一切正常,和我们摄像的一样了


ScrollView 嵌套 RecyclerView 惯性滑动失败

这个问题基本上每个人都会碰到,解决的方式有很多,但是核心的原理就是让RecyclerView不滑动,因为RecyclerView是强制父控件把点击事件传递给他的。今天看到一个简单的实现,发到这里大伙看一下:

Snip20170422_6.png

源地址

避免重复吐司 ( Toast ) 时,显示时间过长

基本上工作一段时间的人都知道,测试一定会给你提这个 bug,这个问题也是必须解决的,贴一个实现,其实写法很多,本质一样,维护一个全局 的静态的 toast 对象,点后一直操作这个对象

public void showToast(Context context, String text, boolean isLongLength) {
    int length;
    if (isLongLength) {
        length = Toast.LENGTH_LONG;
    } else {         
        length = Toast.LENGTH_SHORT;
    }
    if (toast == null) {
        toast = Toast.makeText(context, text, length);
    } else {
        toast.setText(text);
        toast.setDuration(length);
    }
    toast.show();
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,908评论 22 665
  • 文/影三郎 站在桥头,望着干涸的河床延伸远方 看着宽广的马路褪去昔日的色彩 灰暗,了无生机 岁至年根,守着薄薄的日...
    柠檬成汁阅读 171评论 0 0
  • 文/林小乔 人之所以有贪欲,是因为想在得到好的基础上,得到更好的,自己的欲望不断地向前发展,以至于像个...
    林小乔阅读 435评论 0 1
  • 我不是我 我只是眼泪中的一颗 我只是所有颤抖的心中的一颗。 我不是我 我在同情的漩涡里漂泊 我在剧烈的感情中感同深...
    王神马阅读 103评论 0 0