بروز خطا
   [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 سال پیش
+17 0

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

 @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;
}
0 0
سلام کد شما رو کپی کردم تو برنامه از getParameters تو خط 3 خطا می گیره اینم پیغامشه The method getParameters() is undefined for the type Camera ممنون (10 سال پیش)
پاسخ به سوال 
طاهر  11 سال پیش
+17 0

نمایش پیغام بصورت 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 سال پیش
+14 0

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

 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; }
0 0
در لیست ویو بصورت معمول که نشون نمیده درسته ؟ (11 سال پیش)
0 0
آقا طاهر، اونجا باید توی editBox تعییر کنیم اگر متن حاری " (11 سال پیش)
پاسخ به سوال 
Alireza.b  11 سال پیش
+17 0

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

 public static int rand(int min, int max) {
	int rand = min + (int) (Math.random() * (max - min + 1));
	return rand;
}
0 0
شما که اینقدر زحمت کشیدید همه رو collection کنید rar کنید از یه جایی dl کنیم (11 سال پیش)
+2 0
لقمه آماده تا این حد؟ من یک کالکشن دارم از تمامی توابعی که لازم داشتم ، بهتره خودتون این کار رو بکنیدچون هم دسته بندی دخواهتون رو خواهید داشت هم بهتر متوجه می شید (11 سال پیش)
پاسخ به سوال 
سپهر  11 سال پیش
+13 0

 بزرگ کردن ویو با انیمیشن (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 سال پیش
+11 0

کد بکاپ گرفتن از 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;
}
 
0 0
. (11 سال پیش)
پاسخ به سوال 
طاهر  11 سال پیش
+12 0

تبدیل 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 سال پیش
+14 0

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

 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 سال پیش
+9 0

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

 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);
0 0
طاهر جان، توابع ها بسیار عالی و کاربردی هستن. دستت درد نکنه. فقط یه سوال، چرا بعضی از توابع پارامتر هایی که میگیرن، همراه با سه تا نقطه هستش ؟ دقیقآ مثل این تابعی که نوشتین (int ....i). چیزی خودم حدس میزنم، برای تعریف آرایه هستش. درسته ؟ ممنون (11 سال پیش)
0 0
منظور همون دریافت یک آرایه هستش (11 سال پیش)
پاسخ به سوال 
طاهر  11 سال پیش
+6 0

گرفتن 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 سال پیش
+11 0

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

 private boolean isEmpty(EditText etText) {
return etText.getText().toString().trim().length() == 0;
}
پاسخ به سوال 
mohsen-jj  11 سال پیش
+10 0

این متود نام و مدل گوشی کاربر رو بصورت 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 سال پیش
+10 0

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

 public static boolean isEmulator() {
return Build.MODEL.equals("sdk") || Build.MODEL.equals("google_sdk");
}
پاسخ به سوال 
طاهر  11 سال پیش
+9 0

چرخش 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 سال پیش
+10 0

دوتا متد برای تبدیل 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 سال پیش
+8 0

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();
}
+3 0
این تابع قبلا درج شده لطفا از درج توابع تکراری جدا خودداری کنید (11 سال پیش)
0 0
دمت... (10 سال پیش)
پاسخ به سوال 
Hossein Kurd  11 سال پیش
+12 0

مخفی کردن 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 سال پیش
+11 0

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

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

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;

}
0 0
. (11 سال پیش)
پاسخ به سوال 
***ali***  11 سال پیش
+8 0

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

 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 سال پیش
+11 0

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

مهمترین تفاوت این تابع با تابعی که دوستان در چند پست قبل فرستاده بودند، این است که فقط لیستی از برنامه های ایمیل کاربر برایش باز می شود. (یعنی مثلا برنامه هایی مثل 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;
}
}
0 0
ممنون - ولی چطور میشه فایل اتچ کرد ؟ (11 سال پیش)

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