TranslateAnimation
নির্দিষ্ট পরিমাণ দ্বারা ভিউকে এক দিকে "টান" দিয়ে কাজ করে। এই "টানতে" কোথায় শুরু করতে হবে এবং কোথায় শেষ হবে তা আপনি সেট করতে পারেন।
TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta);
fromXDelta এক্স অক্ষগুলিতে চলাচলের শুরু অবস্থানের অফসেট সেট করে।
fromXDelta = 0 //no offset.
fromXDelta = 300 //the movement starts at 300px to the right.
fromXDelta = -300 //the movement starts at 300px to the left
টেক্সডেল্টা এক্স অক্ষের মধ্যে চলাচলের অফসেট সমাপ্ত অবস্থান নির্ধারণ করে।
toXDelta = 0 //no offset.
toXDelta = 300 //the movement ends at 300px to the right.
toXDelta = -300 //the movement ends at 300px to the left.
যদি আপনার পাঠ্যের প্রস্থটি এক্সডেল্টা এবং এক্সডেল্টা থেকে পার্থক্যের মডিউলের বেশি হয় তবে পাঠ্যটি পুরোপুরি স্ক্রিনের অভ্যন্তরে সরে যেতে সক্ষম হবে না।
উদাহরণ
ধরা যাক আমাদের পর্দার আকার 320x240 pxs s আমাদের কাছে একটি টেক্সটভিউ রয়েছে একটি পাঠ্য যার 700px প্রস্থ রয়েছে এবং আমরা একটি অ্যানিমেশন তৈরি করতে চাই যা পাঠ্যটিকে "টান" দেয় যাতে আমরা বাক্যাংশটির শেষ দেখতে পাই।
(screen)
+
|<-
| |
|+
movement<-
|+
| unconstrained size 700px |
| |
| |
+
+
| |
| |
<<<< X px >>>>
movement<-
| |
| |
| |
+
প্রথমে আমরা সেট করেছিলাম fromXDelta = 0
যাতে আন্দোলনের কোনও অফসেট না হয়। এখন আমাদের টেক্সডেল্টা মানটি চিহ্নিত করতে হবে। কাঙ্ক্ষিত প্রভাব অর্জনের জন্য আমাদের পাঠ্যটি ঠিক একই পিক্সের স্ক্রিনের বাইরে ছড়িয়ে দিতে হবে p (স্কিমটিতে <<<< এক্স পিএক্স >>>> দ্বারা প্রতিনিধিত্ব করা হয়েছে) যেহেতু আমাদের পাঠ্যের 700 প্রস্থ রয়েছে, এবং দৃশ্যমান অঞ্চলটি 320px (স্ক্রিনের প্রস্থ) আমরা সেট করেছি:
tXDelta = 700 - 320 = 380
এবং আমরা কীভাবে স্ক্রিন প্রস্থ এবং পাঠ্য প্রস্থকে চিত্রিত করব?
কোড
জারাহ স্নিপেটকে একটি শুরুর দিক হিসাবে গ্রহণ করা:
public static Animation scrollingText(View view, float margin){
Context context = view.getContext();
view.measure(View.MeasureSpec.UNSPECIFIED,
View.MeasureSpec.UNSPECIFIED);
float width = view.getMeasuredWidth();
float screenWidth = ((Activity) context).getWindowManager().getDefaultDisplay().getWidth();
float toXDelta = width - (screenWidth - margin);
if (toXDelta < 0) {toXDelta = 0; } else { toXDelta = 0 - toXDelta;}
Animation mAnimation = new TranslateAnimation(0, toXDelta, 0, 0);
mAnimation.setDuration(15000);
mAnimation.setRepeatMode(Animation.RESTART);
mAnimation.setRepeatCount(Animation.INFINITE);
return mAnimation;
}
এটি সম্পাদন করার আরও সহজ উপায় থাকতে পারে তবে আপনি যে ভাবনা ভাবতে পারেন এবং পুনরায় ব্যবহারযোগ্য তা প্রতিটি দৃষ্টিতে এটি কাজ করে। আপনি যদি টেক্সটভিউয়ের সক্ষম / অনফোকাস সক্ষমতাগুলি ভঙ্গ না করে তালিকভিউতে কোনও টেক্সটভিউ অ্যানিমেট করতে চান তবে এটি বিশেষভাবে কার্যকর। দেখুন দৃষ্টি নিবদ্ধ না করা হলেও এটি অবিচ্ছিন্নভাবে স্ক্রোল করে।