سبد (0)

ساخت اکشن بار سفارشی در اندروید

ساخت اکشن بار سفارشی در اندروید

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

اکشن بار برای دیوایس هایی که از api نسخه ۱۱ یا بالاتر استفاده میکنند به صورت پیشفرض نمایش داده می شود. البته می توان  اکشن بار را حذف کرد.

برنامه هایی که target SDK  آنها کمتر از ورژن ۱۱ قرار میدهند وقتی بر روی دیوایس های پایین تر از api 11 نصب میشوند به جای نمایش نوار اکشن, وقتی دکمه تنظیمات ( که روی دستگاه هست) رو فشار می دهند به صورت  options menu  نمایش داده می شود.

اکشن بار در هنگام اجرای برنامه توسط کاربر قابل مشاهده است اما options menu  وقتی کاربر بر روی دکمه کلیک می کند نمایش داده می شود و ممکن است کاربر متوجه نشود که برنامه شما تنظیمات و دکمه هایی هم در options menu  دارد، پس باید کاری کنید که اکشن بار در تمامی نسخه های اندروید ( البته از api 7 به بعد ) نمایش داده شود.

برای اینکار قبلا کتابخانه های مختلفی توسط توسعه دهندگان ارائه  شده بود ، اما در حال حاضر برای اینکار گوگل یک سری کتابخانه معرفی کرده است با نام  ( Android support library v7).

برای شروع یک پروژه ی جدید بسازید و نام آن را ActionBar قرار دهید.بعد از ساخت پروژه جدید یک لایه ی جدید هم به آن اختصاص دهید.برای ساخت لایه ی جدید به پوشه ی res بروید و روی layout کلیک راست کرده و به قسمت New بروید و روی Android XML File کلیک کنید و آن را Custom بنامید.در این لایه دو TextView تعریف می کنیم:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical" >

<TextView
android:id="@+id/textViewTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="Saeed"
android:textColor="#388e3c"
android:textSize="24dp" />

<TextView
android:id="@+id/textViewTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="online"
android:textColor="#ff5722"
android:textSize="19dp" />

</LinearLayout>
 

بعد از اینکه لایه ی خود را تنظیم کردید وارد MainActivity.java شوید و یک کلاس جدید با نام CustomActionBar ایجاد کنید.در این کلاس اکشن بار را با دستور ()getActionBar فعال کنید.در ادامه با استفاده از دستور setBackgrandDrawable رنگ مورد نظرتان را به اکشن بار بدهید و در ادامه یک آیکن با استفاده از دستور setIcon به اکشن بار اختصاص دهید.سپس با استفاده از LayoutParams یک لایه ی داینامیک بسازید.(در ادامه ی همین جلسه ساخت لایه ی داینامیک را هم توضیح خواهیم داد. ) و لایه ی XML را به آن اضافه کنید و در نهایت کلاس ایجاد شده را فراخوانی کنید.

MainActivity.java

 /*
* ساخت اکشن با سفارشی
* Beyamooz.com
*/

import android.app.ActionBar;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.ViewGroup;

public class MainActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//calling CustomActionBar Class
customActionBar();
setContentView(R.layout.activity_main);
}

private void customActionBar() {

//ActionBar Introduction
ActionBar actionBar = getActionBar();
//create ideal color for ActionBar actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#004d40")));
//create icon for action bar actionBar.setIcon(getResources().getDrawable(R.drawable.ic_launcher));
//View Custom Action bar actionBar.setDisplayShowCustomEnabled(true); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP); //create dynamic layout LayoutParams layout = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
//add xml layout ViewGroup actionBarLayout = (ViewGroup) getLayoutInflater().inflate(R.layout.custom, null); //add display mod on the ActionBar actionBar.setCustomView(actionBarLayout, layout); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }

ساخت لایه ی داینامیک یا پویا

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

برای شروع کار یک پروژه جدید با نام Dynamic بسازید.قرار نیست بر روی لایه ی برنامه کار خاصی  انجام بدهید فقط یک ID به لایه بدهید تا توسط کلاس جاوا شناسایی شود.

وارد کلاس MainActivity.java شوید و کد های زیر یا به آن اضافه کنید.در این کلاس ابتدا لایه ی برنامه را ایجاد و سه تکست ویو با نام های t1,t2,t3 تعریف کنید.سپس تکست ویوها را با استفاده از دستور

new TextView (MainActivity.this ) در کلاس جاوا بسازید.بعد از ساخت تکست ویو ,رنگ متن و اندازه ی متن تکست ویو را وارد کنید.در مرحله ی بعد از LayoutParams استفاده کنید.LayoutParams به شما این امکان را می دهد تا برای هر کدام از عناصر داخل لایه مقادیر و خاصیت هایی را معرفی کنید.و در نهایت LayoutParams را به تکست ویوها اختصاص دهید.

Dynamic


 import android.os.Bundle; import android.app.ActionBar.LayoutParams; import android.app.Activity; import android.graphics.Color; import android.view.Menu; import android.widget.RelativeLayout; import android.widget.TextView; public class MainActivity extends Activity { //layout Introduction Whit TextView RelativeLayout rl; TextView t1, t2, t3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //layout Addressing rl = (RelativeLayout) findViewById(R.id.rl); //TextViews Addressing tv1 = new TextView (MainActivity.this); tv2 = new TextView (MainActivity.this); tv3 = new TextView (MainActivity.this); //The amount of the TextViews t1.setText("Dynamic TextView"); t2.setText("Android"); t3.setText("java"); //Change color TextViews t1.setTextColor(#ff9800); t2.setTextColor(#00bcd4); t3.setTextColor(#795548); //Change size TextViews t1.setTextSize(16); t2.setTextSize(16); t3.setTextSize(16); //create params for the amount of layout elements RelativeLayout.LayoutParams params1=new RelativeLayout.LayoutParams ((int)LayoutParams.WRAP_CONTENT,(int)LayoutParams.WRAP_CONTENT);
//create margin from left params1.leftMargin=115;
//create margin from top params1.topMargin=120; RelativeLayout.LayoutParams params2=new RelativeLayout.LayoutParams ((int)LayoutParams.WRAP_CONTENT,(int)LayoutParams.WRAP_CONTENT); params2.leftMargin=190; params2.topMargin=190; RelativeLayout.LayoutParams params3=new RelativeLayout.LayoutParams ((int)LayoutParams.WRAP_CONTENT,(int)LayoutParams.WRAP_CONTENT); params3.leftMargin=110; params3.topMargin=260; //connetion params from TextViews t1.setLayoutParams(params1); t2.setLayoutParams(params2); t3.setLayoutParams(params3); //Make Views rl.addView(t1); rl.addView(t2); rl.addView(t3); }
تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه