วันเสาร์ที่ 6 สิงหาคม พ.ศ. 2559

การ Recycle view ใน listview

ในส่วนของ adapter   function getView ให้เพิ่มการ เช็คว่า view ที่ส่งมาเป็น null หรือเปล่า ถ้าเป็น ให้ สร้างขึ้นมาใหม่ ถ้าไม่เป็นแสดงวง่ามีของเก่าอยู่ ในทำของเก่านั้นกลับมาใช้ใหม่ ดังโคดข้างล่าง

public View getView(int i, View view, ViewGroup viewGroup)
ClassItem item;
if(view != null)
{
      item = (ClassItem) view;
}
else
{
     item  = new ClassItem(viewGroup.getContext());
}
return item;

วันอังคารที่ 2 สิงหาคม พ.ศ. 2559

Android Rule

- ห้ามใช้ Activity Context ใน Asynchronous Callback 

- ต้องรู้เสมอว่าทำไมถึงใช้ Context นั้นๆ

วันศุกร์ที่ 29 กรกฎาคม พ.ศ. 2559

วิธีการแสดง keyboard ใน Genymotion

1. Start virtual device


2. ไปที่ menu setting


3. ไปที่ Language & input


4. ไปที่ Default..


5. ตรง Hardware Physical keyboard จาก on ให้เปลี่ยนเป็น off 


วันเสาร์ที่ 16 เมษายน พ.ศ. 2559

Android การใช้ gilde แสดงผลแบบ วงกลม

Credit http://stackoverflow.com/questions/25278821/how-do-rounded-image-with-glide-library
มี 2 แบบ

1.
Glide.with(context).load(url).asBitmap().centerCrop().into(new BitmapImageViewTarget(imageView) {
        @Override
        protected void setResource(Bitmap resource) {
            RoundedBitmapDrawable circularBitmapDrawable =
                    RoundedBitmapDrawableFactory.create(context.getResources(), resource);
            circularBitmapDrawable.setCircular(true);
            imageView.setImageDrawable(circularBitmapDrawable);
        }
    });
2
Glide.with(this).load(URL).transform(new CircleTransform(context)).into(imageView);

public static class CircleTransform extends BitmapTransformation {
    public CircleTransform(Context context) {
        super(context);
    }

    @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        return circleCrop(pool, toTransform);
    }

    private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {
        if (source == null) return null;

        int size = Math.min(source.getWidth(), source.getHeight());
        int x = (source.getWidth() - size) / 2;
        int y = (source.getHeight() - size) / 2;

        // TODO this could be acquired from the pool too
        Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);

        Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);
        if (result == null) {
            result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
        }

        Canvas canvas = new Canvas(result);
        Paint paint = new Paint();
        paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
        paint.setAntiAlias(true);
        float r = size / 2f;
        canvas.drawCircle(r, r, r, paint);
        return result;
    }

    @Override public String getId() {
        return getClass().getName();
    }
}