بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

توابع و کلاسهای کوچیک و مفید ( مشارکت کنید )

طاهر  11 سال پیش  9 سال پیش
+173 0

با سلام

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

تا مورد استفاده دوستان قرار بگیره

البته این رو هم بگم که بنده توابع رو بسته به نیاز خودم طراحی میکنم .

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

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

این توابع فقط برای ایده گرفتن میتونه مورد استفاده بشه و بسته به نیاز خودتون تغییرش بدین

برای هر تابع فقط در زیر همون پست نظر بدین از ارسال پست های جدید خودداری کنید

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

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

لیست توابع :

1.  یه تابع کوچیک برای گرفتن تصاویر از پوشه asset

2. دو تابع برای تبدیل عکس ذخیره شده در دیتابیس بصورت bite[] به  bitmap  و drawable

3. بررسی وضعیت دسترسی به اینترنت

4. خواندن یک فایل متنی از پوشه  assets

5. خواندن یک فایل متنی از پوشه  raw

 6. اشتراک فایل apk برنامه در داخل برنامه

7. تابع خروج از برنامه

8. کلاس اسکرول افقی که حالت پیش فرض اون سمت راست باشه.

9. ارسال بازخورد به فیس بوک

10. ارسال بازخورد به اینستگرام

11. خروج از برنامه با دوبار زدن دکمه بازگشت

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

13. حذف یک پوشه به همراه کلیه محتویاتش شامل فایل ها و پوشه ها

14. بررسی وضعیت دسترسی به فلاش دوربین

15. نمایش پیغام بصورت toast در هر جای برنامه

+2 0
کاره بسیار جالب و مفیدیه انشالله موفق باشید در ضمن توضیحی مختصر هم برای هر تابع یا کلاس داده بشه خیلی عالی میشه سپاس (11 سال پیش)
+1 0
این خیلی خوبه طاهر جان ولی بهتر اینه که شما هم مثل دوستان دیگه در این تاپیک لینک یک پست باز کنید و مطالبتون رو به صلاحدید خودتون به رایگان یا برای معاوضه یا فروش بزارید که بانک سورسمون زودتر آماده بشه و در یک جا متمرکز باشه . باز هم هر طور میل شماست . (11 سال پیش)
+2 0
دوستان انشاالله در جریان این تاپیک هستید ! لینک (11 سال پیش)
+2 0
تا قسمت ویکی سایت راه بیفته این تایپیک میتونه مفید باشه برای خیلی ها (11 سال پیش)
+1 0
با سلام و خیلی ممنون که اطلاعات و تجربیات خود را به اشتراک می گذارید با تشکر (11 سال پیش)
0 0
آقا دستت درد نکنه (11 سال پیش)
0 0
ایول من پشتتونم (11 سال پیش)
+1 0
یکی از بهترین تاپیک های این مجموعه (11 سال پیش)
+2 0
به نظر من اگه یه توضیح کوچیک هم در زیر توابع داده بشه بد نیست (10 سال پیش)
0 0
دوست عزیز @طاهر، یه پیشنهاد دارم، با توجه به اینکه تعداد کدها داره زیاد میشه برای جستجوی سریعتر کدها و همچنین جلوگیری از درج کدهای تکراری لطفا تو همین اول پست لیست تمام کدهایی که تا الان گذاشته شده (منظورم نام شون هست) رو بزارید و کدهای جدید رو به انتهای لیست اضافه کنید. (9 سال پیش)
 برای این سوال 58 پاسخ وجود دارد.
پاسخ به سوال 
طاهر  11 سال پیش
+25 0

یه تابع کوچیک برای گرفتن تصاویر از پوشه asset

 public static Bitmap getBitmapFromAsset(Context paramContext, String strName)
{
AssetManager assetManager = paramContext.getAssets();
InputStream istr = null;

try {
istr = assetManager.open(strName);
}
catch (IOException e) {
e.printStackTrace();
}
Bitmap bitmap = BitmapFactory.decodeStream(istr);
return bitmap;
}
پاسخ به سوال 
طاهر  11 سال پیش
+20 0

