Categories
Android 🏴‍☠️

สร้างแอป Android เพื่อทดสอบการใช้งาน Firebase Realtime Database & Firebase Storage

 

บทความนี้จะมีเนื้อหาเกี่ยวกับ Firebase Realtime Database, Firebase Storage, Firebase Crash, Drawer Menu, Fragment, Custom ListView, Camera,Glide และอื่นๆสัพเพเหระ ออกตัวไว้ก่อนคือผมอธิบายไม่ค่อยเก่งนะครับ ดังนั้นเน้นดู Code แล้วจิ้นกันเอาเองเนาะ 5555

เริ่มกันเลยดีกว่า เราจะมาสร้างแอปที่มีรายละเอียดดังต่อไปนี้

  • หน้า ListView เอาไว้แสดง Content ซึ่งมี Header, Content,  TimeStamp, Image
  • สามารถ Create, Read, Update, Delete ได้
Categories
Android 🏴‍☠️

How to create Custom Listview in Android

code : https://github.com/thana19/testCustomListView

1. New Project with Empty Activity

2. New layout “fragment_main”

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:text="Main Fragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
Categories
Android 🏴‍☠️

Android : How to Add a Navigation Drawer and Implement Fragment

code : https://github.com/thana19/testNavigationDrawer

1. New Project with Navigation Drawer Activity

2. edit content_main.xml – add FrameLayout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="th.in.thana.testnavigationdrawer.MainActivity"
    tools:showIn="@layout/app_bar_main">

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>
Categories
Android 🏴‍☠️

Android : How to convert a image into base64Binary ?

 

imageView.buildDrawingCache();
Bitmap bitmap = profile_image.getDrawingCache();
String encodedImageData = getEncoded64ImageStringFromBitmap(bitmap);

============

public String getEncoded64ImageStringFromBitmap(Bitmap bitmap) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 70, stream);
byte[] byteFormat = stream.toByteArray();
// get the base 64 string
String imgString = Base64.encodeToString(byteFormat, Base64.NO_WRAP);

return imgString;
}
Categories
Android Review แกะกล่อง 🏴‍☠️

แกะกล่อง ASUS Zenfone 2 Laser 5.5

เนื่องจากปัญหาค่าโทรของแม่กับญาติผู้ใหญ่ที่บ้าน ซึ่งเดือนนึงโทรคุยกันหลักพัน ทั้งๆที่บ้านก็มี Hispeed Internet กันทุกบ้าน และโปรมือถือก็สมัคร  3g/4g ให้แม่ใช้แล้ว จึงคิดว่าจะให้ใช้ line คุยกันน่าจะประหยัดและตอบโจทย์ แต่มือถือของน้าเป็น Android รุ่นเก่ามาก จึงจำเป็นต้องเปลี่ยน โจทย์คือ จอใหญ่ ไม่แพง …. ก็เลยตั้งธงไว้ที่จอ 5.5 เอาแบบมียี่ห้อหน่อย ก็จะมี Samsung J7 แต่แพงไปนิด Lenovo จากประสบการณ์คงไม่เอาแล้ว Huawei Y6II ก็น่าสน แต่สุดท้ายก็มาจบที่ Asus Zenfone 2 Laser 5.5 เพราะได้ Cover กับ MicroSD ด้วย จาก Lazada ตอนกดสั่งราคา 4,790 มี code ส่วนลด 7% เหลือ 4,455 บาท แต่พอสั่งเสร็จไป 1 วันมันลดราคาเหลือ 4,490 -*- แต่ลองกดซื้อดูมันใช้ code ลดราคาไม่ได้ ก็ถือว่าซื้อถูกกว่า 35 บาท ก็ยังดีวะ 5555 (อัพเดทวันที่ 28 ก.พ. ลดเหลือ 3,990 อ๊ากกกซซซซซซ )

มาแกะกล่องกันเถอะ

Categories
Android 🏴‍☠️

Android : Animate an Activity

 

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Override how this activity is animated into view
// The new activity is pulled in from the left and the current activity is kept still
// This has to be called before onCreate
overridePendingTransition(R.anim.pull_in_from_left, R.anim.hold);

setContentView(R.layout.activity_sliding_drawer);
}

@Override
protected void onPause() {
// Whenever this activity is paused (i.e. looses focus because another activity is started etc)
// Override how this activity is animated out of view
// The new activity is kept still and this activity is pushed out to the left
overridePendingTransition(R.anim.hold, R.anim.push_out_to_left);
super.onPause();
}

 

res.anim.pull_in_from_left.xml

    android:duration="200"
    android:fromXDelta="-100%"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toXDelta="0%"

credit : http://blog.blundellapps.co.uk/animate-an-activity/

Categories
Android 🏴‍☠️

Android : Auto scrolling in ExpandableListView

final int[] lastClickedPosition = {0};
expListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
Boolean shouldExpand = (!expListView.isGroupExpanded(groupPosition));

expListView.collapseGroup(lastClickedPosition[0]);

if (shouldExpand){
//generateExpandableList();
expListView.expandGroup(groupPosition);
expListView.setSelectionFromTop(groupPosition, 0);
}
lastClickedPosition[0] = groupPosition;

return true;
}
});

credit : http://stackoverflow.com/questions/12762958/auto-scrolling-in-expandablelistview

