آموزش برنامه نویسی اندروید – سبک ها و تم ها (قسمت اول)

  • توسط king2
  • شنبه , ۲۹ مهر ۱۳۹۶
  • 227 بازدید
  • 0

سبک ها

سبک (stayle)، ظاهر و قالب رابط کاربری برنامه را تعریف می کند. سبک ها می تواند روی یک ویو به صورت تکی (از داخل فایل های صفحه بندی) و یا روی قالب کلی برنامه و یا اکتیویتی (از داخل فایل مانیفست) اعمال شوند.

تعریف سبک ها

سبک ها در داخل فایل های منبعی XML تعریف می شوند. محتوای این فایل XML صفحه بندی تفاوت دارد و باید آن را در مسیر res/values/directory ذخیره کرد؛ همچنین محتوای این فایل در داخل تگ <resources>  قرار می گیرد. نام فایل XML به صورت دلخواه است، اما باید از پسوند xml استفاده کرد.

می توان چندین سبک را در هر فایل با استفاده از تگ <style>  تعریف کرد، اما لازم است به منظور شناسایی سبک ها برای هر کدام یک نام منحصر بفرد تعیین کنیم. در اندروید ویژگی های هر سبک نیز با استفاده از تگ <item>  مانند آنچه در زیر آورده شده است تعریف می شود:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomFontStyle">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:capitalize">characters</item>
<item name="android:typeface">monospace</item>
<item name="android:textSize">12pt</item>
<item name="android:textColor">#00FF00</item>/> 
</style>
</resources>

مقدار یک آیتم می تواند یک کلمه ی کلیدی، رنگ، ارجاع به یک سبک دیگر و یا هر مقدار قابل قبول دیگری باشد.

 

استفاده از سبک ها

بعد از تعریف کردن یک سبک، با استفاده از ویژگی style مانند زیر، می توانیم از آن در طراحی رابط کاربری استفاده کنیم:

<?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="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/text_id"
style="@style/CustomFontStyle"
android:text="@string/hello_world" />
</LinearLayout>

برای درک مفهوم مربوط به سبک ها در اندروید، مثال زیر را بررسی کنید.

مطلب پیشنهادی: آموزش برنامه نویسی اندروید – گیرنده های اعلام

 

مثال

این مثال در چند مرحله ی ساده نحوه ی ایجاد یک سبک و سپس اعمال آن روی کامپوننت مورد نظرمان را نشان می دهد. با یک مثال ساده اندروید شروع به کار میکنیم.

مرحله توضیحات
۱ با استفاده از Android Studio IDE یک برنامه اندروید ایجاد کنید و به عنوانMy Application  تحت بسته com.example.saira_000.myapplication نامگذاری کنید.نحوه ایجاد پروژه در مثال Hello World توضیح داده شده.
۲ فایل src/MainActivity.java را برای اضافه کردن دکمه های listeners و handleers تغییر دهید.
۳ محتوای فایل res/values/style.xml را به منظور تعریف یک سبک جدید برای دکمه ها مانند آنچه در ادامه آمده است تغییر دهید.
۴ محتوای فایل res/layout/activity_main.xml را مانند آنچه در ادامه آمده است تغییر دهید.
۵ نرم افزار را با شبیه ساز اندروید اجرا کنید و نتیجه را مورد بررسی قرار دهید.

در زیر محتوای فایل فعالیت اکتیویتی اصلی src/com.example.myapplication/MainActivity.java آمده است.

package com.example.saira_000.myapplication;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1=(Button)findViewById(R.id.button);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"YOUR MESSAGE",Toast.LENGTH_LONG).show();
}
});
}
}

در زیر محتوای فایل res/values/style.xml آورده شده است که سبک جدید CustomButtonStyle  در آن تعریف شده.

<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="CustomButtonStyle">
<item name="android:layout_width">100dp</item>
<item name="android:layout_height">38dp</item>
<item name="android:capitalize">characters</item>
<item name="android:typeface">monospace</item>
<item name="android:shadowDx">1.2</item>
<item name="android:shadowDy">1.2</item>
<item name="android:shadowRadius">2</item>
<item name="android:textColor">#000000</item>
<item name="android:gravity" >center</item>
<item name="android:layout_margin" >3dp</item>
<item name="android:textSize" >5pt</item>
<item name="android:background">#70ff106d</item>
<item name="android:shadowColor" >#70ff106d</item>
</style>
</resources>

در ادامه مطلب محتوای فایل 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" 
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Custom Button Style "
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point "
android:textColor="#ff87ff09"
android:textSize="30dp"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:src="@drawable/abc"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/CustomButtonStyle"
android:text="New Button"
android:id="@+id/button"
android:layout_below="@+id/imageButton"
android:layout_alignLeft="@+id/imageButton"
android:layout_alignStart="@+id/imageButton"
android:layout_alignRight="@+id/textView2"
android:layout_alignEnd="@+id/textView2" />
</RelativeLayout>

در ادامه محتویات res/values/stringings.xml برای تعریف دو ثابت جدید:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">myapplication</string>
</resources>

و در ادامه محتوای پیش فرض AndroidManifest.xml آورده شده است.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.guidemo">
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.saira_000.myapplication"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

الان برنامه myapplication  را اجرا کنید. فرض میکنم AVD را در حین انجام تنظیمات محیط ایجاد کرده اید. برای اجرای برنامه از Android Studio، یکی از فایل های اکتیویتی پروژه خود را باز کنید و روی آیکون اجرا در نوار ابزار کلیک کنید. Android Studio این برنامه را در AVD خود نصب می کند و آن را اجرا می کند و اگر همه چیز تنظیم باشد و برنامه شما مشکلی نداشته باشد، پنجره Emulator همانند تصویر زیر است.

سبک ها

اگر بر روی دکمه بالا کلیک کنید، پیام مورد نظر نمایش داده می شود.

 

وراثت در سبک ها

اندروید نیز در روشی بسیار مشابه به ارث بری سبک ها در طراحی صفحات وب از وراثت پشتیبانی می کند. این امر باعث می شود تا بتوانیم در تعریف یک سبک جدید از ویژگی های سبک های موجود استفاده کنیم و فقط ویژگی هایی که لازم داریم را تغییر دهیم یا اضافه کنیم.

<resources>
...
<style name="MyCustomTheme" parent="android:style/Theme">
<item name="android:textColorPrimary">#ffff0000</item>
</style>
...
</resources>

برای پیاده سازی یک تم سفارشی باید فایل MyAndroidApp/res/values/themes.xml ایجاد کرد و محتوایی مانند زیر را در آن قرار داد.

<activity
android:name="com.myapp.MyActivity"
...
android:theme="@style/MyCustomTheme"
/>

در زیر تم مورد نظرمان را در فایل AndroidManifest.xml  روی اکتیویتی اعمال می کنیم:

سبک ها

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

منبع: tutorialspoint

  • facebook
  • googleplus
  • twitter
  • linkedin
  • linkedin
قبلی «
بعدی »

دیدگاهتان را بنویسید

تازه های طراحی سایت

بهینه سازی وبسایت

دانستی های سایت