دو تابع برای تبدیل عکس ذخیره شده در دیتابیس بصورت bite[] به  bitmap  و drawable 

 public static Drawable convertImageByteToDrawable(byte[] paramByte, String paramString)
{
return (Drawable) Drawable.createFromStream(new ByteArrayInputStream(paramByte), paramString);
}



public static Bitmap convertImageByteToBitmap(byte[] paramByte)
{
//Drawable localByteArrayInputStream = ConvertImageByteToDrawable(paramByte, paramString);
ByteArrayInputStream localByteArrayInputStream = new ByteArrayInputStream(paramByte);
//Drawable.createFromStream(localByteArrayInputStream, paramString);
return (Bitmap) BitmapFactory.decodeStream(localByteArrayInputStream);
}
پاسخ به سوال 
طاهر  11 سال پیش
+25 0

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

 /**
* returns True OR False
* */
public static boolean isPackageInstalled(Context context, String packagename) {
PackageManager pm = context.getPackageManager();
ApplicationInfo appInfo;
try {
//pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
appInfo = pm.getApplicationInfo(packagename, PackageManager.GET_ACTIVITIES);
return true;
}
catch (NameNotFoundException e) {
return false;
}
}
0 0
مطمئنید این وضعیت دسترسی به اینترنت رو چک میکنه؟ فکر میکنم تیتر رو اشتباه نوشتید ;) (11 سال پیش)
+1 0
درسته اصلاح کردم ممنون از یاداوری (11 سال پیش)
پاسخ به سوال 
طاهر  11 سال پیش
+25 0

خیلی از موارد هست که اسم یک drawable رو داریم و میخوایم تصویر رو با اون عوض کنید یا بکگراند رو به اون تغییر بدیم

بهترین راه اینه که resourceid اش رو بدست بیارم و از توابع مربوطه استفاده کنیم :

  public static int getResourceId(Context context, String identifier, String value) {
try {
int resourceId = context.getResources().getIdentifier(value, identifier, context.getPackageName());
return resourceId;
}
catch (Exception e) {
e.printStackTrace();
return 0;
}
}

مثال :

ImageView imgCat= (ImageView) findViewById(R.id.imgCat);
int resourceId = getResourceId(G.context, "drawable", item.icon);
if (resourceId > 0)
imgCat.setImageResource(resourceId);
else
imgCat.setVisibility(View.INVISIBLE);

 

 
0 0
سلام و خسته نباشید به شما دوست عزیز من تازه کار هستم و به این قطعه کد شما خیلی نیاز دارم ولی اگه امکان داره یکم برام توضیح بده. در تابع getresourceId به جای ارگمان String value چه چیزی باید ارسال بشه به تابع؟ و نیز برای من به item.icon گیر میده. میشه یه توضیح دربارش بهم بدی؟ ممنون میشم اگه به تلگرامم پیام بدی یا email بفرستی برام @mammadgoldking mammad.ghaemi@gmail.com (9 سال پیش)
0 0
email: mammad.ghaemi@gmail.com telegram:@mammadgoldking (9 سال پیش)
پاسخ به سوال 
طاهر  11 سال پیش
+21 0

خواندن یک فایل متنی از پوشه  assets

  /*
* Read text file from assets folder
*/
public static void readFileFromAssetsFolder(Context paramContext, String paramStringFileName, TextView paramViewTextView, Boolean paramBooleanShowHtml) throws IOException {

InputStream inputStream = paramContext.getAssets().open(paramStringFileName);

StringBuilder text = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
try {
String line;
while ((line = reader.readLine()) != null) {
text.append(line);
text.append('\n');
}
if (paramBooleanShowHtml)
paramViewTextView.setText(Html.fromHtml(text.toString()));
else
paramViewTextView.setText(text);

} finally {
reader.close();

}

}

پاسخ به سوال 
طاهر  11 سال پیش
+19 0

