Cara Membuat Aplikasi Android Untuk Pemula 2024

Cara Membuat Aplikasi Android dan Contohnya
Cara Membuat Aplikasi Android untuk pemula dan contohnya berupa Kalkulator Android Sederhana - Android, pasti orang Indonesia sudah tidak asing dengan kata ini. Jika kita berbicara android pasti yang terpintas di pikiran kita pasti tentang smartphone.

Android itu sebenarnya tentang apa si? Android merupakan sistem operasi yang digunakan oleh smartphone dan juga tablet. Sistem ini sama seperti yang kita ketahui sebelumnya yaitu Symbian pada hp lama, iOS pada produk perusahaan Apple, dan OS Blackberry.

Saat ini pertumbuhan android sehingga banyak terdapat fitur bernama aplikasi android. Aplikasi Android pada saat ini menjadi salah satu hal yang banyak dikembangkan oleh para ahli pemrograman.

Cara untuk membuat sebuah aplikasi android untuk pemula ini sebenarnya tidak terlalu sulit. Anda bisa belajar dari cara-cara yang akan dibahas untuk anda berikut ini.

Sejarah Android

Untuk belajar cara membuat aplikasi android, tentu anda harus mengetahui perkembangan android dari tahun ke waktu. Keunggulan utama dari penggunaan android ini adalah metode open source, inilah mengapa Android bisa lebih berjaya dari pada iOS atau Blackberry.

Harga yang ditawarkan oleh Android juga lebih murah namun fitur yang ditawarkan tidak kalah.
Sistem operasi satu ini dibuat sejak 2003 dan perusahaan ini didirikan di Palo Alto, Amerika Serikat di Kota California.

Android pada masa awalnya berdiri oleh empat orang yaitu Andy Rubin (pendiri Danger), Rich Miner (CO-Pendiri Wildfire Communication, Inc.), Nick Sears (Vice President perusahaan T-Mobile), dan Chris White (ketua dari desain dan pengembang perusahaan Webtv).

Perusahaan besar Amerika yaitu Google pada saat itu sedang melirik dalam pasar usaha ponsel genggam yang sedang ramai.

Setelah dua tahun perusahaan Android berdiri akhirnya diakusisi oleh Google agar bisa didanai dan perusahaan ini menjadi lebih besar dan berkembang.

Sejak saat itu aplikasi-aplikasi yang mendukung Android juga mulai berkembang walau belum banyak yang melirik Android.

Aplikasi android bisa berjalan baik tergantung oleh para pengembangnya.  Dalam pembuatannya aplikasi harus dibangun dengan banyak hal dan struktur yang penting.

Struktur itu membuat agar aplikasi ini berjalan baik dan sempurna digunakan oleh pengguna nantinya.

Bentuk kerangka sistem Android

Aplikasi : Android memiliki sifat untuk menggabungkan banyak aplikasi tertentu termasuk email, SMS, kalender, peta, browser, kontak, pemutar video, dan masih banyak lagi.

Aplikasi Framework : Platform ini menyediakan Android sebagai open source sehingga inovasi pada Android menjadi kaya fitur dan penuh inovasi.

Libraries : Dari namanya ini adalah tempat untuk menggabungkan komponen sistem Android agar menjadi satu data set dengan bahasa C untuk pemrograman Android sendiri.

Android Runtime : Ini merupakan satu set inti dalam pemrograman Adnroid yang menggunakan bahasa pemrograman Java.

Linux Kernel : Bagian ini berfungsi sebagai layanan sistem yang ada di Android agar mampu memanajemen segala proses yang ada, Linux juga sebagai lapisan awal antara software dan hardware Android.

Pada saat ini dalam perkembangan Android ada 2 jenis distributor sistem operasi Android yang terus berjalan. Pertama itu dari Google sendiri sebagai pengembang utama.

Kedua adalah sebagai pengembangan yang bebas ini untuk membuka jalan bagi pengembang Android agar bisa mengembangkannya dengan menggunakan bahasa pemrograman Java.

Perusahaan Google memang tidak menutup keran untuk para pengembang aplikasi Android agar bisa memberikan hasil yang luar biasa untuk sistem operasi Android sendiri.

Karena ini juga akhirnya Google mengajukan hak paten pada aplikasi telepon genggam agar bisa berkembang. Pada tahun 2008 akhirnya ponsel Android pertama yaitu HTC menggunakan versi Android 1.0 mendorong banyak perusahaan untuk menggunakan sistem operasi Android.

Pembahasan Cara Membuat Aplikasi Android

Anda sudah tahu sejarah Android dan aplikasinya. Android juga sangat baik untuk para pengembang aplikasi dan juga para pengguna. Berkembangnya Android sendiri membuat para pembuat aplikasi ini semakin beragam.

Dalam belajar untuk membuat aplikasi di Android intinya anda harus belajar dan rajin untuk mencoba. Aplikasi untuk membuat aplikasi Android adalah Android Studio.

Pembuatan aplikasi Android harus diikuti dengan pengalaman dan banyaknya anda dalam mengatasi permasalhan dalam membangun aplikasi Android itu sendiri.

