View Full Version : ساختن آیکن شناور
Ebrahimkh
دوشنبه 04 خرداد 1394, 09:52 صبح
سلام دوستان
من می خوام برا برنامم یه آیکن شناور بسازم
ولی نمیدونم چجوری بسازم :لبخند:
لینک هم دهید عالیه
Ebrahimkh
سه شنبه 05 خرداد 1394, 07:57 صبح
50 نفر مشاهده کردن
یعنی کسی از شماها تا حالا چنین چیزی به گوشش نخورده
hosseinaryai
سه شنبه 05 خرداد 1394, 08:15 صبح
راستش حداقل من نفهمیدم اصلن منظورت چی هست ؟ آیکن شناور یعنی چی دقیقن ؟:متفکر:
Ebrahimkh
پنج شنبه 07 خرداد 1394, 10:12 صبح
دوستان هنوز منتظرم
------------------------
آیکن شناور :اگه برنامه رو ببندی آیکنش رو هرجا بخوای می تونی ست کنی مثلا روی وات ساپ و....
دیگه از این واح تر نمی تونم بگم :)
hesam67_b
پنج شنبه 07 خرداد 1394, 11:51 صبح
آیکن شناور با قابلیت جابه جایی.
به صورت سرویس هست. یادتون نره سرویس رو در مینفست تعریف کنید و درجایی که لازم داری استارت سرویس کن.
public class IconDrawServise extends Service {
private WindowManager windowManager;
private ImageView chatHead;
@Override
public IBinder onBind(Intent intent) {
// Not used
return null;
}
@Override
public void onCreate() {
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
chatHead = new ImageView(this);
chatHead.setImageResource(R.drawable.ic_draw);
chatHead.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent dialogIntent = new Intent(getBaseContext(), ActivityBookmarkStickers.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TAS K);
getApplication().startActivity(dialogIntent);
/*
ProgressDialog _pdialog = new ProgressDialog(getBaseContext());
_pdialog.setMessage("Loading...");
_pdialog.show();
*/
}
});
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUC H,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.CENTER;
params.x = 0;
params.y = -100;
windowManager.addView(chatHead, params);
chatHead.setOnTouchListener(new View.OnTouchListener() {
private int initialX;
private int initialY;
private float initialTouchX;
private float initialTouchY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
initialX = params.x;
initialY = params.y;
initialTouchX = event.getRawX();
initialTouchY = event.getRawY();
return false;
case MotionEvent.ACTION_UP:
return false;
case MotionEvent.ACTION_MOVE:
params.x = initialX + (int) (event.getRawX() - initialTouchX);
params.y = initialY + (int) (event.getRawY() - initialTouchY);
windowManager.updateViewLayout(chatHead, params);
return false;
}
return true;
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
if (chatHead != null)
windowManager.removeView(chatHead);
}
}
Ebrahimkh
یک شنبه 10 خرداد 1394, 10:42 صبح
سلام دوست عزیز
بازم ممنون بخاطر زحمتی که کشیدید
فقط یه سوال تو mainfest چجوری تعریفش کن
یه جورایی تو استارت این کلاس موندم
hesam67_b
یک شنبه 10 خرداد 1394, 10:55 صبح
سلام دوست عزیز
بازم ممنون بخاطر زحمتی که کشیدید
فقط یه سوال تو mainfest چجوری تعریفش کن
یه جورایی تو استارت این کلاس موندم
برای تعریف در mainfest :
<service android:name="your-package.IconDrawServise" />
برای شروع سرویس باید ببینی چه زمانی نیاز به نمایش آیکون داری و با این دستور، آیکون نمایش داده خواهد شد :
startService(new Intent(context, IconDrawServise.class))
Ebrahimkh
یک شنبه 10 خرداد 1394, 11:22 صبح
با تشکر ویژه از دوست گلم hesam67_b (http://barnamenevis.org/member.php?90009-hesam67_b)
نوشتمش
مممممممممممممنون
hesam67_b
یک شنبه 10 خرداد 1394, 15:30 عصر
با تشکر ویژه از دوست گلم hesam67_b (http://barnamenevis.org/member.php?90009-hesam67_b)
نوشتمش
مممممممممممممنون
خواهش میکنم. موفق باشید
Ebrahimkh
یک شنبه 10 خرداد 1394, 16:52 عصر
آخرین سوال :لبخندساده:
الان من هر رویدادی بجز Touch براش می نویسم کار نمی کنه می خوام وقتی روش کلیلک کرد بیاد تو برنامه
حالا این رویداد رو چجوری باید پیاده سازی کنم ؟؟!!
با setOnclick تست کردم هیچ جوابی نگرفتم
بازم ممنــــــــــــــــــــــ ـــــــــــــــون
hesam67_b
یک شنبه 10 خرداد 1394, 17:07 عصر
آخرین سوال :لبخندساده:
الان من هر رویدادی بجز Touch براش می نویسم کار نمی کنه می خوام وقتی روش کلیلک کرد بیاد تو برنامه
حالا این رویداد رو چجوری باید پیاده سازی کنم ؟؟!!
با setOnclick تست کردم هیچ جوابی نگرفتم
بازم ممنــــــــــــــــــــــ ـــــــــــــــون
onclick تعریف شده در کد.
این بخش برای کاری که لازم دارید در هنگام کلیک صورت بگیره استفاده میشه:
chatHead.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent dialogIntent = new Intent(getBaseContext(), ActivityBookmarkStickers.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TAS K);
getApplication().startActivity(dialogIntent);
/*
ProgressDialog _pdialog = new ProgressDialog(getBaseContext());
_pdialog.setMessage("Loading...");
_pdialog.show();
*/
}
});
Ebrahimkh
یک شنبه 10 خرداد 1394, 17:19 عصر
ممنون hesam جان فقط یه سوال من بجای کلاس ActivityBookmarkStickers.class
از Mainactivity.class استفاده کردم ولی بازم جواب نمیده
در کل می خوام زمانی کاربر روی این آیکن کلیک کرد برنامم دوباره اجرا بشه (از اول)
اینم سورس کلاس
public class ChatHeadService extends Service {
private WindowManager windowManager;
private ImageView chatHead;
WindowManager.LayoutParams params;
@Override
public void onCreate() {
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
chatHead = new ImageView(this);
chatHead.setImageResource(R.drawable.face1);
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.LEFT;
params.x = 210;
params.y = 0;
// this code is for dragging the chat head
chatHead.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent dialogIntent = new Intent(getBaseContext(), MainActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TAS K);
getApplication().startActivity(dialogIntent);
/*
ProgressDialog _pdialog = new ProgressDialog(getBaseContext());
_pdialog.setMessage("Loading...");
_pdialog.show();
*/
}
});
chatHead.setOnTouchListener(new View.OnTouchListener() {
private int initialX;
private int initialY;
private float initialTouchX;
private float initialTouchY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
initialX = params.x;
initialY = params.y;
initialTouchX = event.getRawX();
initialTouchY = event.getRawY();
return true;
case MotionEvent.ACTION_UP:
return true;
case MotionEvent.ACTION_MOVE:
params.x = initialX
+ (int) (event.getRawX() - initialTouchX);
params.y = initialY
+ (int) (event.getRawY() - initialTouchY);
windowManager.updateViewLayout(chatHead, params);
return true;
}
return false;
}
});
windowManager.addView(chatHead, params);
}
@Override
public void onDestroy() {
super.onDestroy();
if (chatHead != null)
windowManager.removeView(chatHead);
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
Ebrahimkh
دوشنبه 11 خرداد 1394, 08:03 صبح
دوستان عزیز اگه ممکنه یه راهنمایی کنید
ممنون
Ebrahimkh
سه شنبه 12 خرداد 1394, 07:46 صبح
دوستان عزیز راهی برا چنین مواقعی سراغ ندارید ؟؟؟!!؟
Ebrahimkh
چهارشنبه 13 خرداد 1394, 08:33 صبح
دوستان کیا تا حالا با آیکن شناور کار کردن ؟؟!!
Ebrahimkh
یک شنبه 24 خرداد 1394, 11:04 صبح
سلام دوستان
کد listener مربوط به کلیک بر روی دکمه شناور رو گیر آوردم بازم تشکر می کنم از دوست عزیزم hesam67_b (http://barnamenevis.org/member.php?90009-hesam67_b) بخاطر راهنماییهاشون
اینم کد شاید یه روزی بدرد یکی از دوستان بخوره
chatHead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// _enable = false;
// handler.post(runnable);
Intent intent = new Intent(getApplicationContext(),
MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
getApplicationContext().startActivity(intent);
}
});
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.