Android App

Android App

15 items(1/2) 2 Next » Last »|

สร้างปุ่มเมนูบน Action Bar ของ Template Buttom Navigator Activity

โดย Little Bear on 30 ก.ย. 63 11:18

ตอนที่เริ่มสร้าง App ใหม่ โดยใช้ Template Buttom Navigator Activity นั้นจะไม่มีปุ่มเมนูบนด้านขวาของ Action Bar หากเราต้องการใช้ ก็จำเป็นต้องสร้างขึ้นมาเอง

เริ่มด้วยการสร้าง resource file ของ options menu ก่อน

Menu -> New -> Resource File File name : options_menu Resource type : Menu

options_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/searchFragment"
    android:icon="@drawable/ic_baseline_search_24"
    android:title="@string/action_search"
    app:showAsAction="always" />
<item
    android:id="@+id/settingsFragment"
    android:icon="@drawable/ic_baseline_settings_24"
    android:title="@string/action_settings"
    app:iconTint="@color/yourcolor"
    app:showAsAction="ifRoom" />
<item
    android:id="@+id/aboutUsFragment"
    android:icon="@drawable/ic_baseline_info_24"
    android:title="@string/action_aboutus" />
</menu>

MainActivity.kt

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    val inflater = menuInflater
    inflater.inflate(R.menu.options_menu, menu)
    if (menu is MenuBuilder) {
        menu.setOptionalIconsVisible(true)
    }
    return super.onCreateOptionsMenu(menu)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.itemId) {
        R.id.aboutUsFragment -> {
            toast("About Us")
        }
    }
    return super.onOptionsItemSelected(item)
}

เพิ่มรายการในเมนู