Logika dalam membangun aplikasi Android akan terus bertambah jika anda tekun dalam melakoni pengembangan dalam aplikasi Android.

Pastinya para pembuat aplikasi Android yang baru akan merasa tertantang untuk membuat aplikasi seperti yang sudah terkenal.

Berikut Ini cara membuat aplikasi Android Kalkulator dengan menggunakan aplikasi Android Studio:


Cara Membuat Aplikasi Android Untuk Pemula



1. Buat Project Baru

Untuk memulai membuat aplikasi Android kita gunakan Android Studio dan buat project tersebut di Android Studio.


2. Ubah Simbol Android

Selanjutnya ubah simbol android itu sendiri yang berlogo robot warna hijau. Caranya dengan mengeklik folder res  klik kanan folder minimap  New Immage Asset  ubah nama ic_launcher menjadi ic_calc  pilih image simbol pada path  Next  Finish.


3. Membuat Layout Aplikasi Android

Membuat layout untuk calculator pada activity_main.xml. Kita akan menggunakan dua widget yaitu :
TextView
Button

TextView untuk layar angka kalkulator dengan tombol yang diperlukan. Ini untuk mengganti edit text dan mencegah input manual pengguna dengan keypad Android.

Layout yang digunakan adalah Linear dan Relative Layout

Kode yang lengkap sebagai berikut :

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context=".MainActivity">

    <TextView
        android:id="@+id/txtScreen"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:gravity="right|center_vertical"
        android:maxLength="16"
        android:padding="10dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="30sp"
        android:typeface="serif" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/txtScreen"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnSeven"
                android:text="7" />
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnEight"
                android:text="8" />
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnNine"
                android:text="9"/>
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnDivide"
                android:text="/"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnFour"
                android:text="4"/>
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnFive"
                android:text="5" />
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnSix"
                android:text="6" />
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnMultiply"
                android:text="*" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnOne"
                android:text="1" />
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnTwo"
                android:text="2" />
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnThree"
                android:text="3" />
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnSubtract"
                android:text="-" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
            <Button
                android:layout_width="0dp"
                 android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnDot"
                android:text="." />
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnZero"
                android:text="0" />
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnClear"
                android:text="C" />
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnAdd"
                android:text="+" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnEqual"
                android:text="=" />

        </LinearLayout>

    </LinearLayout>

</RelativeLayout>



4. Style Button

Ini digunakan agar button terlihat lebih menarik lagi Caranya dengan Klik folder res  Klik Kanan Drawable  New  Drawable resource file, beri nama Drawable button dengan nama “Button”.

Masukan Kode Berikut pada drawable/ button.xml

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape>
            <gradient android:angle="90" android:endColor="#FFFFFF" android:startColor="#9EB8FF" android:type="linear" />
            <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
            <size android:width="60dp" android:height="60dp" />
            <stroke android:width="1dp" android:color="#ff3da6ef" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient android:angle="90" android:endColor="#FFFFFF" android:startColor="#ffd9d9d9" android:type="linear" />
            <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
            <size android:width="60dp" android:height="60dp" />
            <stroke android:width="0.5dp" android:color="#ffcecece" />
        </shape>
    </item>
</selector>



5. Background Button

Langkah cara membuat aplikasi android untuk pemula selanjutnya yaitu gunakan button.xml untuk background pada activity_main.xml. dan berikan coding pada setiap button yang akan digunakan.

Berikan kode ini pada masing-masing button

android:background="@drawable/button"
Tuliskan juga kode lengkap pada activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context=".MainActivity">

    <TextView
        android:id="@+id/txtScreen"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:gravity="right|center_vertical"
        android:maxLength="16"
        android:padding="10dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="30sp"
        android:typeface="serif" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/txtScreen"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
            <Button
                android:background="@drawable/button"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnSeven"
                android:text="7" />
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnEight"
                android:text="8" />
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnNine"
                android:text="9"/>
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnDivide"
                android:text="/"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnFour"
                android:text="4"/>
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnFive"
                android:text="5" />
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:background="@drawable/button"
                android:id="@+id/btnSix"
                android:text="6" />
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnMultiply"
                android:text="*" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnOne"
                android:text="1" />
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnTwo"
                android:text="2" />
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnThree"
                android:text="3" />
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnSubtract"
                android:text="-" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnDot"
                android:text="." />
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnZero"
                android:text="0" />
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnClear"
                android:text="C" />
            <Button
                android:layout_width="0dp"
                android:background="@drawable/button"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnAdd"
                android:text="+" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:background="@drawable/button"
                android:layout_weight="1"
                android:textSize="30sp"
                android:id="@+id/btnEqual"
                android:text="=" />

        </LinearLayout>

    </LinearLayout>

</RelativeLayout>



6. Library Kalkulator

Untuk mengevaluasi aritmatika yang ada perlu menggunakan library exp4J agar kalkulator jadi lebih baik  buka terlebih dahulu file “build.gradle (Module: app)” dari skip Gradle.

Beri kode di bawah ini :

compile 'net.objecthunter:exp4j:0.4.4'
Tambahkan koneksi Internet. Kemudian klik Sync now.


