PDA

View Full Version : کد عمل لمس از بیرون روی یک آیکون چیست؟



meh_ham
پنج شنبه 21 دی 1391, 22:12 عصر
سلام
یک آیکون رو در نظر بگیرید. می خوام طوری طراحی کنم که اگر کاربر انگشتش را روی آیکون کشید عملی انجام شود. مثلا از بالای آیکون به سمت پایین آن را به حالت لمس کشید.
کد این عمل چیست؟
ممنون؛

hamid_hr
یک شنبه 24 دی 1391, 18:20 عصر
http://stackoverflow.com/questions/3669239/how-to-drag-an-image-by-touching-in-android
http://stackoverflow.com/questions/4255859/touch-and-drag-image-in-android
https://sites.google.com/site/androidhowto/how-to-1/wilaudandd

meh_ham
یک شنبه 24 دی 1391, 22:53 عصر
ممنون از جواب ولی فکر کنم منظورم رو اشتباه متوجه شدید.
فرض کنید یک Button وسط صفحه است. در حالت عادی وقتی کاربر این Button‌ را لمس کند اتفاقی رخ می‌دهد. اما من می‌خواهم اگر کاربر فرضا دستش را از جای دیگر صفحه هم آورد روی Button آن اتفاق انجام شود. فکر کنم Action.Down و Up و Move برای زمانی است که کاربر فقط روی Button را لمس کند. اما وقتی لمسش را از جای دیگر صفحه شروع کند و هر موقع که لمس روی Button رسید اتفاقی انجام گیرد چگونه انجام می‌گیرد مورد سوال است...
با تشکر

hamid_hr
دوشنبه 25 دی 1391, 08:53 صبح
سلام


balls.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
LayoutParams layoutParams = (LayoutParams) balls.getLayoutParams();
switch(event.getAction())
{
case MotionEvent.ACTION_MOVE:

break;
default:
break;
}
return true;
}
});

meh_ham
سه شنبه 26 دی 1391, 15:14 عصر
سلام


balls.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
LayoutParams layoutParams = (LayoutParams) balls.getLayoutParams();
switch(event.getAction())
{
case MotionEvent.ACTION_MOVE:

break;
default:
break;
}
return true;
}
});


جایی در مورد این کد توضیح ننوشته؟
مخصوصا این خطش:



LayoutParams layoutParams = (LayoutParams) balls.getLayoutParams();

hamid_hr
سه شنبه 26 دی 1391, 16:39 عصر
سلام
اين هستش

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

فقط زبان اصلي هست
چيزي فهميدين بزارين ما هم فيض ببريم

meh_ham
شنبه 07 بهمن 1391, 10:17 صبح
رفتار معمولی یک Button‌ این‌طور است که وقتی فقط روی آن لمس شود عملیات خود را انجام می‌دهد. ولی چیزی که من می‌خوام مهم نیست لمس از کجای صفحه شروع بشه فقط به محض اینکه انگشت روی این Button بره عملیات رو انجام بده...(به طور مثال اگه دکمه‌های پیانو رو Button فرض کنیم وقتی از سمت راست به چپ دست می‌کشیم، تمام Button ها صدای خاص خودشون رو پخش می‌کنند...)

کدی در این مورد پیدا کردم(از اینجا (http://www.martinhoeller.net/2012/01/13/developing-a-musical-instrument-app-for-android/) برای یک نرم افزار پیانو) ولی نمی‌تونم برای ImageButton های خودم استفاده کنم. کسی می‌تونه بگه این کد رو چطور برای یک ImageButton استفاده کنم؟
می‌خوام به محض اینکه انگشت روی ImageButton‌ رفت عملیات انجام بشه.



@Override
public boolean onTouchEvent(MotionEvent event)
{
boolean[] newButtonStates = new boolean[36];

int action = event.getAction();
boolean isDownAction = (action & 0x36) == 0x36 || action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_MOVE;

for (int touchIndex = 0; touchIndex < event.getPointerCount(); touchIndex++)
{
// find button for location
int x = (int) event.getX(touchIndex);
int y = (int) event.getY(touchIndex);

for (int buttonIndex = 0; buttonIndex < buttons.size(); buttonIndex++)
{
View button = buttons.get(buttonIndex);
int[] location = new int[2];
button.getLocationOnScreen(location);
int buttonX = location[0];
int buttonY = location[1];

Rect rect = new Rect(buttonX, buttonY, buttonX + button.getWidth(), buttonY + button.getHeight());
if (rect.contains(x, y))
{
newButtonStates[buttonIndex] = isDownAction;
break;
}
}
}

for (int index = 0; index < newButtonStates.length; index++)
{
if (buttonStates[index] != newButtonStates[index])
{
buttonStates[index] = newButtonStates[index];
View button = buttons.get(index);
toggleButtonSound(button, newButtonStates[index]);
}
}

return true;
}