برنامه نویسی موبایل

برنامه نویسی موبایل

برنامه نویسی موبایل

برنامه نویسی موبایل

  • ۰
  • ۰
در این آموزش قصد داریم که چگونگی ساخت یک لیست (فهرست) ، با استفاده از ListView در طراحی  نرم افزار  اندروید را شرح بدهیم. برای این منظور، یک پروژه می سازیم که اولین صفحه آن (activity اصلی)، به صورت یک لیست باشد.

در برنامه eclipse ، ابتدا یک پروژه اندروید با نام Kelidestan.com بسازید (نام package را برابر com.kelidestan.example انتخاب کنید. نام activity اصلی را برابر MainActivity انتخاب کنید و فایل xml متناظر آن را هم، activity_main انتخاب کنید).

ساخت نرم افزار موبایل ،قرار است که 5 نام ماشین را درون لیست خود داشته باشیم و باید این نام ها را در یک فایل ذخیره کنیم. بنابراین، یک فایل xml با نام cars.xml می سازیم و در آن، نام های مورد نظرمان برای لیست را ذخیره ممی کنیم. این فایل را درون فولدر values می سازیم :
تولید نرم افزار موبایل،ساخت نرم افزار ios

کدهای فایل cars.xml را به صورت زیر می نویسیم :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="names">
        <item name="name_1">پراید</item>
        <item name="name_2">پژو 405</item>
        <item name="name_3">پژو 206</item>
        <item name="name_4">پژو پارس</item>
        <item name="name_5">سمند</item>
    </string-array>
</resources>

اکنون باید فایل activity_main.xml را تغییر بدهیم. تمامی عناصر درون آن را حذف می کنیم و سپس، از منوی Composite ، گزینه ListView را انتخاب کرده و به درون صفحه گرافیکی فایل می کشیم. سپس اندازه ListView را بزرگ می کنیم تا کل صفحه گرافیکی را پر کند.

پس از این تغییرات، کدهای فایل activity_main.xml به صورت زیر خواهد بود :

<LinearLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         >
    </ListView>

</LinearLayout>

به این بخش از کدها توجه کنید :

android:id="@+id/listView1"

باید آن را به صورت زیر تغییر دهیم :

android:id="@android:id/list"

بنابراین درنهایت، کدهای فایل activity_main.xml به صورت زیر خواهد بود :

<LinearLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         >
    </ListView>

</LinearLayout>

فایل MainActivity.java را باز می کنیم، کدهای آن به صورت زیر می باشد :

package com.kelidestan.example;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

کدها را به صورت زیر تغییر می دهیم :

package com.kelidestan.example;

import android.os.Bundle;
import android.app.ListActivity;
import android.view.Menu;
import android.widget.ArrayAdapter;

public class MainActivity extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
              
        setListAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1,
            getResources().getStringArray(R.array.cars)));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

مهمترین تغییر، تغییر کلاس Activity به ListActivity می باشد (تقریبا در ابتدای کدها). همچنین package مربوط به آن را import کرده ایم.
  • nafise poornajjar
  • ۰
  • ۰


همانطور که اطلاع دارید، قابلیت Lambda Expressions در جاوا نسخه 8 معرفی شد و مهمترین قابلیت در برنامه نویسی موبایل به حساب می‌آید. این قابلیت توسعه در این زبان را به شکلی قابل توجه، ساده و سریع می‌کند. اما همانطور که اطلاع دارد، در حال حاضر اندروید از این نسخه از جاوا پشتیبانی نمی‌کند. اما چطور می‌توانیم امکان استفاده از این قابلیت مفید را به Android Studio اضافه کنیم؟ در ادامه مراحل اضافه کردن این قابلیت در Android Studio و محیط لینوکس Ubuntu را دنبال کنید.

برای اضافه کردن پشتیبانی از این قابلیت از پلاگین Retrolambda برای Gradle استفاده خواهد شد، این پلاگین با تبدیل بایت کد جاوا نسخه 8 به 7 و یا 6 در هنگام کامپایل، این قابلیت را برای شما فراهم می‌نماید. اما در ابتدا نیاز به نصب نسخه 8 جاوا به عنوان نسخه پیش‌فرض در اوبونتو خواهید داشت.