Categories
Android 🏴‍☠️

Reset to default configuration in android studio

ตอนแรกอัพ android studio 2.2 ไปแล้วก็ไม่มีอะไร error build, debug apk ได้ตามปกติ แต่ตอนทำโปรเจคใหม่ สร้าง mainApplication  ดัน งง + เบลอ สร้างไว้ที่นอก package ตอนที่ไปเรียก android:name ใน androidmanifest ก็เลยไม่อยู่ใต้ package ผมก็นึกว่ามันเป็น bug ของ android studio 2.2 เลยกดโน่น กดนี่ ตู้ม ไปเลยครับ androidManifest ไม่เห็น mainApplicaton ทุกโปรเจคเลย งานเข้าอีกแล้วววว -*-

ก็เลย หา หา หา วิธีแก้ ลบ Android studio ไปก็แล้ว มันดันจำ config เดิมอีก เอาไงดีวะ งานก็เร่ง git clone ไปทำบน windows อีกเครื่องได้ 2-3 วัน มันไม่คุ้นชินเท่า mac ก็เลย หา หา หา จนเขอวิธีจนได้ เห้อ

in mac

rm -Rf ~/Library/Preferences/AndroidStudio*
rm ~/Library/Preferences/com.google.android.studio.plist
rm -Rf ~/Library/Application\ Support/AndroidStudio*
rm -Rf ~/Library/Logs/AndroidStudio*
rm -Rf ~/Library/Caches/AndroidStudio*

screen-shot-2559-10-05-at-7-22-21-am

 

credit : http://stackoverflow.com/questions/20582577/how-to-reset-to-default-configuration-in-android-studio

Categories
Android 🏴‍☠️

สร้าง git บน Bitbucket สำหรับ Android

https://bitbucket.org/ เลือก Create repository

screen-shot-2559-10-01-at-9-32-01-am

 

screen-shot-2559-10-01-at-9-32-46-am

อันดับแรกเข้าไปใน directory แล้วจัดการ gitignore สำหรับ android ก่อน

ls -a

nano .gitignore

screen-shot-2559-10-01-at-9-56-53-am

https://github.com/github/gitignore/blob/master/Android.gitignore

Categories
Android 🏴‍☠️

Session ‘app’: Error Launching activity

เนื่องจาก Dev App เสร็จแล้วกำลังจะส่ง APK ให้ลูกค้า มี Request ให้เปลี่ยน Package ของ Android ซึ่งก็รู้มาว่าพอเปลี่ยนแล้วมันมีปัญหาเยอะมากกกกกกก แต่แล้วไงไม่ลองไม่รู้ เปลี่ยนเลยซิครับ

เฮ้ย ขึ้น refactor ขึ้นนู่น ขึ้นนี่ กดไม่ทัน ระเบิดตู้ม ตัวแดงแม่มทุกโปรเจคที่กำลังทำอยู่ ความซวยมาเยือนดิครับ อีกโปรเจคก็ต้องส่งพรุ่งนี้ เหงื่อแตก ใจสั่น ค้นกูเกิ้ล แก้ไป แก้มา เกือบ  2 ชั่วโมง ลบทิ้งดิครับ backup ไว้แล้ว ดึงกลับมา gradle แม่มเสือกจำไอ้ package ที่เปลี่ยนอีก ตอนนั้นหัวหมุนทำอะไรไปไม่รู้ กลับมาใช้ได้ เย่เย่ ไม่เปลี่ยนมันแล้ว รีบ Build Signed APK แล้วรีบส่งทันที สบายตัวล่ะ

แต่วิบากกรรมยังไม่หมด วันรุ่งขึ้น ลูกค้าขอแก้ app เล็กๆ 3 จุด สบายๆ ไม่ถึง 5 นาทีก็เสร็จ ตอนกด debug ซิครับ อ้าว error ไอ้ gradle แม่มจำ package ที่เปลี่ยนเอามา launch adb ตกลง debug ไม่ได้ งานเข้าอีกแล้ว แก้ยังไงวะ ไม่มีเวลาแล้ว ด้วยความโคตรมั่นใจที่เมื่อก่อนเคย fix bug โดยใช้แต่ logic แก้แล้ว run ดูไม่ได้ ส่งเลยแล้วผ่านด้วย แต่แต่แต่ นั่นมันก็นานมาแล้ว ตอนนั้นเทพ ตอนนี้แก่แล้วขอชัวร์ เอาวะ build apk debug ส่งเข้า Note 4 ดูดีก่า เอ้อ ก็ไม่มีปัญหา เลย Build แล้วส่งงาน บายใจ

เนื่องจากติดอีกงาน เวลาล่วงผ่านมา 2 วัน มันคาใจ คาใจ ก็เลยลองค้นๆๆ stackoverflow ก็เจอวิธี ทำตามนี้ก็หาย เฮ้อ!!!

If you are using android 2.0+, take the following steps
1. Go to run
2. Select edit configurations..
3. type -r in the Install Flags text field
4. Apply and Ok then run program again

 

screen-shot-2559-09-10-at-8-58-31-pm

http://stackoverflow.com/questions/36802588/error-while-launching-activity

http://stackoverflow.com/questions/36530648/session-app-error-launching-activity