ورود

View Full Version : اشتراک گذاری عکس هایی که با کلیک روی گرید ویو در صفحه بعدی نمایش داده میشه



moralschool
سه شنبه 21 بهمن 1393, 15:20 عصر
سلام دوستان
من یه برنامه دارم که در گرید ویو چند تا عکس رو نشون میده ( که از Draweble ) فراخوانی میشه ...
با کلیک روی هر کدوم از این عکس ها ، در صفحه ای دیگه بصورت بزرگ در یک ایمیج ویو نشونشون میده ...
حالا می خوام بدونم چجور میشه تشخیص داد که کدوم عکس از Draweble در این ایمیج ویو داره نمایش داده میشه و چجور میشه همونو به اشتراک گذاشت ؟

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



File filepath = Environment.getExternalStorageDirectory();
File dir = new File(filepath.getAbsolutePath() + "/pics_folder/");
File file = new File(dir, "my_pic1.jpeg");
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");
Uri uri = Uri.fromFile(file);
share.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(share, "ارسال تصویر"));


حالا مشکل کد بالا اینه که فقط میشه یه عکس خاص رو بهش معرفی کرد برای ارسال ( مثلا در کد بالا my_pic1 رو ارسال میکنه) ، در صورتی که من میخوام خودش ببینه کدوم عکس رو داره نشون میده ( یعنی کدوم عکس از گرید صفحه قبل باز شده ) و همونو به اشتراک بزاره ، آخه دفعه بعدی ممکنه کاربر روی یه عکس دیگه زده باشه و عکس مثلا دوم در ایمیج ویو نمایش داده بشه ، اما با کد بالا بازم همون عکس اول یعنی my_pic1 به اشتراک گذاشته میشه ...
ممنون میشم راهنمایی کنید

moralschool
چهارشنبه 22 بهمن 1393, 07:23 صبح
دوستان لطفا کمک کنید ممنون میشم ...

Ebrahimkh
چهارشنبه 22 بهمن 1393, 09:33 صبح
سلام
اگر تصاویرتون رو به یه آرایه از نوع Integer پاس دادین
زمانی که Listener گراید ویو رو تعریف کنید تو تابع onItemClick
گراید ویو یه متغیر به نام position هست که با استفاده از این می توانید اندیس تصاویر مورد نظر رو بدست بیارید
بعد با پاس دادن این متغیر به توابع موردنظر متوانید تعیین کنید کدام picture در حال نمایش است

moralschool
چهارشنبه 22 بهمن 1393, 10:09 صبح
ممنون از پاسختون
اره از همین متغیری که گفتید ( position ) استفاده کردم اما نمیدونم چجوری در کدهای share آدرس اون عکس در حال نمایش رو مشخص کنم !
لطفا بیشتر راهنمایی کنید از چه کدی باید استفاده کنم ؟

Ebrahimkh
چهارشنبه 22 بهمن 1393, 10:21 صبح
آرایه تصاویر رو که بصورت عمومی تعریف کردیم یعنی هرجای کلاس می تونیم بهش دسترسی پیدا کنیم
حالا باید یه متغیر static هم تعریف کنیم وزمانی که رو هر تصویر GrideView کلیک کردیم مقدار position رو در اون متغیر بریزیم
و در توابع موردنظر با دسترسی به متغیر static که بصورت عمومی تعریف کردیم می توانیم به اندیس موردنظر هم دسترسی پیدا کنیم
مثلا اگر متغیر static ما نامش count باشه و آرایه ای که تصاویر رو در اون قرار دادیم نامش pic[] باشه می توانیم تو هر تابع به این شکل بهش درسترسی داشته باشیم



Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("image/png");

Uri uri = Uri.parse("android.resource://نام پکیج برنامه رو اینجا وارد کن/"
+ pic[counter]);
shareIntent.setPackage("com.viber");
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.putExtra(Intent.EXTRA_TEXT, "اشتراک");
startActivity(Intent.createChooser(shareIntent, "اشتراک"));

moralschool
چهارشنبه 22 بهمن 1393, 14:24 عصر
ممنون از پاسختون

moralschool
چهارشنبه 22 بهمن 1393, 14:25 عصر
امتحان کردم نتونستم
کدی که مربوط به گرید هست اینه که با کلیک روی هر کدوم از عکس های گرید موقعیت اون عکس رو میگیره :


GridView grid = (GridView) findViewById(R.id.mygrid);
grid.setAdapter(new Custom22(this));
grid.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int postition,
long id) {
Intent next = new Intent(getBaseContext(), Show_pic1.class);
next.putExtra("postition", postition);
startActivity(next);
}
});


کد صفحه بعدم که عکس رو از Drawbleنشون میده و میشه ارسالش کرد هم اینه :


ImageView i = (ImageView) findViewById(R.id.imageView1);
Custom22 ia = new Custom22(this);
int p = getIntent().getExtras().getInt("postition");
i.setImageResource(ia.mThumbIds[p]);




iv=(ImageView) findViewById(R.id.imageView1);
Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {


File filepath = Environment.getExternalStorageDirectory();
File dir = new File(filepath.getAbsolutePath() + "/pics_folder/");
File file = new File(dir, "mypic1.jpeg");
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");
Uri uri = Uri.fromFile(file);
share.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(share, "ارسال تصویر"));


چه تغییراتی می خوان که تشخیص بده کدوم عکس انتخاب شده ؟

moralschool
پنج شنبه 23 بهمن 1393, 23:56 عصر
اساتید لطفا کمک کنید
ممنون میشم ...

moralschool
جمعه 24 بهمن 1393, 18:01 عصر
خیلی کارم گیر اینه لطفا کمک کنید
هل من ناصر ینصرنی ؟ ...

moralschool
شنبه 25 بهمن 1393, 21:27 عصر
کسی نیست اینجا ؟؟!!!