7. MainActivity .Java

Tambahkan juga source code berikut :

package badoystudio.com.simplecalculator;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import net.objecthunter.exp4j.Expression;
import net.objecthunter.exp4j.ExpressionBuilder;


public class MainActivity extends ActionBarActivity {
    // IDs of all the numeric buttons
    private int[] numericButtons = {R.id.btnZero, R.id.btnOne, R.id.btnTwo, R.id.btnThree, R.id.btnFour, R.id.btnFive, R.id.btnSix, R.id.btnSeven, R.id.btnEight, R.id.btnNine};
    // IDs of all the operator buttons
    private int[] operatorButtons = {R.id.btnAdd, R.id.btnSubtract, R.id.btnMultiply, R.id.btnDivide};
    // TextView used to display the output
    private TextView txtScreen;
    // Represent whether the lastly pressed key is numeric or not
    private boolean lastNumeric;
    // Represent that current state is in error or not
    private boolean stateError;
    // If true, do not allow to add another DOT
    private boolean lastDot;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Find the TextView
        this.txtScreen = (TextView) findViewById(R.id.txtScreen);
        // Find and set OnClickListener to numeric buttons
        setNumericOnClickListener();
        // Find and set OnClickListener to operator buttons, equal button and decimal point button
        setOperatorOnClickListener();
    }

    /**
     * Find and set OnClickListener to numeric buttons.
     */
    private void setNumericOnClickListener() {
        // Create a common OnClickListener
        View.OnClickListener listener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Just append/set the text of clicked button
                Button button = (Button) v;
                if (stateError) {
                    // If current state is Error, replace the error message
                    txtScreen.setText(button.getText());
                    stateError = false;
                } else {
                    // If not, already there is a valid expression so append to it
                    txtScreen.append(button.getText());
                }
                // Set the flag
                lastNumeric = true;
            }
        };
        // Assign the listener to all the numeric buttons
        for (int id : numericButtons) {
            findViewById(id).setOnClickListener(listener);
        }
    }

    /**
     * Find and set OnClickListener to operator buttons, equal button and decimal point button.
     */
    private void setOperatorOnClickListener() {
        // Create a common OnClickListener for operators
        View.OnClickListener listener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // If the current state is Error do not append the operator
                // If the last input is number only, append the operator
                if (lastNumeric && !stateError) {
                    Button button = (Button) v;
                    txtScreen.append(button.getText());
                    lastNumeric = false;
                    lastDot = false;    // Reset the DOT flag
                }
            }
        };
        // Assign the listener to all the operator buttons
        for (int id : operatorButtons) {
            findViewById(id).setOnClickListener(listener);
        }
        // Decimal point
        findViewById(R.id.btnDot).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (lastNumeric && !stateError && !lastDot) {
                    txtScreen.append(".");
                    lastNumeric = false;
                    lastDot = true;
                }
            }
        });
        // Clear button
        findViewById(R.id.btnClear).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                txtScreen.setText("");  // Clear the screen
                // Reset all the states and flags
                lastNumeric = false;
                stateError = false;
                lastDot = false;
            }
        });
        // Equal button
        findViewById(R.id.btnEqual).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onEqual();
            }
        });
    }

    /**
     * Logic to calculate the solution.
     */
    private void onEqual() {
        // If the current state is error, nothing to do.
        // If the last input is a number only, solution can be found.
        if (lastNumeric && !stateError) {
            // Read the expression
            String txt = txtScreen.getText().toString();
            // Create an Expression (A class from exp4j library)
            Expression expression = new ExpressionBuilder(txt).build();
            try {
                // Calculate the result and display
                double result = expression.evaluate();
                txtScreen.setText(Double.toString(result));
                lastDot = true; // Result contains a dot
            } catch (ArithmeticException ex) {
                // Display an error message
                txtScreen.setText("Error");
                stateError = true;
                lastNumeric = false;
            }
        }
    }
}


8. Mengubah Logo Android

Langkah cara membuat aplikasi android untuk pemula selanjutnya yaitu terkait logo.

Supaya logo Android robot berwarna hijau berganti menjadi @mipmap/ic_calc tambahkan kode berikut :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="badoystudio.com.simplecalculator" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_calc"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


9. Jalankan Aplikasi Android Kalkulator

Langkah yang terakhir yaitu dengan melakukan percobaan menjalankan aplikasi android ini.

Jika memang sudah mengikuti langkah yang telah dibahas pada uraian di atas, maka seharusnya aplikasi bisa berjalan.

Namun jika aplikasi tidak berjalan, silahkan anda cek langkah demi langkah mungkin saja ada yang terlewati.


Akhir Kata

Nah dengan cara-cara tadi, Anda bisa membuat Aplikasi Android sederhana.

Setidaknya mencoba walau ini juga tidak sesempurna bawaan milik Google.

Jadi cara membuat aplikasi android itu tidak terlalu sulit seperti yang dibayangkan bukan? Selamat mencoba ya.
Dody S. Praktisi teknologi, editor di 1001Media, berbagi ilmu dan pengalaman dalam bidang pajak, bisnis dan teknologi serta media sosial.

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel