21 ارسال در این موضوع قرار دارد

[align=justify][rtl]در این قسمت از آموزش قصد ساخت یک اپلیکیشن فارسی  برای اندروید داریم، برای اینکار باید مراحل زیر را انجام دهید. برای فارسی نویسی باید کلاس PersianReshape.java رو اضافه کرد. برای اضافه کردن این کلاس باید ابتدا آن را دانلود کرده سپس در برنامه استفاده کرد. دقت کنید نام Package این کلاس در خط اول  را حذف کرده و نام پکیج برنامه تان را بجای آن قرار دهید تا خطایی رخ ندهد. [قبل از شروع مطالعه ادامه مطلب، ابتدا به عکس انتهای این مقاله نگاه کنید تا دید کلی از کاری که میخواهیم انجام دهیم را پیدا کنید.][/rtl]

[/align]

[align=justify]شروع پروژه[/align]

[align=justify]۱-ابتدا یک پروژه جدید میسازیم. File/New/Project و سپس از پنجره باز شده گزینه Android Project را انتخاب کنید.[/align]

[align=center]418x398http://www.kamalan.com/wp-content/uploads/2012/01/01.png[/img][/align]

[align=justify]سپس باید نام پروژه و حداقلAPI ی که برنامه ما آنرا پشتیبانی میکند، تعیین کنیم. مطابق شکل تنظیمات را انجام دهید.[/align]

[align=center]370x488http://www.kamalan.com/wp-content/uploads/2012/01/02.png[/img][/align]

[align=justify]۲-افزودن کلاس PersianReshape.java (این کلاس در سورس برنامه که در پایین برای دانلود قرار داده شده وجود دارد. برای برنامه های خودتان کافی است این کلاس را کپی و به برنامه خودتان منتقل کنید).[/align]

[align=center]550x337http://www.kamalan.com/wp-content/uploads/2012/01/03.png[/img][/align]

[align=justify]۳- layout اصلی برنامه را mail.xml قرار داده ایم و ساختار برنامه را در آن معرفی کرده ایم. قسمتی از ساختار برنامه را در شکل زیر ملاحظه میکنید (برای دیدن سایر قسمتها حتماً کد برنامه را از پایین همین مطلب دانلود کنید).[/align]

[align=center]468x543http://www.kamalan.com/wp-content/uploads/2012/01/04.png[/img][/align]

[align=justify]۴- سپس به res/values/string.xml رفته و مطابق شکل زیر stringهای برنامه را معرفی کرده ایم.[/align]

[align=center]476x307http://www.kamalan.com/wp-content/uploads/2012/01/05.png[/img][/align]

[align=justify]۵- بعد از معرفی منابع رشته (string) در مرحله قبل به فایل کد نویسی کلاس اصلی برنامه Farsi.java رفته و منابع را فراخوانی می کنیم (به برنامه معرفی میکنیم).[/align]

[align=center]550x509http://www.kamalan.com/wp-content/uploads/2012/01/06.png[/img][/align]

[align=justify]شرح :[/align]

[align=justify]۱-۵- ابتدا فونت خود را در مسیر asset و پوشه ایجاده شده font قرار میدهیم. برای نمونه از فونت BZar در این برنامه استفاده شده است. از دستور Typeface برای تعریف کردن فونت استفاده می شود.[/align]

[align=justify] 444x43http://www.kamalan.com/wp-content/uploads/2012/01/08.png[/img][/align]

[align=justify] ۲-۵- بعد باید ویجت خود را تعریف کنیم.[/align]

[align=justify] 460x22http://www.kamalan.com/wp-content/uploads/2012/01/081.png[/img][/align]

[align=justify] ۳-۵- سپس فونت را به ویجت نسبت می دهیم.[/align]

[align=justify]228x19http://www.kamalan.com/wp-content/uploads/2012/01/082.png[/img][/align]

[align=justify] ۴-۵- یک متغیر رشته ای تعریف کرده ، سپس محتویات ویجت را درون آن می ریزیم.[/align]

[align=justify]460x19http://www.kamalan.com/wp-content/uploads/2012/01/083.png[/img][/align]

[align=justify]۵-۵-سرانجام در خاصیت متن ویجت، کلاس PersianReshape را فراخوانی می کنیم و رشته قبل را بعنوان محتویات درون آن قرار می دهیم.[/align]

[align=justify]415x25http://www.kamalan.com/wp-content/uploads/2012/01/084.png[/img][/align]

[align=justify]۶-کد ویجت خروج :[/align]

[align=justify]Finish();[/align]

[align=justify]کار تمام است. میتوانید پروژه را بر روی ایمولاتور تست نمایید. تصویر خروجی برنامه مطابق شکل زیر است.[/align]

[align=justify]

Finish();
 

[rtl]  کار تمام است. میتوانید پروژه را بر روی ایمولاتور تست نمایید. تصویر خروجی برنامه مطابق شکل زیر است.[/rtl]

[/align]

[align=center]527x386http://www.kamalan.com/wp-content/uploads/2012/01/07.png[/img]

[align=justify]دانلود از آپلود سنتر انجمن پی سی دروید :

http://p30droid.com/Uploader/do.php?id=23

پسورد :

www.p30droid.com

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام ممنون از این آموزش خوب

من طبق آموزش شما توی یه تاپیک دیگه دارم از فایل txt داده می خونم ، فایل txt هم از هر دو نوع uniqode و utf-8 گذاشتم و با این کلاس و روش شما سعی کردم داده فارسی رو نمایش بدم

اما فارسی ها نمایش داده نمیشه ، اشکال عجیب و غریب میاد به جاش ولی اعداد درسته .

ممنون میشم من و راهنمایی کنین

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

شما قسمتی از پروژه یا کدتون رو بزارید،تا مشکل رو بررسی کنم

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام

اینم از کد برنامه

package com.example.mashhadcinema;import java.io.DataInputStream;import java.io.IOException;import java.io.InputStream;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View.OnClickListener;import android.view.View;import android.view.WindowManager;import android.widget.ImageButton;import android.widget.TextView;import android.graphics.Typeface;public class AboutUs extends Activity {private static final String DEBUG_TAG = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {	super.onCreate(savedInstanceState);	setContentView(R.layout.activity_aboutus);	getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,			 WindowManager.LayoutParams.FLAG_FULLSCREEN);	ImageButton BtnBack = (ImageButton)findViewById(R.id.BtnBack);	BtnBack.setOnClickListener(BtnBackOnClick);	InputStream iFile = getResources().openRawResource(R.raw.aboutus);	Typeface face = Typeface.createFromAsset(getAssets(), "font/TAHOMA.TTF");	try {		TextView helpText = (TextView) findViewById(R.id.TextShowData); 		helpText.setTypeface(face);		String strFile = inputStreamToString(iFile);       		helpText.setText(PersianReshape.reshape(strFile));	    } 	catch (Exception e) 	    {	Log.e(DEBUG_TAG, "InputStreamToString failure", e);	    }}public String inputStreamToString(InputStream is) throws IOException {       StringBuffer sBuffer = new StringBuffer();       DataInputStream dataIO = new DataInputStream(is);       String strLine = null;       while ((strLine = dataIO.readLine()) != null) {           sBuffer.append(strLine + "\n");       }       dataIO.close();       is.close();       return sBuffer.toString();   }private OnClickListener BtnBackOnClick = new OnClickListener() {	@Override	public void onClick(View arg0) {		// TODO Auto-generated method stub		LoadMainMenuActivity();	}};private void LoadMainMenuActivity(){	Intent intent = new Intent(this,AppMenu.class);	startActivity(intent);	AboutUs.this.finish();}}

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

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

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

میشه بگید توی کدوم پست ؟

هر چی میگردم پیدا نمی کنم

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

توی اون مثال شما آدرس فایل رو در sdcard دادین

File fileDir = new File("mnt/sdcard/zendeginame.txt");

حالا اگه من بخوام از همون raw تو خود پروژه بخونم باید اینجوری بنویسم ؟

File fileDir = new File(R.raw.aboutus);

این درسته ؟

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

من کدم رو تغییر دادم ، اما هیچ متنی نمایش نمیده

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

protected void onCreate(Bundle savedInstanceState) {	super.onCreate(savedInstanceState);	setContentView(R.layout.activity_aboutus);	getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,			 WindowManager.LayoutParams.FLAG_FULLSCREEN);	ImageButton BtnBack = (ImageButton)findViewById(R.id.BtnBack);	BtnBack.setOnClickListener(BtnBackOnClick);	//InputStream iFile = getResources().openRawResource(R.raw.aboutus);	Typeface face = Typeface.createFromAsset(getAssets(), "font/TAHOMA.TTF");	//try {		TextView helpText = (TextView) findViewById(R.id.TextShowData); 		helpText.setTypeface(face);		//String strFile = inputStreamToString(iFile);       		//helpText.setText(PersianReshape.reshape(strFile));	 //} 	//catch (Exception e) 	  //  {	//Log.e(DEBUG_TAG, "InputStreamToString failure", e);	    //}		StringBuffer sBuffer = new StringBuffer();		try {			File fileDir = new File("../res/raw/aboutus.txt");			BufferedReader in = new BufferedReader(			   new InputStreamReader(	                      new FileInputStream(fileDir), "UTF8"));			String str;			while ((str = in.readLine()) != null) {			    System.out.println(str);			    sBuffer.append(str + "\n");			}			helpText.setText(sBuffer);	                in.close();		    } 		    catch (UnsupportedEncodingException e) 		    {				System.out.println(e.getMessage());		    } 		    catch (IOException e) 		    {				System.out.println(e.getMessage());		    }		    catch (Exception e)		    {				System.out.println(e.getMessage());		    }}public String inputStreamToString(InputStream is) throws IOException {	StringBuffer sBuffer = new StringBuffer();	DataInputStream dataIO = new DataInputStream(is);	String strLine = null;	while ((strLine = dataIO.readLine()) != null) {		sBuffer.append(strLine + "\n");	}	dataIO.close();	is.close();	return sBuffer.toString();}

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

مشکل من با این تابع حل شد

public static String readTextFile(Context ctx, int resId)   {       InputStream inputStream = ctx.getResources().openRawResource(resId);       InputStreamReader inputreader = new InputStreamReader(inputStream);       BufferedReader bufferedreader = new BufferedReader(inputreader);       String line;       StringBuilder stringBuilder = new StringBuilder();       try       {           while (( line = bufferedreader.readLine()) != null)           {               stringBuilder.append(line);               stringBuilder.append('\n');           }       }       catch (IOException e)       {           return null;       }       return stringBuilder.toString();   }

نحوه صدا زدن تایع

String data = readTextFile(this, R.raw.simorgh);		textview1.setText(data);

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام یک سوال داشتم . سورس این برنامه و  PersianReshape.java را از کجا باید دانلود کنم

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام من این برنامه را دانلود و آن را import کردم ولی تمام اکتیویتیهاش از خط اول که نام پکیج نوشته شده تا خطاهای دیگه eroor مید البته تا حالا برنامه های دیگه ای هم که import کردم error دارن چرا ؟؟؟

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

این مشکل از نسخه ADT هستش که روی اکلیپس نصب کردین میباشد، باید نسخه SDK و ADT یکسانی را نصب کنید تا مشکل برطرف گردد.

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

این مشکل از نسخه ADT هستش که روی اکلیپس نصب کردین میباشد، باید نسخه SDK و ADT یکسانی را نصب کنید تا مشکل برطرف گردد.

هر دو ورژن  22.0.1 هستن.!!

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
package activities;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;import com.dukhtar.R;import android.app.Activity;import android.content.Context;import android.graphics.Typeface;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class search extends Activity {EditText txt_search;TextView txt_matn, txt_matn2;Button btn;public String fonts = "BZar.ttf";@Overrideprotected void onCreate(Bundle savedInstanceState) {	// TODO Auto-generated method stub	super.onCreate(savedInstanceState);	setContentView(R.layout.search);	txt_search = (EditText) findViewById(R.id.search);	txt_matn = (TextView) findViewById(R.id.txt_search);	txt_matn2 = (TextView) findViewById(R.id.txt_matn);	btn = (Button) findViewById(R.id.btn_search);	btn.setOnClickListener(new View.OnClickListener() {		@Override		public void onClick(View v) {			// TODO Auto-generated method stub			InputStream iFile = getResources().openRawResource(					R.raw.quizhelp);			try {				String text = txt_search.getText().toString();				String strFile = inputStreamToString(iFile);				int i = strFile.indexOf(text);				if (i == 0) {					Toast.makeText(getApplicationContext(), "Not Found",							Toast.LENGTH_LONG).show();				} else {					try {						int i2 = strFile.lastIndexOf(text);						if (i2 < 0-1) {							Toast.makeText(getApplicationContext(),									"Not Found", Toast.LENGTH_LONG).show();						} else {							String searching = strFile.substring(i, i + 5);							txt_matn.setText(searching);							Typeface face = Typeface.createFromAsset(getAssets(), "font/" + fonts									+ "");							txt_matn.setTypeface(face);							String str_lbl = (String) txt_matn.getText().toString();							txt_matn.setText(adapters.PersianReshape.reshape(str_lbl));							Toast.makeText(search.this, adapters.PersianReshape.reshape(str_lbl), 1).show();							String array = strFile.substring(i, i +20);							txt_matn2.setText(array);						}					} catch (Exception e) {						// TODO: handle exception						Toast.makeText(getApplicationContext(), "error",								Toast.LENGTH_LONG).show();					}				}			} catch (IOException e) {				// TODO Auto-generated catch block				Toast.makeText(getApplicationContext(), "Error",						Toast.LENGTH_LONG).show();				// e.printStackTrace();			}		}	});}public String inputStreamToString(InputStream is) throws IOException {	StringBuffer sBuffer = new StringBuffer();	DataInputStream dataIO = new DataInputStream(is);	String strLine = null;	while ((strLine = dataIO.readLine()) != null) {		sBuffer.append(strLine + "\n");	}	dataIO.close();	is.close();	return sBuffer.toString();}

این چرا اینجوریه؟

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

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

.

با سلام

سوال اول :

شما به جای :

"fonts/tahoma.ttf"

این کد رو نوشتید: 

"fonts/"+fonts+""

منظورتان چه بوده؟

----------

سوال دوم :

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

در کد من در قسمت getAssets() خطا می گیرد. چرا؟ این هم کد:

TextView myTextView = (TextView) rootView.findViewById(R.id.textView_top);Typeface myTypeface = Typeface.createFromAsset(getAssets(), "fonts/tahoma.ttf");myTextView.setTypeface(myTypeface);

آیا برای فونت در ابتدای اکتیویتی باید متغییری تعریف کرد؟

اشکال کد من در کجاست؟

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

مشکل من با این تابع حل شد

public static String readTextFile(Context ctx, int resId)   {       InputStream inputStream = ctx.getResources().openRawResource(resId);       InputStreamReader inputreader = new InputStreamReader(inputStream);       BufferedReader bufferedreader = new BufferedReader(inputreader);       String line;       StringBuilder stringBuilder = new StringBuilder();       try       {           while (( line = bufferedreader.readLine()) != null)           {               stringBuilder.append(line);               stringBuilder.append('\n');           }       }       catch (IOException e)       {           return null;       }       return stringBuilder.toString();   }

نحوه صدا زدن تایع

String data = readTextFile(this, R.raw.simorgh);		textview1.setText(data);

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

من میخوام یه فایل تکست رو فراخوانی کنم اما با روشی که دوستان لینکشو دادن فقط میشه با انگلیسی کار کرد اما با فارسی کار نمی کنه،لطفا کله کدایی که تو کلاس جاوا برای این نوشتی رو بگو، خیلی گیر کردم

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

مشکل من با قراردادن کد :

getActivity().getAssets()

به جای :

getAssets()

حل شد.

از دوستان خواهشمندم به دو سوال ساده من \اسخ دهند. ممنون

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام

من می خواهم لیست ویو فارسی ساز کنم

[shcode=java]

        ListHome = getResources().getStringArray(R.array.list_arry_f);

        ListView lst = (ListView) findViewById(R.id.listView1);

        ArrayAdapter lstAdap =  new ArrayAdapter(

                this, android.R.layout.simple_list_item_1, ListHome);

        lst.setAdapter(lstAdap);

        lst.setOnItemClickListener(new OnItemClickListener() {

            @Override

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

                    long arg3) {

                // TODO Auto-generated method stub

               

            }

           

        });

       

        String str_lst = lst.getAdapter().toString();

        lst.????(persianReshape.reshape(str_lst));

       

[/shcode]

آخری خط، شماره 19 به جای علامت سوال چی کد لازم داره؟ از setText استفاده کردم بازم نشده!! حتی setAdapter امتحان کردم، متاسفانه درست نشد

راهنمایی کنید

ممنون

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

اندروید نسخه 3 به بالا از فارسی پشتیبانی می کنه و نیازی به فارسی سازی نیست ! 

اگر بخواید از نسخه زیر 3 استفاده کنید راه حل فارسی کردن ListView به این صورته که باید Adapter اونو سفارشی کنید ! در سایت stackoverflow کلی مثال برای این کار هست  لینک یکی از تاپیکشا رو گذاشتم!

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری