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

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

مدیریت گفتگو
طاهر 11 سال پیش
آخرین تغییر: 9 سال پیش

با سلام

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

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

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

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

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

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

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

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

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

لیست توابع :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

نظرات

Mseif 11 سال پیش
کاره بسیار جالب و مفیدیه انشالله موفق باشید در ضمن توضیحی مختصر هم برای هر تابع یا کلاس داده بشه خیلی عالی میشه سپاس
نورحسینی 11 سال پیش
این خیلی خوبه طاهر جان ولی بهتر اینه که شما هم مثل دوستان دیگه در این تاپیک لینک یک پست باز کنید و مطالبتون رو به صلاحدید خودتون به رایگان یا برای معاوضه یا فروش بزارید که بانک سورسمون زودتر آماده بشه و در یک جا متمرکز باشه . باز هم هر طور میل شماست .
طاهر 11 سال پیش
تا قسمت ویکی سایت راه بیفته این تایپیک میتونه مفید باشه برای خیلی ها
hadi47 11 سال پیش
با سلام و خیلی ممنون که اطلاعات و تجربیات خود را به اشتراک می گذارید با تشکر
goorgool 11 سال پیش
آقا دستت درد نکنه
msadesign 11 سال پیش
یکی از بهترین تاپیک های این مجموعه
dabal 11 سال پیش
به نظر من اگه یه توضیح کوچیک هم در زیر توابع داده بشه بد نیست
nooriDeveloper 9 سال پیش
دوست عزیز @طاهر، یه پیشنهاد دارم، با توجه به اینکه تعداد کدها داره زیاد میشه برای جستجوی سریعتر کدها و همچنین جلوگیری از درج کدهای تکراری لطفا تو همین اول پست لیست تمام کدهایی که تا الان گذاشته شده (منظورم نام شون هست) رو بزارید و کدهای جدید رو به انتهای لیست اضافه کنید.

پاسخ‌ها 58

طاهر 11 سال پیش

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

 @SuppressWarnings("unused")
private boolean isFlashAvailable(Camera camera) {
Parameters params = camera.getParameters();
List<String> flashModes = params.getSupportedFlashModes();
if (flashModes == null) {
return false;
}

for (String flashMode: flashModes) {
if (Parameters.FLASH_MODE_ON.equals(flashMode)) {
return true;
}
}

return false;
}

نظرات

pooya 10 سال پیش
سلام کد شما رو کپی کردم تو برنامه از getParameters تو خط 3 خطا می گیره اینم پیغامشه The method getParameters() is undefined for the type Camera ممنون
طاهر 11 سال پیش

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

  public static void showMessage(Activity activity, final String msg)
{
activity.runOnUiThread(new Runnable()
{

@Override
public void run()
{
Toast.makeText(G.context, msg, Toast.LENGTH_LONG).show();
}
});
}

نظرات

Alireza.b 11 سال پیش

جستجو در یک رشته و رنگی کردن کلمات:

 public static String searchReplace(String value, String search) {
	if (search == null || search.equals(""))
	        return value;
value = value.replace(search, "<font color=\"red\"><b>" + search + "</b></font>"); return value; }

نظرات

طاهر 11 سال پیش
در لیست ویو بصورت معمول که نشون نمیده درسته ؟
Hossein Kurd 11 سال پیش
آقا طاهر، اونجا باید توی editBox تعییر کنیم اگر متن حاری "
Alireza.b 11 سال پیش

یک عدد رندوم بین یک بازه:

 public static int rand(int min, int max) {
	int rand = min + (int) (Math.random() * (max - min + 1));
	return rand;
}

نظرات

developer1981 11 سال پیش
شما که اینقدر زحمت کشیدید همه رو collection کنید rar کنید از یه جایی dl کنیم
Hossein Kurd 11 سال پیش
لقمه آماده تا این حد؟ من یک کالکشن دارم از تمامی توابعی که لازم داشتم ، بهتره خودتون این کار رو بکنیدچون هم دسته بندی دخواهتون رو خواهید داشت هم بهتر متوجه می شید
سپهر 11 سال پیش

 بزرگ کردن ویو با انیمیشن (Animation)

 public class AnimationProgress extends Animation {

protected final int originalHeight;
protected final int originalWidth;
protected final View view;
protected float perValueHight;
protected float perValueWidth;


public AnimationProgress(View view, int fromHeight, int toHeight, int fromWidth, int toWidth) {
this.view = view;
this.originalHeight = fromHeight;
this.originalWidth = fromWidth;
this.perValueHight = (toHeight - fromHeight);
this.perValueWidth = (toWidth - fromWidth);
}


@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
view.getLayoutParams().height = (int) (originalHeight + perValueHight * interpolatedTime);
view.getLayoutParams().width = (int) (originalWidth + perValueWidth * interpolatedTime);
view.requestLayout();
}


@Override
public boolean willChangeBounds() {
return true;
}
}

نظرات

طاهر 11 سال پیش

کد بکاپ گرفتن از SharedPreferences

 private boolean saveSharedPreferencesToFile(File dst) {
boolean res = false;
ObjectOutputStream output = null;
try {
output = new ObjectOutputStream(new FileOutputStream(dst));
SharedPreferences pref =
getSharedPreferences(prefName, MODE_PRIVATE);
output.writeObject(pref.getAll());

res = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if (output != null) {
output.flush();
output.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return res;
}

@SuppressWarnings({ "unchecked" })
private boolean loadSharedPreferencesFromFile(File src) {
boolean res = false;
ObjectInputStream input = null;
try {
input = new ObjectInputStream(new FileInputStream(src));
Editor prefEdit = getSharedPreferences(prefName, MODE_PRIVATE).edit();
prefEdit.clear();
Map<String, ?> entries = (Map<String, ?>) input.readObject();
for (Entry<String, ?> entry : entries.entrySet()) {
Object v = entry.getValue();
String key = entry.getKey();

if (v instanceof Boolean)
prefEdit.putBoolean(key, ((Boolean) v).booleanValue());
else if (v instanceof Float)
prefEdit.putFloat(key, ((Float) v).floatValue());
else if (v instanceof Integer)
prefEdit.putInt(key, ((Integer) v).intValue());
else if (v instanceof Long)
prefEdit.putLong(key, ((Long) v).longValue());
else if (v instanceof String)
prefEdit.putString(key, ((String) v));
}
prefEdit.commit();
res = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
try {
if (input != null) {
input.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return res;
}
 

نظرات

طاهر 11 سال پیش

تبدیل dp به px و برعکس:

 public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density ;
return (int) (dpValue * scale + 0.5f);
}


public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density ;
return (int) (pxValue / scale + 0.5f);
}

نظرات

طاهر 11 سال پیش

تشخیص روت بودن گوشی

 public static boolean isRooted() {
try {
Process process = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(
process.getOutputStream());
os.writeBytes("exit\n");
os.flush();
process.waitFor();
int i = process.exitValue();
if (i == 0)
return true;
else
return false;


} catch (Exception e) {
}
return false;
}

نظرات

طاهر 11 سال پیش

پیدا کردن بزرگترین عدد بین هر چندتا عدد که دلتون بخواد !!!!!

 public static int max(int... i){
int max;
int c = i[0];
max=c;
for (int k = 1; k < i.length; k++){
if(i[k]>max)
max=i[k];
}
return max;
}

int i = max(2,-5,1000,50,60,600);
int j = max(1,8,4,54,87,468,354,156,357,68,354,68,34,69);

نظرات

احمد اسدی 11 سال پیش
طاهر جان، توابع ها بسیار عالی و کاربردی هستن. دستت درد نکنه. فقط یه سوال، چرا بعضی از توابع پارامتر هایی که میگیرن، همراه با سه تا نقطه هستش ؟ دقیقآ مثل این تابعی که نوشتین (int ....i). چیزی خودم حدس میزنم، برای تعریف آرایه هستش. درسته ؟ ممنون
طاهر 11 سال پیش
منظور همون دریافت یک آرایه هستش
طاهر 11 سال پیش

گرفتن MD5 یک رشته

 public static String getMD5(String s) throws Exception {
MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(s.getBytes());
byte messageDigest[] = digest.digest();
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < messageDigest.length; i++) {
String h = Integer.toHexString(0xFF & messageDigest[i]);
while (h.length() < 2)
h = "0" + h;
hexString.append(h);
}
return hexString.toString();
}

نظرات

mohsen-jj 11 سال پیش

بررسی خالی بودن یا نبودن یک EditText  برای فهمیدن اینکه کاربر به سوال یا ... پاسخ داده یا نه ، چون خودم هرکاری میکردم error میداد بجز این روش که جواب داد :

 private boolean isEmpty(EditText etText) {
return etText.getText().toString().trim().length() == 0;
}

نظرات

mohsen-jj 11 سال پیش

این متود نام و مدل گوشی کاربر رو بصورت String برمی گردنونه :

البته متود پایینیش هم هست که تکمیلش میکنه .

 public String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
return capitalize(model);
} else {
return capitalize(manufacturer) + " " + model;
}
}


private String capitalize(String s) {
if (s == null || s.length() == 0) {
return "";
}
char first = s.charAt(0);
if (Character.isUpperCase(first)) {
return s;
} else {
return Character.toUpperCase(first) + s.substring(1);
}
}

نظرات

طاهر 11 سال پیش

تشخیص اجرای برنامه روی شبیه ساز یا گوشی:

 public static boolean isEmulator() {
return Build.MODEL.equals("sdk") || Build.MODEL.equals("google_sdk");
}

نظرات

طاهر 11 سال پیش

چرخش bitmap :

  public static Bitmap rotateBitmap(Bitmap source, int rotation, boolean recycle) {
if (rotation == 0) return source;
int w = source.getWidth();
int h = source.getHeight();
Matrix m = new Matrix();
m.postRotate(rotation);
Bitmap bitmap = Bitmap.createBitmap(source, 0, 0, w, h, m, true);
if (recycle) source.recycle();
return bitmap;
}

نظرات

طاهر 11 سال پیش

دوتا متد برای تبدیل Bitmap به Drawable و برعکس

 public static Bitmap drawableToBitmap(Drawable drawable) {
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable) drawable).getBitmap();
}

Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);

return bitmap;
}

public static Drawable bitmapToDrawable(Context context, Bitmap bitmap) {
return new BitmapDrawable(context.getResources(), bitmap);
}

نظرات

Gandalf 11 سال پیش

2 تا  back برای خروج از برنامه اولی toast دومی خروج

 private static final int TIME_INTERVAL =2000; // # milliseconds time between two click back
privatelong mBackPressed;


@Override
publicvoid onBackPressed()
{
if(mBackPressed + TIME_INTERVAL >System.currentTimeMillis())
{
super.onBackPressed();
return;
}
else{
Toast.makeText(getBaseContext(),"Tap back button in order to exit",Toast.LENGTH_SHORT).show();
}

mBackPressed =System.currentTimeMillis();
}

نظرات

طاهر 11 سال پیش
این تابع قبلا درج شده لطفا از درج توابع تکراری جدا خودداری کنید
GR 10 سال پیش
دمت...
Hossein Kurd 11 سال پیش

مخفی کردن View با  Animation

زمانی که می خواهیم با فشردنButton یک LinearLayout با هر عنصری مخفی شود :

view.setVisibility(View.GONE);

اما بدون Animation اجرای زیبایی نداره

private Animation fadeIn , fadeOut;
private AnimationSet animation;

private void animateLinearLayout(final View view){
fadeIn = new AlphaAnimation(0, 1);
fadeIn.setInterpolator(new DecelerateInterpolator());
fadeIn.setDuration(1000);

fadeOut = new AlphaAnimation(1, 0);
fadeOut.setInterpolator(new AccelerateInterpolator());
fadeOut.setStartOffset(500);
fadeOut.setDuration(500);

if(view.getVisibility() != View.GONE){
animation = new AnimationSet(false);
// animation.addAnimation(fadeIn);
animation.addAnimation(fadeOut);
view.startAnimation(animation);
view.setVisibility(View.GONE);
Log.i(G.Logs.Screen , "view.setVisibility(View.GONE)");

}else if(view.getVisibility() == View.GONE){
view.setVisibility(View.VISIBLE);
AnimationSet animation = new AnimationSet(false);
animation.addAnimation(fadeIn);
// animation.addAnimation(fadeOut);
view.startAnimation(animation);
Log.i(G.Logs.Screen , "view.setVisibility(View.VISIBLE)");
}
new CountDownTimer(1200 , 600){
@Override
public void onTick(long l) {
if(view.getVisibility() != View.GONE) {

}
}

@Override
public void onFinish() {
view.clearAnimation();
Log.i(G.Logs.Screen , "view.clearAnimation()");
}
};
}

نظرات

mohsen-jj 11 سال پیش

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

توضیحاتی در موررد کد ها میدم :

1 - در این متود لیستی از String که محتویات هر اس ام اس ( متن،شماره و زمان) هست رو به عنوان مقدار برگشتی در نظر گرفتیم و میتونیم مثلا به جای اضافه کردن به این لیست ، به دیتابیس خودمون اضافه شون کنیم و بعد توی یه لیست ویو نمایشش بدیم.

2 -در این متود متن پیام ، شماره و زمان دریافت پیام رو با استفاده از cursor بدست آوردیم و اگه میخواید چیزای دیگه مثل اسم کسی که پیام رو فرستاده و ... رو بدست بیارید میتونید تو اینترنت بگردید و پیدا کنید .

 public List<String> getSMS() {
List<String> sms = new ArrayList<String>();
Uri uriSMSURI = Uri.parse("content://sms/inbox");
Cursor cur = getContentResolver().query(uriSMSURI, null, null, null,
null);

while (cur.moveToNext()) {
String address = cur.getString(cur.getColumnIndex("address"));
String body = cur.getString(cur.getColumnIndexOrThrow("body"));
String date = cur.getString(cur.getColumnIndex("date"));

Long timestamp = Long.parseLong(date);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestamp);

int hour = calendar.get(calendar.HOUR);
int min = calendar.get(calendar.MINUTE);
int sec = calendar.get(calendar.SECOND);
String time = hour + " : " + min + " : " + sec;

sms.add("time : " + time + " Number: " + address + " Message: "+ body);

}
return sms;

}

نظرات

***ali*** 11 سال پیش

کد روشن کردن بلوتوث و فعال کردن قابلیت جستجو

 public void onBluetooth(){
BluetoothAdapter Bluetooth = BluetoothAdapter.getDefaultAdapter();
if(Bluetooth == null)
{
Toast.makeText(this, "متاسفانه دستگاه شما از بلوتوث پشتیانی نمی کند !!!",Toast.LENGTH_LONG ).show();
}
else{
if(!Bluetooth.isEnabled()){
Bluetooth.enable();
Intent DiscIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
startActivity(DiscIntent);
}}}
 

کد بالا خودکار بلوتوث را روشن میکند. و  برای 120 ثانیه قابلیت جستجو میدهد. ولی اگر بخواهیم که با یک دیالوگ از کاربر بخواهیم که بلوتوث را فعال کند ، باید به صورت زیر  از اینتنت استفاده کنیم.

 public void onBluetooth(){
BluetoothAdapter Bluetooth = BluetoothAdapter.getDefaultAdapter();
if(Bluetooth == null)
{
Toast.makeText(this, "متاسفانه دستگاه شما از بلوتوث پشتیانی نمی کند !!!",Toast.LENGTH_LONG ).show();
}
else{
if(!Bluetooth.isEnabled()){
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(enableBtIntent);
Intent DiscIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
startActivity(DiscIntent);
}}}
 

نظرات

b.fat 11 سال پیش

تابعی برای فرستادن ایمیل:

مهمترین تفاوت این تابع با تابعی که دوستان در چند پست قبل فرستاده بودند، این است که فقط لیستی از برنامه های ایمیل کاربر برایش باز می شود. (یعنی مثلا برنامه هایی مثل Facebook و Bluetooth و غیره نمایش داده نمی شوند)

منبع: http://stackoverflow.com/questions/8701634/send-email-intent

     private boolean sendEmail(String reciever, String subject, String textMessage) {
try {
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", reciever, null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
startActivity(Intent.createChooser(emailIntent, "Send email..."));
return true;
}
catch (Exception e) {
e.printStackTrace();
return false;
}
}

نظرات

Criss 11 سال پیش
ممنون - ولی چطور میشه فایل اتچ کرد ؟

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