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

اموزش برنامه نویسی اندروید تخصصی

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

اموزش برنامه نویسی اندروید تخصصی

 

به دو دلیل:

یک حجم نرم افزار کمتر میشه به دلیل استفاده نکردن از چندین رزولوشن برای عکس هامون

دو کیفیت عکس در تمامی رزولوشن ها یکیه فرق نمیکنه یا بهتر بگم افت کیفیت نداریم

چه فرقی بین عکس های وکتور با عکس های معمولیه ؟

 

.ببینید تصاویر معمولی از قسمت های  کوچیکی به نام پیکسل تشکیل شدن  یعنی اگر روی یه عکس زوم کنیم میبینیم که به مربع های کوچیکی تقسیم بندی شدن.  هر پیکسل از سه تا عدد تشکیل شده که هر عدد میتونه از صفر تا ۲۵۶ باشه  که این سه تا عدد هر کدومشون به یه رنگ  قرمز سبز آبی اشاره میکنن  و مقدار این عداد شدته رنگ ها رو تعیین میکنه یعنی هر چی عدد رنگ ها به ۲۵۶ نزدیک تر باشه شدت اون رنگ بیشتر و هر چی به صفر نزدیک تر باشه  شدت رنگ کمتر میشه اگر هر سه تا رنگ صفر باشن پس شدتی تو هیچ رنگی وجود نداره میشه سیاه اون پیکسل و برعکس.

 

  • vahid hasani


This example demonstrates how do I add custom adapter for my listView in android.

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"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>

Step 3 − Add the following code to src/MainActivity.java
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ListView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ListView listView;
ArrayList<MyData> arrayList = new ArrayList<>();
MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listView);
arrayList.add(new MyData(1, " Mashu","987576443"));
arrayList.add(new MyData(2, " Azhar","8787576768"));
arrayList.add(new MyData(3, " Niyaz","65757657657"));
adapter = new MyAdapter(this, arrayList);
listView.setAdapter(adapter);
}
}

Step 4 − Create a java class(MyData.java) and add the following code
public class MyData {
private int serialNum;
private String name;
private String mobileNumber;
public MyData(int num, String name, String mobileNumber) {
this.serialNum = num;
this.name = name;
this.mobileNumber = mobileNumber;
}
public int getNum() {
return serialNum;
}
public void setNum(int num) {
this.serialNum = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobileNumber() {
return mobileNumber;
}
public void setMobileNumber(String mobileNumber) {
this.mobileNumber = mobileNumber;
}
}

Step 5 − Create a java class(MyAdapter.java) and add the following code −
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class MyAdapter extends BaseAdapter {
private Context context;
private ArrayList<MyData> arrayList;
private TextView serialNum, name, contactNum;
public MyAdapter(Context context, ArrayList<MyData> arrayList) {
this.context = context;
this.arrayList = arrayList;
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(context).inflate(R.layout.row, parent, false);
serialNum = convertView.findViewById(R.id.serailNumber);
name = convertView.findViewById(R.id.studentName);
contactNum = convertView.findViewById(R.id.mobileNum);
serialNum.setText(" " + arrayList.get(position).getNum());
name.setText(arrayList.get(position).getName());
contactNum.setText(arrayList.get(position).getMobileNumber());
return convertView;
}
}

  • vahid hasani

 

فرض کنید در حافظه خارجی (External Storage)، یک پوشه با نام myFolder داریم و قصد داریم که لیست فایل ها و پوشه های (Folders) موجود در آن پوشه را به صورت آرایه ای (Array) از جنس File به دست آوریم، برای این منظور، گدهای زیر را می نویسیم :

 

File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "/myFolder");
File[] list = dir.listFiles();

