مقالات تخصصی برنامه نویسی اندروید



 

 

   public void open(View view){

      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

      alertDialogBuilder.setMessage("Are you sure,

         You wanted to make decision");

      alertDialogBuilder.setPositiveButton("yes",

         new DialogInterface.OnClickListener() {

         @Override

         public void onClick(DialogInterface arg0, int arg1) {

            Toast.makeText(MainActivity.this,"You clicked yes

               button",Toast.LENGTH_LONG).show();

         }

      });

 

      alertDialogBuilder.setNegativeButton("No",new DialogInterface.OnClickListener() {

         Override

         public void onClick(DialogInterface dialog, int which) {

            finish();

         }

; (    {

 

   ;( )  AlertDialog alertDialog = alertDialogBuilder.create

      alertDialog.show();

{

{


 


 

 

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

 

قبل از اینکه با ActionBar  آشنا شویم بهتر است مروری بر منو داشته باشیم ، ابتدا یک برنامه ساده اندرویدی ایجاد می کنیم و minSdkVersion را برابر با 11 قرار می دهیم.

 

در داخل پوشه res پوشه جدیدی به نام menu ایجاد می کنیم ، در داخل این پوشه فایل جدیدی به نام main_menu.xml ایجاد می کنیم و کد زیر را در داخل آن می نویسیم :

 

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

   

    <item android:id="@+id/setting"

        android:title="setting"/>

   

    <item android:id="@+id/search"

        android:title="search"/>

   

    <item android:id="@+id/about"

        android:title="about"/>

 

</menu>

 

 

 

فایل xml اصلی برنامه (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"

    android:gravity="center" >

 

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:textSize="40sp"

        android:text="Main Page" />

 

</RelativeLayout>

 

 

 

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

 

package safecomp.ir.actionbarexample;

 

import android.app.Activity;

import android.os.Bundle;

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) {

                        getMenuInflater().inflate(R.menu.main_menu, menu);

                        return super.onCreateOptionsMenu(menu);

            }

}


 


 

نتیجه اجرای کدهای HTML را می توانیم در یک WebView نمایش بدهیم، اما علاوه بر WebView ، در TextView نیز می توان حاصل اجرای کدهای HTML را نمایش داد

 

مثلا تگ های h1 تا h6 باعث بزرگتر نمایش داده شدن در TextView می شوند. البته باید در همین ابتدا تذکر داده شود که برای برخی از تگ های (tags) مربوط به HTML ، باید یک سری کد بنویسیم تا درست عمل کنند. مثلا برای تگ a که برای نمایش یک لینک (link) است، لینک نمایش داده می شود اما با اشاره بر روی آن، به صفحه مقصد منتقل نمی شویم و برای تصحیح این مشکل، باید کمی کد بنویسیم. بنابراین اگر برای نمایش نتیجه اجرای کدهای HTML ، زیاد برایتان تفاوتی بین WebView و TextView نیست، توصیه می شود از همان WebView استفاده کنید، اما اگر از برخی ویژگی های TextView می خواهید استفاده کنید، در ادامه چگونگی اجرای کدهای HTML در یک TextView را شرح خواهیم داد.

 

فرض کنید که یک TextView با id برابر textView1 داریم. متن مورد نظرمان را که حاوی تگ های HTML نیز می باشد، در متغیری با نام myText ذخیره می کنیم و برای نمایش آن در TextView ، کدهای زیر را می نویسیم :

 

String myText = "www.kelidestan.com <h2>www.kelidestan.com</h2> www.kelidestan.com;"

Spanned sp = Html.fromHtml(myText);

TextView tv = (TextView) findViewById(R.id.textView1);  

tv.setText(sp);

 

بنابراین چون در بخشی از متن، از تگ h2 استفاده کرده ایم، آن بخش از متن، بزرگتر نمایش داده می شود.

 

مهمترین بخش از کدها، استفاده از روش Html.fromHtml می باشد.

نکته

 

همان طور که قبلا گفتیم، روش فوق، برای برخی تگ های HTML ، ممکن است درست عمل نکند. مثلا فرض کنید که در متن مورد نظرمان، یک لینک تعریف کرده باشیم (با تگ a) :

 

String myText = "<a href=\"http://www.kelidestan.com/\">www.kelidestan.com</a;>"

Spanned sp = Html.fromHtml(myText);

TextView tv = (TextView) findViewById(R.id.textView1);

tv.setText(sp);

 

دقت کنید که قبل از علامت های " در متن، باید علامت \ را بنویسیم تا با خطا روبرو نشویم. اگر کد بالا اجرا شود، لینک نمایش داده می شود، اما با کلیک بر روی آن، به صفحه مقصد منتقل نمی شویم. برای آنکه لینک به درستی عمل کند، باید یک خط کد به کدهایمان اضافه کنیم :

 

tv.setMovementMethod(LinkMovementMethod.getInstance());

 

بنابراین کل کدهایمان به صورت زیر می باشد :

 

String myText = "<a href=\"http://www.kelidestan.com/\">www.kelidestan.com</a;>"

Spanned sp = Html.fromHtml(myText);)TextView tv = (TextView) findViewById(R.id.textView1);

tv.setText(sp);

tv.setMovementMethod(LinkMovementMethod.getInstance());

 

با این کدها، هنگام اشاره کاربر بر روی لینک، مرورگر اینترنت گوشی اندروید وی باز شده و آن صفحه مقصد را نمایش می دهد.


 


 

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

 

یک پروژه جدید ایجاد میکنیم و اسمش رو Notifications میزاریم.در لایه برنامه از یک Button جهت فراخوانی نوتیفیکیشن استفاده میکنیم.طوری که در هنگام کلیک بر روی دکمه(Button) نوتیفیکیشن نمایش داده میشه.کار کردن با Notifications خیلی ساده است و تنها کافی که به کدهای بخش MainActivity.java توجه کنید.

 

 public class MainActivity extends Activity {

ادامه مطلب


 

اگر بخواهید جریان یک ویدیوی زنده یا هر جریان دیگری مانند ویدیو یا یک OpenGL را نمایش دهید، می توانید از TextureView استفاده کنید که توسط اندروید ارائه شده است.

 

برای استفاده از TextureView تمام کاری که لازم است انجام دهید، گرفتن SurfaceTexture  می باشد. پس SurfaceTexture می تواند برای اجرای محتوا استفاده شود. برای انجام این کار لازم است یک شئ از این کلاس را به عنوان نمونه قرار دهید و اینترفیس SurfaceTextureListener را اجرا کنید. کدهای آن را در زیر مشاهده می کنید.

 

private TextureView myTexture;

public class MainActivity extends Activity implements SurfaceTextureListener{

   protected void onCreate(Bundle savedInstanceState) {

      myTexture = new TextureView(this);

      myTexture.setSurfaceTextureListener(this);

      setContentView(myTexture);

   }

ادامه مطلب


 

شما می توانید رشته هایی از متن را در داخل array ها قرار دهید. این کار درست به روش اعداد صحیح انجام می شود:

String[ ] aryString = new String[5] ;

 

aryString[0] = "This";

aryString[1] = "is";

aryString[2] = "a";

aryString[3] = "string";

aryString[4] = "array";

 

کد بالا یک رشته array را با 5 موقعیت تنظیم می کند. سپس متن به هر موقعیت در array اختصاص داده می شود.

در اینجا یک loop را مشاهده می کنید که در همه ی موقعیت های array قرار گرفته و هر چیزی را که در موقعیت ها وجود دارد، چاپ می کند:

int i;

for ( i=0; i < aryString.length; i++ ) {

System.out.println( aryString[i] );

}

 

هنگامی که مقدار متغیری بع نام I کمتر از طول array به نام aryString باشد، loop به چرخش خود ادامه می دهد.وقتی که برنامه ی بالا اجرا می شود، پنجره ی Output به شکل زیر خواهد بود:

 

شما می توانید یک مرتب سازی روی رشته ی array ها اجرا کنید، درست مانند کاری که می توانید با اعداد صحیح انجام دهید. اما مزتب سازی یک ترتیب صعودی براساس حروف الفبا می باشد، به این معنا که aa قبل از ab قرار می گیرد. به هرحال جاوا برای مقایسه ی یک حرف در رشته ی شما با یک رشته ی دیگر از کاراکترهای یونیکد (Unicode) استفاده می کند. این به این معناست که حروف بزرگ قبل از حروف کوچک قرار می گیرند. کد زیر را امتحان کنید:

 وقتی که برنامه اجرا می شود، پنجره ی Output تصویر زیر را نمایش خواهد داد:

 گرچه ما array را مرتب کرده ایم، اما لغت This در ابتدا قرار می گیرد. اگر یک مرتب سازی الفبایی باشد، انتظار دارید که لغت a در ابتدا قرار بگیرد. این اتفاق می افتد اگر تمام حروف کوچک باشند. در کد برنامه نویسی خود T بزرگ از لغت This را به t کوچک تغییر دهید. اکنون برنامه را مجددا اجرا کنید.

 

همانطور که مشاهده می کنید، لغت this اکنون در پایین قرار دارد.
 


 

یک Array چیست؟

تاکنون با متغیرهایی کار کردید که فقط یک مقدار را در خود حفظ می کنند. متغیرهای صحیح که تنظیم کرده اید، فقط یک عدد را حفظ می کنند و متغیرهای رشته نیز فقط یک رشته از متن را در خود دارند. یک array (ردیف) روشی برای حفظ بیشتر از یک مقدار در یک زمان می باشد که در واقع شبیه لیستی از آیتم ها می باشد. یک array را می توان به عنوان ستون هایی در یک صفحه ی گسترده در نظر گرفت. شما می توانید یک صفحه ی گسترئه تنها با یک ستون و یا تعداد زیادی ستون داشته باشید. داده ای که در یک ردیف مجزا حفظ می شود می تواند مشابه تصویر زیر باشد:

 

مانند یک صفحه ی گسترده، array ها برای هر ردیف دارای یک موقعیت عددی می باشند. این موقعیت ها در یک array از شروع شده و متداولا افزایش می یابند. هر موقعیت نیز در یک array می تواند یک مقدار در خود حفظ کند. در تصویر بالا موقعیت 0 دارای مقدار 10 و موقعیت 1 دارای 14، موقیت 2 دارای مقدار 36 و غیره می باشد.

برای برقراری یک array از اعداد، مشابه تصویر بالا، باید به جاوا اعلام کنید که چه نوع داده ای قرار است وارد array شود ( اعداد صحیح، رشته ها، مقادیر Boolean و غیره). سپس لازم است که اعلام کنید که array دارای چند موقعین می باشد:

int[ ] aryNums;

 

تنها تفاوت بین برقراری یک متغیر عدد صحیح طبیعی و یک array یک جفت کروشه ای است که بعد از نوع داده قرار می گیرد. کروشه ها برای اعلام به جاوا در مورد این که شما قصد برقراری یک array را دارید، کافی هستند. نام array مربوط به تصویر بالا aryNums می باشد. درست مانند متغیرهای طبیعی، می توانید آنها را هر چیزی که می خواهید نام گذاری کنید ( با همان استثنائاتی که قبلا ذکر کردیم.)

 

اما این مورد فقط به جاوا می گوید که شما قصد تنظیم یک array عدد صحیح را دارید. این برنامه تعداد موقعیت هایی را که array باید حفظ کند، اعلام نمی کند. برای انجام این کار باید یک array object جدید تنظیم کنید:

aryNums = new int[6];

 

شما با نام array شروع کرده اید که با علامت تساوی دنبال می شود. پس از علامت تساوی به لغت کلیدی new و سپس مجددا نوع داده ی خود، نیاز دارید.پس از نوع داده یک جفت کروشه قرار می گیرد. بین کروشه ها نیاز به اندازه ی array دارید. اندازه در واقع تعداد موقعیت هایی است که array باید حفظ کند.

 

اگر تمایل دارید، می توانید همه ی آنها را روی یک قرار دهید:

int[ ] aryNums = new int[6];

 

بنابراین ما به جاوا اعلام می کنیم که یک array را با 6 موقعیت در آن تنظیم کند. پس از اجرای این خط، جاوا مقادیر پیش فرض را برای array اختصاص خواهد داد. از آنجایی که ما یک array مقدار صحیح تنظیم کرده ایم، مقادیر پیش فرض برای همه ی 6 موقعیت 0 خواهد بود.

 

برای اینکه در یک array مقادیر را به موقعیت های مختلف اختصاص دهید، این کار را به یک روش طبیعی انجام می دهید:

aryNums[0] = 10;

 

در اینجا مقدار 10 به موقعیت 0 در یک array به نام aryNums اختصاص داده می شود. مجددا کروشه ها برای اشاره به هر موقعیت استفاده می شوند. اگر بخواهید مقدار 14 را به یک array با موقعیت 1 اختصاص دهید، کد مربوط مانند زیر خواهید بود: aryNums[1] = 14;

 

و کد مربوط به مقدار 36 برای موقعیت 2 مانند زیر خواهد بود:

aryNums[2] = 36;

 

فراموش نکنید که از آنجایی که array ها از 0 شروع می شوند، سومین موقعیت در یک array دارای عدد شاخص 2 می باشد.

 

اگر بدانید که چه مقادیری قرار است در یک array قرار گیرند، می توانید آنها را مانند زیر تنظیم کنید:

int[ ] aryNums = { 1, 2, 3, 4 };

 

این متود در حال تنظیم یک array با استفاده از کروشه ها بعد از علامت تساوی، می باشد.در بین کروشه ها مقادیری را تایپ می کنید که array خواهد گرفت. اولین مقدار در موقعیت 0 و دومین مقدار در موقعیت 1 و غیره خواهد بود. توجه داشته باشید که هنوز پس از int نیاز به کروشه دارید، اما نیازی به لغت کلیدی new یا تکرار نوع داده و یا کروشه ها ندارید. اما این فقط مربوط می شود به نوع داده های مقادیر int، رشته و مقادیر char. به عبارت دیگر نیاز به لغت کلیدی new دارید. بنابراین می توانید این کار را انجام دهید:

 

String[ ] aryStrings = {"Autumn", "Spring", "Summer", "Winter" };

 

اما این کار را نمی توانید انجام دهید:

boolean[ ] aryBools = {false, true, false, true};

 

برای تنظیم یک boolean array هنوز نیاز به لغت کلیدی new دارید:

boolean[ ] aryBools = new boolean[ ] {false, true, false, true};

 

برای به دست آوردن مقادیر مربوط به array، نام array را تایپ کنید که با موقعیت array در یک کروشه دنبال می شود. مانند زیر:

System.out.println( aryNums[2] );

کد بالا هر مقداری که در ردیفی با موقعت 2 در یک array به نام aryNums باشد را چاپ می کند
 


Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project.

Step 2 − Add the following code to res/layout/activity_main.xml.
<?xml version="1.0" encoding="utf-8"?>
<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">
   <Button
      android:id="@+id/button"
      android:text="Transfer Bitmap to 2nd Activity"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true" />
</RelativeLayout>

 

ادامه مطلب


 

در این مبحث ابتدا به معرفی وب سرویس و کاربردهای آن پرداخته سپس معماری REST را شرح می‌دهم.

وب سرویس چیست؟

 

وب سرویس‌، استانداردی است برای انتقال داده بین پلتفرم‌ها / ماشین‌ها / نرم افزارهای مختلف (عموما بین سرویس دهنده و سرویس گیرنده یا همان سرور و کلاینت). این استاندارد در محیط های مختلف یکسان است و فارغ از نوع سخت افزار یا سیستم عامل یا زبان برنامه نویسی بکار رفته در نرم افزار مبدا و مقصد، به راحتی می‌توان داده ها را ارسال و دریافت کرد بطوری که این داده ها برای هردو طرف قابل فهم باشد. همانطور که از نام این استاندارد پیداست، وب سرویس‌ها تحت وب قابل دسترسی هستند و انتقال داده ها از طریق پروتکل‌های استانداردی مانند HTTP صورت می‌پذیرد.

ادامه مطلب


ساده ترین راه برای ساختن دایره پیشرفت استفاده از کلاس و فراخوانی ProgressDialog می باشد. LoadingBar هم می تواند ازطریق همین کلاس ساخته شود.  تنها تفاوت منطقی بین bar و دایره این است که اولی وقتی استفاده می شود که شما زمان کل انتظار برای فعالیت خاص را می دانید، در حالیکه دومی زمانی استفاده می شود که شما زمان این انتظار را نمی دانید.

 

برای این منظور لازم است که یک شئ ازاین کلاس را به عنوان نمونه قرار دهید، که ترکیب آن را مشاهده می کنید.

 

ProgressDialog progress =newProgressDialog(this);

 

حال شما می توانید چند ویژگی مربوط به این دیالوگ را، از جمله استایل، متن و غیره ، تنظیم کنید.

 

ادامه مطلب


در فایل های Apk تمامی فایل ها و مشخصات دارای کد هستند، این کدها با ساختار هگزادسیمال کد بندی شده اند ( ساختار 16 تایی).

 

برای توضیح سئوال بالا یه مثال میزنم:

فرض کنید می خواهید یک فایل گرافیک png را به فایل apk اضافه کنید.

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

ادامه مطلب


شما می توانید به راحتی صدا یا تصویر تماس گیرنده را کنترل کنید، به عنوان مثال حالت سکوت، ویبره،صدا و غیره. اندروید کلاس AndroidManager را ارائه می دهد که دسترسی به این کنترل ها را مشخص می کند. برای اینکه از گروه AndroidManager استفاده کنید، ابتدا باید یک شئ از این کلاس را با فراخوانی getSystemService() ، ایجاد کنید.

 

ترکیب آن در زیر داده شده است  .

 

private AudioManager myAudioManager;

myAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

ادامه مطلب


 ارسال کردن پارامتر به متُد، کاری بسیار راحت است، اما کمی مفهوم پیچیده‌ای دارد. در حالت کلی به سه شکل می‌توان به متُد‌ها پارامتر‌هایی را ارسال کرد که عبارت هستند از Call By Value، Call By Pointer، Call By Reference.

 

نکته‌ای که وجود دارد این است که بسیاری از برنامه نویسان جاوا معتقدند که جاوا Call By Value است و عده‌ای دیگر نیز معتقد‌ند که جاوا Call By Reference است. اینکه جاوا را چه می‌نامند اصلا اهمیتی ندارد، بلکه مهم این است که شما رفتار جاوا را بدانید که در هر وضعیت چگونه عمل می‌کند.

ادامه مطلب


در کلاس ها میتوانستیم متدهای abstract و غیر abstract استفاده ‌کنیم. کلاسهای abstract را به اصطلاح میگویند انتزاع جزئی (partial abstraction). برای رسیدن به انتزاع کامل (Full abstraction) باید از interface در جاوا استفاده کرد.

 

Interface چیست؟

Interface مکانیزمی برای رسیدن انتزاع کامل در جاوا است و در آن فقط میتوان متد abstract نوشت که بدنه (body) نداشته باشد! همچنین متغیرهایی که در interface تعریف میشوند همه آنها سه قابلیت زیر را دارند:

همه آنها public هستند.

همه آنها static هستند.

همه آنها final هستند.

چرا interface ؟

در کلاس ها میتوانستیم متدهای abstract و غیر abstract استفاده ‌کنیم. کلاسهای abstract را به اصطلاح میگویند انتزاع جزئی (partial abstraction). برای رسیدن به انتزاع کامل (Full abstraction) باید از interface در جاوا استفاده کرد.

 

Interface چیست؟

Interface مکانیزمی برای رسیدن انتزاع کامل در جاوا است و در آن فقط میتوان متد abstract نوشت که بدنه (body) نداشته باشد! همچنین متغیرهایی که در interface تعریف میشوند همه آنها سه قابلیت زیر را دارند:

همه آنها public هستند.

همه آنها static هستند.

همه آنها final هستند.

چرا interface ؟

ادامه مطلب


چنانچه بخواهیم که یک فونت (font) دلخواه را برای متن نمایش داده شده در یک TextView انتخاب کنیم، باید ابتدا فایل با پسوند ttf مربوط به آن فونت را در پوشه assets از پروژه اندروید، کپی کنیم. مثلا فرض کنید که من یک فایل مربوط به فونت دست نویس (فونتی که به شکل دست نویس می باشد)، با نام Dast_Nevis.ttf دارم و می خواهم از آن، برای نمایش متن در یک TextView استفاده کنم. ابتدا یک پوشه (folder) با نام fonts در پوشه assets از پروژه اندروید می سازم و فایل Dast_Nevis.ttf را در آن کپی می کنم :

 

حال با فرض اینکه TextView را با id برابر textView1 تعریف کرده باشیم، در میان کدهای Activity ، کدهای زیر را می نویسیم :

ادامه مطلب


آخرین ارسال ها

آخرین وبلاگ ها

آخرین جستجو ها