آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ایجاد قابلیت zoom با touch کردن صفحه

unknown  12 سال پیش  11 سال پیش
+2 0

با سلام  خدمت دوستان

طبیعتاً شما در اندروید وقتی درون گالری خود سیستم عامل یک عکس را باز می کنید می توانید آن را با touch کردن زوم کنید ، حالا سوال من اینه که چطور میشه چنین قابلیتی را روی Texview ها یا به عبارتی بر روی کل layout های موجود درون  screen انجام داد.

جهت اطلاع : من آموزش ها رو تا قسمت 4 بحث شی گرایی دیدم و در مورد این موضوع مطلبی ندیدم و همینطور این لینک LINK را مطالعه کردم اما در مورد zoom روی انیمیشن ها بحث شده.

با تشکر

+2 0
زوم کردن روی یک Layout ممکن نیست. در واقع باید Custom Control اختصاصی خودتون رو بنویسید براش که کار ساده ای نیست. اما صفحات وب قابل زوم شدن هستند و خیل اوقات می تونن جایگزین مناسبی برای اهداف شما باشند ( WebView ) (12 سال پیش)
0 0
استاد من یه کد برای زوم کردن روی layout توی جوابای پایین گذاشتم ولی فقط زومه و نمیشه صفحه رو با چپ و راست کردن، جابجا کرد. شما برای جابجا کردنش راهی سراغ ندارید؟ (12 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
sadeghbarout  12 سال پیش
+3 0

اگه فقط میخوای روی  textView زوم کنی میتونی از لینک زیر استفاده کنی

زوم روی textView با دو انگشت

من تست کردم خیلی خوب جواب میده

0 0
ممنونم عالی بود اما این مخصوص یک textview هستش و من در حالت کلی می خواهم روی همه انجام zoom صورت بگیره ، همینم واسه یه دونه textview جواب نداد متاسفانه. (12 سال پیش)
0 0
راستش برای زوم روی layout هم یه کدی دارم ولی یه مشکلی داره (صفحه رو نمیتونی جابجا کنی و فقط زوم میکنه) ولی اگه نیاز داری بگو بذارمش شاید به کارت بیاد (12 سال پیش)
0 0
مرسی ، اگه بزاری ممنون می شم ازت (12 سال پیش)
پاسخ به سوال 
sadeghbarout  12 سال پیش
+4 0

اینم کد مربوط به زوم روی activity با 2 انگشت . (البته فقط زوم میکنه و برای چپ و راست کردنش باید یه کدهایی اضاف کنی ولی خب چون خودت خواستی میذارمش)

 public class startupActivity extends Activity {

    private float                mScale = 1f;
    private ScaleGestureDetector mScaleDetector;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);

        final LinearLayout lnr1 = (LinearLayout) findViewById(R.id.linear1);

        mScaleDetector = new ScaleGestureDetector(this, new ScaleGestureDetector.SimpleOnScaleGestureListener()
        {

            @Override
            public boolean onScale(ScaleGestureDetector detector)
            {
                float scale = 1 - detector.getScaleFactor();

                float prevScale = mScale;
                mScale += scale;

                if (mScale < 0.1f) // Minimum scale condition:
                    mScale = 0.1f;

                if (mScale > 10f) // Maximum scale condition:
                    mScale = 10f;
                 ScaleAnimation scaleAnimati ScaleAnimation(1f / prevScale, 1f / mScale, 1f / prevScale, 1f / mScale, detector.getFocusX(), detector.getFocusY());
                scaleAnimation.setDuration(0);
                scaleAnimation.setFillAfter(true);
                lnr1.startAnimation(scaleAnimation);

                return true;
            }
        });
    }


    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        mScaleDetector.onTouchEvent(event);
        return super.onTouchEvent(event);
    }

}

فقط اون linear1 همون لایه اصلی صفحه main ه

0 0
مرسی (12 سال پیش)
0 0
خواهش میکنم دوست عزیز :) (12 سال پیش)
0 0
این کد برا زوم کردن عکس هم خوب جواب میده ولی اون قسمت جابجا کردن نداره ! چجوری باید بهش اضافه کرد ؟ البته من از یه کد دیگه برا جابجایی استفاده میکردم که وقتی کنار این کد میزارم دیگه این زوم درست کار نمیکنه ! (11 سال پیش)
پاسخ به سوال 
doost_fu  11 سال پیش
0 0

چجوری این کد Drag کردن رو میشه در کنار کد بالا استفاده کرد که مشکلی پیش نیاد ؟

   private ImageView image;
private int x_Delta;
private int y_Delta;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

image = (ImageView) findViewById(R.id.imageOne);

image.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {

final int X = (int) event.getRawX();
final int Y = (int) event.getRawY();
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) v.getLayoutParams();
x_Delta = X - lParams.leftMargin;
y_Delta = Y - lParams.topMargin;
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_POINTER_DOWN:
break;
case MotionEvent.ACTION_POINTER_UP:
break;
case MotionEvent.ACTION_MOVE:
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) v.getLayoutParams();
layoutParams.leftMargin = X - x_Delta;
layoutParams.topMargin = Y - y_Delta;
layoutParams.rightMargin = -400;
layoutParams.bottomMargin = -400;
v.setLayoutParams(layoutParams);
break;
}
image.invalidate();
return true;
}
});


ممنون


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