menu?.apply {
// ----------------- add a new item to menu ----------------
// add new item to menu
val newItem:MenuItem = menu.add(
    Menu.NONE, // group id
    2, // item id
    1, // order
    "New Item" // title
)

// set new item's icon
newItem.setIcon(R.drawable.ic_check_circle)

// set new item show as action flags
newItem.setShowAsActionFlags(
    MenuItem.SHOW_AS_ACTION_ALWAYS or
    MenuItem.SHOW_AS_ACTION_WITH_TEXT
)

// menu new item click listener
newItem.setOnMenuItemClickListener {
    Toast.makeText(this@MainActivity, "New Item Clicked", Toast.LENGTH_SHORT).show()
    true
}

// ----------------- remove an item from menu ----------------
menu.removeItem(R.id.cancel)

// ----------------- update an item in menu ----------------
menu.findItem(R.id.settings).apply {
    title = "Updated Title"
}

ตรวจสอบว่า menu ได้สร้างหรือยัง?

::actionMenu.isInitialized

ตรวจสอบว่า key ของ Array มีหรือไม่?

options.has("menu")

การเข้าถึง R -> Resource

android.R.attr.actionBarSize

ที่มา

วิธีการรับส่งข้อมูลของ Android Fragment

โดย Little Bear on 23 ก.ย. 63 17:29

ช่วงนี้กำลังพัฒนา Green Smile App เวอร์ชั่นใหม่ โดยเปลี่ยนแปลงรูปแบบมาใช้ Fragment แทน

หลังจากทำไปพักหนึ่ง ก็มีปัญหาในการสื่อสาร/เข้าถึงข้อมูลระหว่า Activity กับ Fragment

ขอบคุณบทความดี ๆ จาก Akexorcist เรื่อง Let’s Fragment — วิธีการรับส่งข้อมูลของ Fragment แถมในบทความยังมีบทความในซีรีย์เดียวกันอีกหลายเรื่อง เช่น

  • มารู้จักกับ Fragment กันเถอะ~
  • เริ่มต้นง่ายๆกับ Fragment แบบพื้นฐาน
  • ว่าด้วยเรื่องการสร้าง Fragment จาก Constructor ที่ถูกต้อง
  • รู้จักกับ FragmentTransaction สำหรับการแสดง Fragment [ตอนที่ 1]
  • รู้จักกับ FragmentTransaction สำหรับการแสดง Fragment [ตอนที่ 2]
  • Lifecycle ของ Fragment (Fragment Lifecycle)
  • วิธีการรับส่งข้อมูลของ Fragment
  • มาทำ View Pager กันเถิดพี่น้อง~ [ตอนที่ 1]
  • มาทำ View Pager กันเถิดพี่น้อง~ [ตอนที่ 2]
  • เพิ่มลูกเล่นให้กับ View Pager ด้วย Page Transformer

ลองตามไปอ่านกันดูนะครับ

Android : เพิ่มภาษาไทยให้กับ app

โดย Little Bear on 10 ธ.ค. 62 09:26

เลือกเมนู New Value Resource

กำหนดค่า

Local

th

ตั้งชื่อ strings_th.xml

Copy and rename an Android project in Android Studio

โดย Little Bear on 3 ส.ค. 61 17:00

วิธีสำเนา Android Application Source Code ไปเป็น Application ใหม่ ลองทำตามขั้นตอนดังนี้

Copy and rename a project

For some lessons, you will need to make a copy of a project before making new changes. You may also want to copy a project to use some of its code in a new project. In either case you can copy the existing project (ExistingProject), and then rename and refactor the new project's (NewProject) components to use the new project's name. (In the instructions below, substitute your actual project names for ExistingProject and NewProject.

1. Copy the project

  1. On your computer's file system (not in Android Studio), make a copy of the ExistingProject directory.
  2. Rename the copied directory to NewProject .

2. Rename and refactor the project components

The old name of the project, ExistingProject, still appears throughout the packages and files in the new copy of your project. Change the file and the package references in your app to the new name, as follows:

  1. Start Android Studio
  2. Click Open an existing Android Studio project.
  3. Navigate to the NewProject directory, select it, and click OK.
  4. Select Build > Clean Project to remove the auto-generated files.
  5. Click the 1:Project side-tab and choose Android from the drop-down menu to see your files in the Project view.
  6. Expand app > java.
  7. Right-click com.example.android.existingproject and choose Refactor > Rename. This opens the Rename dialog.
  8. Change existingproject to newproject.
  9. Check Search in comments and strings and Search for text occurrences and click Refactor.
  10. The Find Refactoring Preview pane appears, showing the code to be refactored.
  11. Click Do Refactor. (ปุ่ม Do Refactor อยู่ที่แถบด้านล่าง มองหาตั้งนาน เพิ่งเจอ)
  12. Expand res > values and double-click the strings.xml file.
  13. Change the name="app_name" string to New Project.

3. Update the build.gradle and AndroidManifest.xml files

Each app you create must have a unique application ID, as defined in the app's build.gradle file. Even though the above steps should have changed the build.gradle file, you should check it to make sure, and also sync the project with the gradle file:

  1. Expand Gradle Scripts and double-click build.gradle (Module: app).
  2. Under defaultConfig, check to make sure that the value of the applicationID key has been changed to "com.example.android.newproject". If it has not changed, change it manuall now.
  3. Click Sync Now in the top right corner of the Android Studio window.
    Tip: You can also choose Tools > Android > Sync Project with Gradle File to sync your gradle files.

In addition, some apps include the app name in readable form (such as "New Project" rather than newproject) as a label in the AndroidManifest.xml file.

  1. Expand app > manifests and double-click AndroidManifest.xml.
  2. Find the statement below, and if necessary, change the label if to the string resource for the new app name:

android:label="@string/app_name"



อ่านรายละเอียดต่อได้ที่ Copy and rename a project

ทำให้ Web App คุยกับ Android ผ่านทาง WebView - Building Web Apps in WebView

โดย Little Bear on 30 ม.ค. 61 12:00

Enabling JavaScript

JavaScript is disabled in a WebView by default. You can enable it through the WebSettings attached to your WebView. You can retrieve WebSettings with getSettings(), then enable JavaScript with setJavaScriptEnabled().

WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

Binding JavaScript code to Android code

public class WebAppInterface {
    Context mContext;

    /** Instantiate the interface and set the context */
    WebAppInterface(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}

Bind class Android

WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");

Coding in javascript

<a href="javascript:void(0)" onclick="showAndroidToast('Hello Android!')">Click for android</a>
<script type="text/javascript">
function showAndroidToast(toast) {
    if (typeof Android=="object") Android.showToast(toast);
    else console.log("App not run on Android")
}
</script>



ที่มา Building Web Apps in WebView

Android เขียนยาก กูเกิลเลยเปิดคอร์ส Android Performance ปรับแต่งประสิทธิภาพแอพ เรียนฟรีผ่านเน็ต

โดย Little Bear on 15 เม.ย. 58 11:11

ข่าวจาก Blognone เรื่องปัญหาเรื่องประสิทธิภาพของแอพบน Android เป็นปัญหาเรื้อรังของโลก Android มานาน กูเกิลจึงพยายามแก้ปัญหานี้ด้วยการเปิดคอร์สออนไลน์เพื่อสอนเทคนิคต่างๆ ซะเลย

คอร์สนี้สอนโดย Colt McAnlis ทีมนักพัฒนาของกูเกิล และเปิดให้เรียนฟรีบนเว็บไซต์ Udacity โดยเนื้อหาที่สอนครอบคลุมทั้งเรื่องการเรนเดอร์กราฟิก การจัดการหน่วยความจำ และการสร้างแอพไม่ให้กินแบตเตอรี่ ระยะเวลาการเรียนประมาณ 4 สัปดาห์ ผู้เรียนควรมีพื้นฐานการพัฒนาแอพบน Android และการใช้ Git/GitHub มาก่อน

สำหรับผู้ที่สนใจเรื่องการปรับแต่งประสิทธิภาพบน Android สามารถดูวิดีโอชุด Android Performance Patterns โดยผู้สอนคนเดียวกันประกอบได้

ที่มา - Udacity, Android Developers Blog ผ่าน Blognone

เขียน App Android จะว่ายากก็ยาก จะว่าง่ายก็ง่าย

โดย Little Bear on 5 มี.ค. 58 13:40

เคยอ่านหนังสือมาก 2-3 เล่มแล้ว เคยลองเขียน app แบบง่าย ๆ แล้ว แต่ก็ยังรู้สึกว่าไม่คล่อง

โจทย์ที่จะให้ทำก็เริ่มมีหลายโจทย์เข้ามา ปีนี้คงเป็นปีที่ต้องลุยเรื่อง app android อย่างจริงจัง

แต่ก่อนอื่น เริ่มต้นด้วยการ "เรียนรู้การเขียนแอพ Android สไตล์ Front-end Web Developer" ก่อนก็คงจะดี เพราะอ่านแล้วเข้าใจอะไรเพิ่มขึ้นมาอีกเยอะ ลองตามไปศึกษากันดูได้ที่ www.siamhtml.com นะครับ

Android : Input type="file" ไม่ทำงานบน webView

โดย Little Bear on 21 ธ.ค. 57 16:29

เพิ่งเขียนให้ app hatyaicityclimate.org สามารถรายงานสถานการณ์ พร้อมอัพโหลดภาพได้ และรายงานระดับน้ำจากสมาชิกด้วย แต่ติดว่าเมื่อกดปุ่มเลือกไฟล์ภาพจากกล้อง ด้วย tag input type="file" จะไม่เด้งหน้าเลือกไฟล์มาให้

คำแนะนำคือให้เปลี่ยนไปใช้ WebChromeClient แทน แก้ไขตามตัวอย่าง หรือไปดูจากที่มาได้เลยครับ

มาเริ่มกันใหม่อีกครั้งกับ Android Studio

โดย Little Bear on 3 ต.ค. 57 22:40

เคยลองลงโปรแกรมและลองเขียน Android app มาครั้งนึง นานมากแล้ว จนกระทั่งเวลาผ่านไป โปรแกรม IDE ที่ใช้งานก็ใช้ไม่ได้ ลองลงหลายตัวแล้วก็ไม่เวิร์ค

คราวนี้กลับมาลอง Android Studio อีกรอบ

เริ่มด้วยการลง Android Studio ติดตั้งได้จาก Android Studio for Ubuntu ซึ่งเป็นการสร้าง new keystore เพื่อเอาไว้ใช้สำหรับการ build app แต่ละครั้ง และทุกครั้งก็ต้องใช้ไฟล์นี้ หากไฟล์นี้หายละก็ แย่เลย เราจะไม่สามารถ build app เพื่อส่งขึ้นไปได้ หากสร้าง keystore ใหม่ก็จะต้องเปลี่ยนชื่อ app ไปเลย ต้องรักษาไฟล์ไว้ให้ดี ๆ อย่างให้หายเชียว

sudo apt-add-repository ppa:paolorotolo/android-studio
sudo apt-get update
sudo apt-get install android-studio

หลังจากเขียน app เสร็จแล้วก็ต้อง build apk เพื่อส่งขึ้น Play Store ด้วย Signing Your Applications

ตอนนี้ก็ได้ลองเขียน app แรก คือ HatyaiCityClimate.Org ยังเป็น app ที่ทำเพียงแค่ไปโหลดหน้าเว็บแอพที่เขียนเตรียมไว้มาแสดง ทำแค่นั้น ส่วนเรื่องอื่น ๆ ที่คิดไว้ เช่น การรายงานสถานการณ์น้ำท่วมด้วยการถ่ายรูปพร้อมพิกัดจาก GPS และบอกเล่าสถานการณ์น้ำท่วม เพื่อเก็บรวบรวมข้อมูลเกี่ยวกับสถานการณ์น้ำท่วมมาวิเคราะห์ในภายหลัง และการทำแผนที่เสี่ยงภัย แผนที่เครือข่าย แผนที่จุดอพยพ จุดจอดรถ เส้นทางเคลื่อนย้าย การจราจร และอีกหลายไอเดีย จะค่อย ๆ ศึกษาและเขียนเพิ่มเติมในภายหลัง

15 items(1/2) 2 Next » Last »|