از آنجا که استفاده از جاوای اوراکل برای توسعه اندروید توصیه شده است و این نسخه از جاوا در مخازن رسمی اوبونتو موجود نیست ابتدا می‌بایست مخزن webupd8team که یکی از PPA های معتبر اوبونتو است را به پکیج منجر خود اضافه کنید، سپس برای نصب از پکیج منجر استفاده کنید. دستورات زیر را به تریتیب در ترمینال وارد نمایید.
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
1
2
3
    
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

پس از اتمام پروسه نصب برای اطمینان از نصب جاوا 8 به صورت پیش فرض دستور زیر را برای نصب پکیج دیگری که به این منظور ایجاد شده وارد نمایید.
sudo apt-get install oracle-java8-set-default
1
    
sudo apt-get install oracle-java8-set-default

پس از اتمام نصب، موارد زیر را در انتهای فایل /etc/profile.d/jdk.sh اضافه نمایید.
export JAVA6_HOME="/usr/lib/jvm/java-6-oracle"
export JAVA7_HOME="/usr/lib/jvm/java-7-oracle"
export JAVA8_HOME="/usr/lib/jvm/java-8-oracle"
1
2
3
    
export JAVA6_HOME="/usr/lib/jvm/java-6-oracle"
export JAVA7_HOME="/usr/lib/jvm/java-7-oracle"
export JAVA8_HOME="/usr/lib/jvm/java-8-oracle"

سپس، موراد زیر را نیز در انتهای فایل /etc/profile.d/jdk.csh اضافه نمایید.
setenv JAVA6_HOME="/usr/lib/jvm/java-6-oracle"
setenv JAVA7_HOME="/usr/lib/jvm/java-7-oracle"
setenv JAVA8_HOME="/usr/lib/jvm/java-8-oracle"
1
2
3
    
setenv JAVA6_HOME="/usr/lib/jvm/java-6-oracle"
setenv JAVA7_HOME="/usr/lib/jvm/java-7-oracle"
setenv JAVA8_HOME="/usr/lib/jvm/java-8-oracle"

سپس فایل اصلی بیلد پروژه خود را در اندروید استدیو باز نموده و از طریق اضافه کردن خط مشخص شده در کد زیر، پلاگین Retrolambda را به Gradle معرفی کنید.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
        classpath 'me.tatarka:gradle-retrolambda:3.1.0'
    }
}
1
2
3
4
5
6
7
8
9
    
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
        classpath 'me.tatarka:gradle-retrolambda:3.1.0'
    }
}

سپس برای فعال سازی پلاگین خطوط مشخص شده در کد زیر را به فایل بیلد مربوط به اپ اضافه نمایید.
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'

retrolambda {
    jdk System.getenv("JAVA8_HOME")
    oldJdk System.getenv("JAVA7_HOME")
    javaVersion JavaVersion.VERSION_1_7
}
1
2
3
4
5
6
7
8
    
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
 
retrolambda {
    jdk System.getenv("JAVA8_HOME")
    oldJdk System.getenv("JAVA7_HOME")
    javaVersion JavaVersion.VERSION_1_7
}

پس از انجام مراحل بالا برای معرفی نسخه زبان مورد استفاده، کد زیر را به بلاک android در فایل بیلد اپ خود اضافه نمایید.
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
1
2
3
4
    
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

به عنوان آخرین مرحله، کد زیر را به فایل proguard-rules.pro اضافه نمایید و Gradle را مجددا سینک کنید.
Java
-dontwarn java.lang.invoke.*
1
    
-dontwarn java.lang.invoke.*

بهتر است کار تولید نرم افزار موبایل و طراحی نرم افزار موبایل را به شرکت وب یونیک بسپارید.

webuniq.com

  • nafise poornajjar
  • ۰
  • ۰

 دربرنامه نویسی اندروید (جاوا) برای برنامه نویسی موبایل یکی از متداول ترین ارور ها NullPointerException هست ، و اگر بتونیم بیشتر این ارور ها را قبل از وقوع  جلوگیری کنیم ، برنامه ای روان و بدون اکسپشن های اعصاب خورد کن خواهیم داشت.