خط اول کدها برای به دست آوردن آدرس مسیر حافظه خارجی (External Storage) می باشد (

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

اکنون فرض کنید بخواهیم مسیر کامل (absolute path) مربوط به اولین عنصر در آرایه (اولین فایل یا پوشه شناسایی شده) را به صورت یک رشته (String) به دست آوریم، برای این منظور، کد زیر را می نویسیم (از روش getAbsolutePath استفاده می کنیم(

 

File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "/myFolder");
File[] list = dir.listFiles();
File file = list[0];
String str = file.getAbsolutePath();

یا فرض کنید بخواهیم تنها نام (بدون ذکر مسیر) مربوط به اولین عنصر در آرایه (اولین فایل یا پوشه شناسایی شده) را به صورت یک رشته (String) به دست آوریم، برای این منظور، کد زیر را می نویسیم (از روش getName استفاده می کنیم) :

 

File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "/myFolder");
File[] list = dir.listFiles();
File file = list[0];
String str = file.getName();

نکته

دقت شود که در صورت کدنویسی برای فرآیندی که نیاز به دسترسی به حافظه خارجی (External Storage) دارد، باید کدهای زیر درون AndroidManifest.xml نوشته شود (برای اجازه دادن برای نوشتن در حافظه خارجی و یا خواندن از حافظه خارجی

 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />


 

  • vahid hasani

 

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

 

و یا زمانی که تنظیماتی  بر روی کامپیوترتان اعمال کرده اید که در حال حاضر ویندوز شما از کار افتاده باشه تو این مرحله شما چیکار می کنید ؟ شاید خیلی از شما پاسخ بدی که ویندوز جدید نصب می کنیم .اما من می گم که دست نگه دارید واسه این  مشکلات سیستم عامل راه حل داره !

 

اولین راه این است که کامپیوتر خود را ریست کنید و دکمه F8 را به طور مداوم فشار دهید تا یه منو بوت کمکی به نمایش در آید که اولین گرزینه قابل انتخابش  safe mode است اگر در همین منو جستجو کنید یه گزینه وجود داره که ویندوز را به آخرین تنظیمات خوب بر می گرداند Last know good configuration این گزینه را انتخاب کنید تا ویندوز شما به حالت قبل باز گردد .

 

این گزینه در صورتی کار می کند که ویندوز شما دارای نقطه بازیابی یا ریستور پوینت باشه که در ادامه طریقه ساختن آن را توضیح می دم به هر حال اگر با این روش مشکل برطرف شد که خوب اگه که نه دیگه باید از سیستم ریستور ویندوز استفاده کنید شاید با خودتون بگید که سیستم ریستور چیست ؟ سیستم ریستور یا به زبان انگلیسی System Restore  امکانی است که تنظیمات صحیح ویندوز را به خاطر می سپارد و آن را در محلی در دیسک سخت برای مواقع اضطراری ذخیره می کند و با بازیابی کردن این اطلاعات می توان از بروز مشکل جلوگیری کرد . برای اجرای برنامه ریستور می توانید در منوی start در قسمت Run کلمه restore را تایپ کرده و اینتر بزنید تا پنجره ای با چهار آیکن به شما نشان داده شود حال روی آیکنی که شکل یک کامپیوتر و فلش سبز روی آن است دو بار کلیک کنید تا برنامه باز بشه .راه دیگه رفتن به مسیر زیره :

 

start>all programs>Accessories>system restore>System Restore

 

البته این نکته رو بگم که برای دیدن قدرت واقعی و عملکرد صحیح system restore باید برنامه را در محیط safe mode اجرا کنید برای این منظور کامپیوتر خود را ریستارت کرده و دکمه F8 را به طور مرتب فشار دهید تا منوی کمکی بوت باز شود سپس از گرزینه های موجود گزینه Safe Mode را انتخاب کنید و سپس از یوزر های قابل استفاده از یوزی لوگین ببشید که Administrator باشه بعد این برنامه را اجرا کنید .

 

وقتی برنامه باز شد اولین گزینه سیستم ریستور یعنی RESTORE MY COMPUTER TO AN EARLIER TIME ویندوز را به حالت قبل باز گرداند و دومین گزینه یعنی Create Restore Points می توان ریستور پوینتی ایجاد کرد. برای برطرف کردن مشکل RESTORE MY COMPUTER TO AN EARLIER TIME را کلیک کنید سپس تاریخی را که در آن کامپیوتر خوب کار می کرده است را کلیک کنید NEXT را کلیک کنید . در این حالت سیستم عملیات بازیابی و بازگشت به قبل را آغاز می کند .پس از اتمام سیستم مجددا راه اندازی خواهد شد . پس از بازگشت به ویندوز پنجره ای باز می شود که با زدن OK به محیط ویندوز وارد می شوید . حالا یه پیشنهاد شما می تونید قبل از اینکه نرم افزار مشکوکی را نصب کنید که از عواقب آن خبری ندارید میتونید یک ریستور پوینت یا نقطه بازیابی بسازید تا در صورت بروز مشکل به حالت قبل از =نصب اون نرم افزار برید برای ساختن یک Restore Points به مسیر قبل رفته و این بار گزینه Create Restore Points را انتخاب کنید و با کلیک بر روی NEXT به قسمت بعد رفته و نامی را برای Restore Points جدید انتخاب کنید و حال گزینه Create را کلیک کنید پس از چند لحظه کل تنظیمات ویندوز ذخیره می شود . از این پس در صورت بروز مشکل هنگام بوت ویندوز باید کلید F8 را پایین نگاه داشت و با انتخاب گزینه Last Known Good Configouration ویندوز را به حالت قبل باز گرداند .


 

  • vahid hasani

 

در بسیاری از برنامه ها دیدم که درهنگام زدن دکمه بک گوشی تلفن همراه  یک پیغامی با  متن (برای خروج دوباره دکمه بک را  فشار دهید) رو به رو شدیم.در این مبحث میخواهیم این حالت رو به برنامه خودمون بیاریم.

 

برای شروع کار یک پروژه جدید ایجاد می کنیم و اسمش رو DoubleBack قرار میدیم.در ادامه وارد کلاس MainActivity.java می شویم و کدهای جاوای برنامه رو  داخلش می نویسیم.(نیازی به وارد کردن عنصری به لایه برنامه  نیست).در داخل کدهای جاوای برنامه ابتدا یک زمان برای دومین پرس دکمه بک در نظر میگیریم که در اینجا  2 ثانیه است.سپس یک متد onBackPressed ایجاد میکنم تا با دکمه بک کار کنیم. (کدهای کامل کلاس MainActivity).

 

 import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.widget.Toast;

 

public class MainActivity extends Activity {

 

private static final int TIME_INTERVAL = 2000; // # milliseconds, زمان مورد نیاز  برای دو پرس دکمه بازگشت.

private long mBackPressed;

 

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

 

//متد دکمه بازگشت

@Override

public void onBackPressed()

{

if (mBackPressed + TIME_INTERVAL > System.currentTimeMillis())

{

super.onBackPressed();

return;

}

//نمایش پیغام هنگام پرس دکمه بازگشت

else { Toast.makeText(getBaseContext(), "برای خروج از برنامه بروی دکمه خروج  دوباره کنید!", Toast.LENGTH_SHORT).show(); }

 

mBackPressed = System.currentTimeMillis();

}


 

  • vahid hasani

کد جاوا برای درست کردن یک دایره


 


 

 

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.os.Bundle;

import android.widget.ImageView;

 

public class Test extends Activity{

  ImageView drawingImageView;

 

  @Override

  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    drawingImageView = (ImageView)findViewById(R.id.DrawingImageView);

    Bitmap bitmap = Bitmap.createBitmap((int) getWindowManager()

        .getDefaultDisplay().getWidth(), (int) getWindowManager()

        .getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(bitmap);

    drawingImageView.setImageBitmap(bitmap);

 

    // Circle

 

    Paint paint = new Paint();

    paint.setColor(Color.GREEN);


 

paint.setStyle(Paint.Style.STROKE);

    float x = 50;

    float y = 50;

    float radius = 20;

 canvas.drawCircle(x, y, radius, paint);

 

  }

}


 

  • vahid hasani

 

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

 

برای شروع کار یک پروژه جدید ایجاد میکنم به اسم SlideAnimation.بروی لایه اصلی برنامه یا activity_main.xml یک دکمه Button قرار میدیم.وظیفه این دکمه هدایت کاربر به صفحه دوم برنامه است.برای ایجاد صفحه دوم برنامه یا یک اکتیوتی جدید به این مطلب مراجعه کنید.بعد از تکمیل کردن لایه برنامه میریم سراغ انیمیشن ها و ساختشون.برای اینکار یک فولدر جدید در پوشه res ایجاد میکنیم به اسم anim در داخلش از دوتا فایل Xml به نام های animation.xml وanimation2.xml برای ایجاد حالت نمایشی اسلاید استفاده میکنیم.(کدهای کامل فایل animation.xml).

 

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

 

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

android:fromXDelta="100%p"

android:toXDelta="0"

android:duration="500"/>

 

 

کدهای کامل فایل  animation2.xml را  در زیر مشاهده  میکنید.

 

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

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

android:fromXDelta="0"

android:toXDelta="-50%p"

android:duration="500"/>

 

خیلی عالی.بعد از اتمام کردن طراحی انیمیشن ها،میریم سراغ فایل MainActivity.java و نوشتن کدهای جاوای برنامه.در داخل این فایل ابتدا دکمه رو معرفی کردیم و با استفاده از قابلیت OnClickListener براش یک رویداد کلیک ساختیم تا وقتی روش کلیک شد با استفاده از Intent کاربر رو به اکتیوتی دومی هدایت کنه و با استفاده از Bundle انیمیشن ها رو به حالت نمایشی اکتیوتی اضافه کنه.(کدهای کامل MainActivity.java  ).

 

 import android.os.Bundle;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.app.ActivityOptions;

import android.content.Intent;

import android.view.Menu;

import android.view.View;

import android.widget.Button;

 

@SuppressLint("NewApi")

public class MainActivity extends Activity {

 

@SuppressLint("NewApi")

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

 

//معرفی دکمه

Button btnopen = (Button)findViewById(R.id.btn);

 

//ایجاد یک کلیک لیسنر برای دکمه

btnopen.setOnClickListener(new View.OnClickListener() {

 

 

 

@SuppressLint("NewApi")

@Override

public void onClick(View v) {

 

// ایجاد اینتنت برای رفتن به اکتیوتی دومی

Intent slideactivity = new Intent(MainActivity.this, Screen.class);

 

//ایجاد انیمیشن با استفاده از فایل های xml برای حرکت در بین اکتیوتی ها

Bundle bndlanimation =

ActivityOptions.makeCustomAnimation(getApplicationContext(),  R.anim.animation,R.anim.animation2).toBundle();

startActivity(slideactivity, bndlanimation);

 

}

});

 

}


 

  • vahid hasani

.

مرجله ی اول : ابتدا آدرس دقیق کلاس مورد نظر را در یک رشته ی String ذخیره کنید مانند :

 

String MyClass = "ir.forayapps.text.MyClassName";

 

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

 

Class MyClassName = Class.forName("MyClass");

 

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


 

  • vahid hasani