সেন্টার পয়েন্টের তুলনায় অ্যান্ড্রয়েড চিত্র স্কেল অ্যানিমেশন


90

আমার একটি চিত্র ভিউ আছে এবং আমি এটিতে একটি সাধারণ স্কেল অ্যানিমেশন করি। খুব স্ট্যান্ডার্ড কোড।

আমার স্কেল_আপ.এক্সএমএল:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromXScale="1"
           android:fromYScale="1"
           android:toXScale="1.2"
           android:toYScale="1.2"
           android:duration="175"/>
</set>

আমার অ্যানিমেশন কোড:

Animation a = AnimationUtils.loadAnimation(this, R.anim.scale_up);
((ImageView) findViewById(R.id.circle_image)).startAnimation(a);

সমস্যাটি:

যখন চিত্রটি স্কেল করে এটি কেন্দ্র থেকে স্কেল করে না তবে উপরের বাম কোণ থেকে। অন্য কথায়, চিত্রটির স্কেলড ভেরিয়ানের কেন্দ্রের মতো একই বিন্দু নেই, তবে এটির উপরের-বাম দিকের একই বিন্দু রয়েছে। এখানে আমি বোঝাতে চাইছি একটি লিঙ্ক এখানে। প্রথম চিত্রটি হ'ল অ্যানিমেশনটি কীভাবে স্কেল করে এবং দ্বিতীয় চিত্রটি কীভাবে আমি এটি স্কেল করতে চাই। এটি কেন্দ্রের পয়েন্ট একই রাখে। আমি ইমেজে গ্রাভিটি স্থাপনের চেষ্টা করেছি, ধারকটিতে, বাম বা ডানদিকে প্রান্তিককরণ, এটি সর্বদা একই স্কেল করে। আমি মূল স্ক্রিনের জন্য রিলেটিভলআউট ব্যবহার করছি এবং ইমেজভিউ অন্য একটি রিলেটিভলআউটে অবস্থিত, তবে আমি অন্যান্য বিন্যাস চেষ্টা করেছি, কোনও পরিবর্তন হয়নি।

উত্তর:


77

অতিরিক্ত অনুবাদ, সেট ভুলে যান android:pivotX, android:pivotYঅর্ধেক প্রস্থ এবং উচ্চতায় এবং এটি ইমেজ কেন্দ্র থেকে আকার পরিবর্তন হবে।


4
pivotXএবং pivotYঅর্ধেক সেট করা উচিত viewportWidthএবং viewportHeightসঠিক হতে হবে।
toobsco42

163

50% অ্যানিমেটেড ভিউয়ের কেন্দ্র।

50%p পিতামাতার কেন্দ্র

<scale
    android:fromXScale="1.0"
    android:toXScale="1.2"
    android:fromYScale="1.0"
    android:toYScale="1.2"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="175"/>

30
আমার জন্য 50% কাজটি করেছে (পি ছাড়াই)
আগামোভ 10:54

4
এটি পি ছাড়াই হওয়া উচিত যদি এটি উপাদানগুলির প্রস্থ বা উচ্চতার সাথে সম্পর্কিত হয় যা আপনি অ্যানিমেশন প্রয়োগ করছেন। পি উপাদানটির পিতামাতাকে বোঝায় যেটিতে আপনি অ্যানিমেশনটি প্রয়োগ করছেন।
অ্যালান দীপ

50%pএক্সএমএলের পরিবর্তে জাভা ফাইলগুলিতে কীভাবে ব্যবহার করবেন ?
নিকোলা কে।

6
নতুন স্কেলএনিমেশন (1.0f, 1.2f, 1.0f, 1.2f, অ্যানিমেশন.আরএলটিআইপিওলটো_প্যারেন্ট, 0.5f, অ্যানিমেশন REআরল্যাটিব্লোটো_প্যারেন্ট, 0.5f);
জিয়াং কি কি

Px এ সেট করতে "অ" - অ্যানিমেশন। ABSOLUTE এছাড়াও রয়েছে।
জোন

121

@ স্টেভানভেলটিমা এবং @ জিয়াংকিউ দ্বারা প্রদত্ত উত্তরগুলি সঠিক তবে আপনি যদি কোড ব্যবহার করে স্কেলিং করতে চান তবে আপনি আমার উত্তরটি ব্যবহার করতে পারেন।

// first 0f, 1f mean scaling from X-axis to X-axis, meaning scaling from 0-100%
// first 0f, 1f mean scaling from Y-axis to Y-axis, meaning scaling from 0-100%
// The two 0.5f mean animation will start from 50% of X-axis & 50% of Y-axis, i.e. from center

ScaleAnimation fade_in =  new ScaleAnimation(0f, 1f, 0f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
fade_in.setDuration(1000);     // animation duration in milliseconds
fade_in.setFillAfter(true);    // If fillAfter is true, the transformation that this animation performed will persist when it is finished.
view.startAnimation(fade_in);

4
@ টি টিডুয়া কি ত্রুটি? একটি নতুন প্রশ্ন জিজ্ঞাসা করুন এবং এই উত্তর ফিরে লিঙ্ক।
রোহন কান্দওয়াল

7

আপনি এটি সেট করতে আপনার সেটে অনুবাদ অ্যানিমেশনটি ব্যবহার করতে পারেন। সঠিকভাবে পেতে আপনাকে টেক্সডেল্টা এবং টয়ডেল্টা মানগুলি টুইঙ্ক করতে হবে যাতে এটি চিত্রকে কেন্দ্র করে রাখে।

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromXScale="1"
        android:fromYScale="1"
        android:toXScale="1.2"
        android:toYScale="1.2"
        android:duration="175"/>
    <translate
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="-20%"
        android:toYDelta="-20%"
        android:duration="175"/>
</set>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.