NullPointerException  زمانی رخ میده که قصد داریم مثلا از یک لیستی که null هست ، عملیات get یا size  یا هر عملیات دیگری  را انجام دهیم. ویا یک رشته (String) را می خواهیم با یک رشته دیگر که مقدار آن null  هست مقایسه گنیم و یا در اندروید و مخصوصا در صفحاتی که از چند thread استفاده شده  یک thread وظیفه گرفتن اطلاعات از اینترنت را دارد و بعد از دریافت اطلاعات قصد بروز رسانی صفحه (UI) را دارد  اما قبل از اتمام کار صفحه بسته شده است و زمان استفاده از context ارور NullPointerException  می دهد .

در این جا چند روش  ساده برای جلوگیری از این  اکسپشن را  قرار میدهم :


۱ : زمان استفاده از متد  equals() و  equalsIgnoreCase()   رشته ای را که مطمئن هستید null نیست  اول قرار دهید

۲ . برای گرفتن مقدار رشته (String) به جای toString() از String.valueof() استفاده کنید .

اگر بر روی یک شئ که null باشده toString() را فراخوانی کنید ، NullPointerException رخ می دهد ، در صورتی که اگر از String.valueOf() استفاده کنید در صورت null بودن مقدار "null" را برمیگرداند .

 

۳ . از متد و لایبرری های امن (safe) استفاده کنید :

لایبرری های زیادی هستند که زمان null بودن اکسپشن نمی دهند :

مثلا به جای استفاده از isEmpty() می توانید از StringUtils.isEmpty(null)استفاده کنید

. در متد ها مخصوصا متد هایی که قصد برگرداندن یک لیست را دارند null برنگردانید : به جای برگرداندن null یک کالکشن خالی یا یک مقدار خالی را برگردانید (مثلا یک رشته خالی "" ) در این صورت از بروز این اکسپشن در جاهایی که از این متد استفاده کرده اید جلوگیری می کنید.

در ضمن میتوانید از خدمات وب یونیک در زمینه تولید نرم افزار موبایل که روی پلتفرم های موجود از جمله J2ME, Windows Mobile, BlackBerry, iPhone/iPad, Android ارائه می گردد،استفاده نمایید.

  • nafise poornajjar
  • ۰
  • ۰

این متن دومین مطلب آزمایشی من است که به زودی آن را حذف خواهم کرد.

زکات علم، نشر آن است. هر وبلاگ می تواند پایگاهی برای نشر علم و دانش باشد. بهره برداری علمی از وبلاگ ها نقش بسزایی در تولید محتوای مفید فارسی در اینترنت خواهد داشت. انتشار جزوات و متون درسی، یافته های تحقیقی و مقالات علمی از جمله کاربردهای علمی قابل تصور برای ,بلاگ ها است.

همچنین وبلاگ نویسی یکی از موثرترین شیوه های نوین اطلاع رسانی است و در جهان کم نیستند وبلاگ هایی که با رسانه های رسمی خبری رقابت می کنند. در بعد کسب و کار نیز، روز به روز بر تعداد شرکت هایی که اطلاع رسانی محصولات، خدمات و رویدادهای خود را از طریق بلاگ انجام می دهند افزوده می شود.

  • nafise poornajjar
  • ۰
  • ۰

این متن اولین مطلب آزمایشی من است که به زودی آن را حذف خواهم کرد.

مرد خردمند هنر پیشه را، عمر دو بایست در این روزگار، تا به یکی تجربه اندوختن، با دگری تجربه بردن به کار!

اگر همه ما تجربیات مفید خود را در اختیار دیگران قرار دهیم همه خواهند توانست با انتخاب ها و تصمیم های درست تر، استفاده بهتری از وقت و عمر خود داشته باشند.

همچنین گاهی هدف از نوشتن ترویج نظرات و دیدگاه های شخصی نویسنده یا ابراز احساسات و عواطف اوست. برخی هم انتشار نظرات خود را فرصتی برای نقد و ارزیابی آن می دانند. البته بدیهی است کسانی که دیدگاه های خود را در قالب هنر بیان می کنند، تاثیر بیشتری بر محیط پیرامون خود می گذارند.

  • nafise poornajjar