خواندن فایل متنی از پوشه raw

 /*
* Read text file from raw folder
*/
public static void readFileFromRawFolder(Context paramContext, int paramIntFileName, TextView paramViewTextView, Boolean paramBooleanShowHtml) throws IOException {

InputStream inputStream = paramContext.getResources().openRawResource(paramIntFileName);
StringBuilder text = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try {
String line;
while ((line = reader.readLine()) != null) {
text.append(line);
text.append('\n');
}
if (paramBooleanShowHtml)
paramViewTextView.setText(Html.fromHtml(text.toString()));
else
paramViewTextView.setText(text);

} finally {
reader.close();

}

}

پاسخ به سوال 
Hossein Kurd  11 سال پیش
+19 0

جسارتا

خواندن یک فایل متنی از asset


try { String body = new Scanner(G.appConfigs.currentActivity.getAssets().open("contact.txt")).useDelimiter("\\A").next(); }catch(Exception e){ Log.e(G.Logs.Error, "Error To Read 'contact.txt' In Asset: " + e); ExceptionHelper.catchMessage(e); }
+4 0
برادر بصورت یه تابع دربیاری خیلی بهتره ضمنا اولین پست رو هم یه مطالعه میکردی (11 سال پیش)
پاسخ به سوال 
MEHDI007  11 سال پیش
+30 0

ببخشید گفتم ما هم دانش کممون رو اشتراک بگذاریم

برای گرفتن (Android version) و API level

(Android version)ذخیره کردن آن در یک رشته (String) کد زیر:

 String androidOS = Build.VERSION.RELEASE;

 API LEVEL ذخیره کردن آن در یک رشته (int) کد زیر:

 int currentapiVersion = android.os.Build.VERSION.SDK_INT;
0 0
. (11 سال پیش)
پاسخ به سوال 
طاهر  11 سال پیش
+36 0

اشتراک فایل apk برنامه در داخل برنامه

 public static void sendAppItself(Activity paramActivity, String paramStringToastMsg) throws IOException {
Toast.makeText(paramActivity, paramStringToastMsg, Toast.LENGTH_LONG).show();
PackageManager pm = paramActivity.getPackageManager();
ApplicationInfo appInfo;
try {
appInfo = pm.getApplicationInfo(paramActivity.getPackageName(),
PackageManager.GET_META_DATA);
Intent sendBt = new Intent(Intent.ACTION_SEND);
// NOT THIS! sendBt.setType("application/vnd.android.package-archive");
sendBt.setType("*/*");
sendBt.putExtra(Intent.EXTRA_STREAM,
Uri.parse("file://" + appInfo.publicSourceDir));

Log.v("PACKAGEDIR: ", appInfo.publicSourceDir);
paramActivity.startActivity(Intent.createChooser(sendBt, "Share image using"));
// paramActivity.startActivity(sendBt);
}
catch (NameNotFoundException e1) {
e1.printStackTrace();
}

}
0 0
این کد جواب نمیده توی گوشی واقعی من توی اینجا مشکلمو بیان کردم لینک (10 سال پیش)
0 0
تو قسمت paramActivity چی باید بنویسیم؟ (10 سال پیش)
+1 0
برا paramActivity همون کلاس رو دادم حل شد (10 سال پیش)
پاسخ به سوال 
طاهر  11 سال پیش
+34 0

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

 /*
* Send Email for feadback
*/
public static void sendEmailFeadback(Activity paramActivity, String paramStringToastMsg, String paramStringPackage) {
Toast.makeText(paramActivity, paramStringToastMsg, Toast.LENGTH_LONG).show();
Intent localIntent1 = new Intent("android.intent.action.SEND");
localIntent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
String str = "";
try
{
str = paramActivity.getPackageManager().getPackageInfo(paramActivity.getPackageName(), 0).versionName;
localIntent1.setType("plain/text");
String[] arrayOfString = new String[1];
arrayOfString[0] = "info@negahetazehco.com";
localIntent1.putExtra("android.intent.extra.EMAIL", arrayOfString);
localIntent1.putExtra("android.intent.extra.SUBJECT", paramStringPackage + str + " Feedback");
localIntent1.putExtra("android.intent.extra.TEXT", "\n\n\n<from " + paramStringPackage + " " + str + ">");
paramActivity.startActivity(Intent.createChooser(localIntent1, "Send mail..."));
}
catch (PackageManager.NameNotFoundException localNameNotFoundException)
{
localNameNotFoundException.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}
0 0
سلام این متد(ارسال ایمیل از داخل برنامه) 3 تا ورودی میخاد لطفا بفرمایید باید چه اصلاعاتی پر کنم (11 سال پیش)
0 0
از اسم ورودی ها مشخصه که هر کدام به چه کار میاد (11 سال پیش)
0 0
آیا این کد نیاز به permission حاصی دارد؟ (11 سال پیش)
0 0
خودم متوجه شدم. permission خاصی لازم نداره. فقط اگر روی گوشی تست می کنید، وای فای گوشی را روشن کنید تا کار کنه. (11 سال پیش)
0 0
سلام و خسته نباشید. اگه بخوایم که کاربر متوجه ارسال ایمیل نشه یعنی نمایش برنامه ها انجام نشه چی؟ خواهش میکنم به این مورد پاسخ بدید (11 سال پیش)
0 0
سلام و خسته نباشید. اگه بخوایم که کاربر متوجه ارسال ایمیل نشه یعنی نمایش برنامه ها انجام نشه چی؟ خواهش میکنم به این مورد پاسخ بدید (11 سال پیش)
0 0
(10 سال پیش)
پاسخ به سوال 
طاهر  11 سال پیش
+43 0

ارسال نظر ، دیدن جزئیات برنامه ، نصب برنامه در بازار

  /*
* Open app detail page in cafebazaar directly
*/
public static void openCafeBazaarFeadBack(Context paramContext, final String paramStringPackage, final String paramStringAction)
{
Intent inten;
if (paramStringAction.equals("rating"))
inten = new Intent(Intent.ACTION_EDIT); // submit rate for app
else if (paramStringAction.equals("detail"))
inten = new Intent(Intent.ACTION_VIEW); // view detail of app
else if (paramStringAction.equals("setup"))
inten = new Intent(Intent.ACTION_INSERT); // setup app directly
else
inten = new Intent(Intent.ACTION_VIEW); // view detail of app

inten.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {

inten.setData(Uri.parse("bazaar://details?id=" + paramStringPackage));
paramContext.startActivity(inten);
}
catch (android.content.ActivityNotFoundException anfe) {
inten.setData(Uri.parse("http://cafebazaar.ir/app/?id=" + paramStringPackage));
paramContext.startActivity(inten);
}
catch (Exception e) {
e.printStackTrace();
}

}
+1 0
مرسی :) همشون به درد بخور هستن باز هم بذارین (11 سال پیش)
+2 0
فکر میکنم دوستان باید از شما یک تشکر ویژه بکنن، این جور توابع رو برنامه نویسا برای راحتی کار خودشون بعد مدتها کارکردن و برنامه نوشتن تهیه می کنن و اینکه کسی چنین توابعی رو به اشتراک بذاره واقعا لطف بزرگی در حق باقی دوستان کرده، در واقع تجارب خودتون رو به اشتراک گذاشتید (11 سال پیش)
0 0
عالی بود ،ولی چرا فقط اکشن detail عمل می کنه؟ (11 سال پیش)
پاسخ به سوال 
طاهر  11 سال پیش
+22 0

تابع خروج از برنامه :

 /*
* Exit Of App
*/
public static void AppExit()
{
G.CurrentActivity.finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
G.CurrentActivity.startActivity(intent);
System.exit(0);
}
+2 0
نقش اینتنت رو متوجه نشدم. میشه یکم توضیح بدید (11 سال پیش)
+1 0
با همون system.exit(0 خالی هم که میشه از برنامه خارج شد ! (11 سال پیش)
+1 0
این دستور برنامه رو از لیست RecentApp اندروید هم پاک میکنه ؟ کسی اگر میدونه لطفا این دستور رو بزاره (11 سال پیش)
0 0
منم همچین مشکلی رو دارم ینی میخوام که با خروج از برنامه از لیست RecentApp هم پاک بشه.. (10 سال پیش)
0 0
ممنون به G.context به اول finish اضافه میکنم ارور میده. چیکار کنم؟ (9 سال پیش)
پاسخ به سوال 
MEHDI007  11 سال پیش
+24 0

حالت عمودی و افقی برنامه.

برای اینکه Activity به حالت عمودی (portrait) برود، باید کدهای زیر را در میان کدهای Activity بنویسیم :

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

برای اینکه Activity به حالت افقی (landscape) برود، باید کدهای زیر را در میان کدهای Activity بنویسیم :

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+4 0
اگر این کد را درون ActivityEnhanced قرار دهیم کل پروژه به خوبی بر روی یک حالت ثابت می شود. (11 سال پیش)
0 0
آقا دستت درد نکنه (11 سال پیش)
پاسخ به سوال 
MEHDI007  11 سال پیش
+16 0

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

فرض کنید که بخواهیم تاریخ و زمان فعلی را به صورت شکل کلی زیر در یک رشته (String) داشته باشیم (البته سال میلادی) :

 

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
String currentDateandTime = sdf.format(new Date());

بنابراین تاریخ و زمان فعلی در یک متغیر از جنس رشته (String) و با نام currentDateandTime ذخیره می شود.

 yyyy   -->   سال (year)
MM --> ماه (month)
dd --> روز (day)
HH --> ساعت (hour)
mm --> دقیقه (minute)
ss --> ثانیه (second)

 

+1 0
برادر قراره در این تایپیک توابع یا کلاس گذاشته بشه نه تکه کدهای ساده . لطف کن این کدها رو در یک تایپیک جداگانه قرار بده که نظم تایپیک بهم نخوره (11 سال پیش)
+1 0
بله منم با آقای "طاهر" موافقم، بصورت تابع بنویسید و ورودی و خروجی های لازم رو طوری قرار بدید که بشه در هرجا براحتی استفادش کرد، فکر می کنم بهتره برای بیشتر این توابع یه ورودی Activity یا Context هم تعریف کنید تا در کلاس های دیگه هم قابل اجرا باشن (11 سال پیش)
پاسخ به سوال 
طاهر  11 سال پیش
+17 0

کلاس اسکرول افقی که حالت پیش فرض اون سمت راست باشه.

 
public class RightAlignedHorizontalScrollView extends HorizontalScrollView {

public RightAlignedHorizontalScrollView(Context context) {
super(context);
}


public RightAlignedHorizontalScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}


public RightAlignedHorizontalScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}


@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
scrollTo(getChildAt(0).getMeasuredWidth(), 0);
}
}
0 0
من الان داخل یک اکتویتی و ایک ام ال یه اسکرول دارم که میخوام یک لایه داخل این اسکرول بزارم و چند تا دکمه یا هر چیزی داخلش این لایه که بشه به صورت اقفی اسکرول کرد .. خب باید بیام مثل کد بالا یه کلاس ایجاد کنم . حالا چطور این کلاس رو در اکتیوتی مورد نظر فرا بخونم و به اسکرول ربطش بدم و در ایکس ام ال اسکرول چه پارامتر هایی باید ذکر شه ؟؟؟ ممنون میشم جواب بدید (9 سال پیش)
پاسخ به سوال 
طاهر  11 سال پیش
+17 0

ارسال بازخورد به فیس بوک

 /*
* Open facebook app or site for show app page
*/
public static Intent openFaceBookFeadBack(Context paramContext, String paramStringFaceBookProfile, String paramStringFaceBookPage)
{
Intent localIntent = null;
try
{
paramContext.getPackageManager().getPackageInfo("com.facebook.katana", 0);
localIntent = new Intent("android.intent.action.VIEW", Uri.parse("fb://profile/" + paramStringFaceBookProfile));
return localIntent;
}
catch (Exception localException)
{
while (true)
localIntent = new Intent("android.intent.action.VIEW", Uri.parse("https://www.facebook.com/" + paramStringFaceBookPage));
}
}

پاسخ به سوال 
طاهر  11 سال پیش
+33 0

خروج از برنامه با دوبار زدن دکمه بازگشت

  @Override
public void onBackPressed()
{
if (back_pressed + 2000 > System.currentTimeMillis()) {
super.onBackPressed();
AppExit();
}
else
Toast.makeText(context, "نمایش پیغام لمس دوباره کلید بازگشت جهت خروج", Toast.LENGTH_LONG).show();

back_pressed = System.currentTimeMillis();

}

/*
* Exit Of Application
*/
public static void AppExit()
{
G.CurrentActivity.finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
G.CurrentActivity.startActivity(intent);
System.exit(0);
}
0 0
. (11 سال پیش)
0 0
کار نمیکنه که :( (11 سال پیش)
0 0
The method startActivity(Intent) is undefined for the type String (11 سال پیش)
0 0
The method finish() is undefined for the type String (11 سال پیش)
0 0
برای G.CurrentActivity نام اکتیویتی جاری رو قرار بدید (11 سال پیش)
+2 0
با تشکر، فقط برای درست کار کردن متغیر back_pressed رو خارج از متد OnBackPressd به صورت فیلد تعریف کنید. (11 سال پیش)
0 0
اقا جریان این back_pressed‌چیه باید چیکارش کرد؟ (10 سال پیش)
پاسخ به سوال 
طاهر  11 سال پیش
+16 0

ارسال بازخورد به اینستگرام

 /*
* Open instagram app or site for show app page
*/
public static Intent openInstagramFeadBack(Context paramContext, String paramStringInstagramProfile, String paramStringInstagramPage)
{
Intent localIntent = paramContext.getPackageManager().getLaunchIntentForPackage("com.instagram.android");
try
{
paramContext.getPackageManager().getPackageInfo("com.instagram.android", 0);
localIntent.setComponent(new ComponentName("com.instagram.android", "com.instagram.android.activity.UrlHandlerActivity"));
localIntent.setData(Uri.parse("http://instagram.com/p/" + paramStringInstagramProfile + "/"));
return localIntent;
}
catch (Exception localException)
{
while (true)
localIntent = new Intent("android.intent.action.VIEW", Uri.parse("http://www.instagram.com/" + paramStringInstagramPage));
}
}
0 0
اقا طاهر خسته نباشید < این کد دقیقا چه میکنه ؟ پیج خاصی رو در اینستاگرام باز میکنه ؟ (11 سال پیش)
پاسخ به سوال 
AhmadVB  11 سال پیش
+30 0

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

(البته این سورس را قبلا از اینترنت گرفته ام و خودم ننوشته ام ، منبع)

 
private class SolarCalendar {

public String strWeekDay = "";
public String strMonth = "";

int date;
int month;
int year;


public SolarCalendar()
{
Date MiladiDate = new Date();
calcSolarCalendar(MiladiDate);
}


public SolarCalendar(Date MiladiDate)
{
calcSolarCalendar(MiladiDate);
}


private void calcSolarCalendar(Date MiladiDate) {

int ld;

int miladiYear = MiladiDate.getYear() + 1900;
int miladiMonth = MiladiDate.getMonth() + 1;
int miladiDate = MiladiDate.getDate();
int WeekDay = MiladiDate.getDay();

int[] buf1 = new int[12];
int[] buf2 = new int[12];

buf1[0] = 0;
buf1[1] = 31;
buf1[2] = 59;
buf1[3] = 90;
buf1[4] = 120;
buf1[5] = 151;
buf1[6] = 181;
buf1[7] = 212;
buf1[8] = 243;
buf1[9] = 273;
buf1[10] = 304;
buf1[11] = 334;

buf2[0] = 0;
buf2[1] = 31;
buf2[2] = 60;
buf2[3] = 91;
buf2[4] = 121;
buf2[5] = 152;
buf2[6] = 182;
buf2[7] = 213;
buf2[8] = 244;
buf2[9] = 274;
buf2[10] = 305;
buf2[11] = 335;

if ((miladiYear % 4) != 0) {
date = buf1[miladiMonth - 1] + miladiDate;

if (date > 79) {
date = date - 79;
if (date <= 186) {
switch (date % 31) {
case 0:
month = date / 31;
date = 31;
break;
default:
month = (date / 31) + 1;
date = (date % 31);
break;
}
year = miladiYear - 621;
} else {
date = date - 186;

switch (date % 30) {
case 0:
month = (date / 30) + 6;
date = 30;
break;
default:
month = (date / 30) + 7;
date = (date % 30);
break;
}
year = miladiYear - 621;
}
} else {
if ((miladiYear > 1996) && (miladiYear % 4) == 1) {
ld = 11;
} else {
ld = 10;
}
date = date + ld;

switch (date % 30) {
case 0:
month = (date / 30) + 9;
date = 30;
break;
default:
month = (date / 30) + 10;
date = (date % 30);
break;
}
year = miladiYear - 622;
}
} else {
date = buf2[miladiMonth - 1] + miladiDate;

if (miladiYear >= 1996) {
ld = 79;
} else {
ld = 80;
}
if (date > ld) {
date = date - ld;

if (date <= 186) {
switch (date % 31) {
case 0:
month = (date / 31);
date = 31;
break;
default:
month = (date / 31) + 1;
date = (date % 31);
break;
}
year = miladiYear - 621;
} else {
date = date - 186;

switch (date % 30) {
case 0:
month = (date / 30) + 6;
date = 30;
break;
default:
month = (date / 30) + 7;
date = (date % 30);
break;
}
year = miladiYear - 621;
}
}

else {
date = date + 10;

switch (date % 30) {
case 0:
month = (date / 30) + 9;
date = 30;
break;
default:
month = (date / 30) + 10;
date = (date % 30);
break;
}
year = miladiYear - 622;
}

}

switch (month) {
case 1:
strMonth = "فروردین";
break;
case 2:
strMonth = "اردیبهشت";
break;
case 3:
strMonth = "خرداد";
break;
case 4:
strMonth = "تیر";
break;
case 5:
strMonth = "مرداد";
break;
case 6:
strMonth = "شهریور";
break;
case 7:
strMonth = "مهر";
break;
case 8:
strMonth = "آبان";
break;
case 9:
strMonth = "آذر";
break;
case 10:
strMonth = "دی";
break;
case 11:
strMonth = "بهمن";
break;
case 12:
strMonth = "اسفند";
break;
}

switch (WeekDay) {

case 0:
strWeekDay = "یکشنبه";
break;
case 1:
strWeekDay = "دوشنبه";
break;
case 2:
strWeekDay = "سه شنبه";
break;
case 3:
strWeekDay = "چهارشنبه";
break;
case 4:
strWeekDay = "پنج شنبه";
break;
case 5:
strWeekDay = "جمعه";
break;
case 6:
strWeekDay = "شنبه";
break;
}

}

}


public static String getCurrentShamsidate() {
Locale loc = new Locale("en_US");
Utilities util = new Utilities();
SolarCalendar sc = util.new SolarCalendar();
return String.valueOf(sc.year) + "/" + String.format(loc, "%02d",
sc.month) + "/" + String.format(loc, "%02d", sc.date);
}
+4 0
خیلی خوب بود ، اینکه منبع را ذکر کردید ارزش کارتون رو بیشتر کرد. (11 سال پیش)
0 0
احمد جان این کد هارو من کپی کردم تو اکتیوتی اصلیم حالا برای طراحی حالت UI چه کنم (11 سال پیش)
پاسخ به سوال 
AhmadVB  11 سال پیش
+20 0

حذف یک پوشه به همراه کلیه محتویاتش شامل فایل ها و پوشه ها:

     boolean deleteRecursive(File fileOrDirectory) {

if (fileOrDirectory.isDirectory())
for (File child: fileOrDirectory.listFiles())
deleteRecursive(child);

return fileOrDirectory.delete();

}

این طور صدا زده می شود :

String sdCard = Environment.getExternalStorageDirectory().getAbsolutePath();
String path = sdCard+"/FolderName";
File f = new File(path);
if(deleteRecursive(f))
Log.i("LOG", path + " Deleted Seccessfully.");

نیاز به دسترسی زیر در Manifest دارد:

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
0 0
حاجی دمت گرم (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .