কীভাবে ফেসবুক অ্যান্ড্রয়েডে চ্যাট হেডগুলি তৈরি করে? অন্যান্য সমস্ত দর্শনের শীর্ষে ভাসমান ভিউগুলি তৈরি করতে এপিআই কী?
কীভাবে ফেসবুক অ্যান্ড্রয়েডে চ্যাট হেডগুলি তৈরি করে? অন্যান্য সমস্ত দর্শনের শীর্ষে ভাসমান ভিউগুলি তৈরি করতে এপিআই কী?
উত্তর:
এই এক:
অ্যাপ্লিকেশনটিকে অন্যান্য সমস্ত অ্যাপ্লিকেশনগুলির উপরে প্রদর্শিত TYPE_SYSTEM_ALERT প্রকারটি ব্যবহার করে উইন্ডো খোলার অনুমতি দেয়। খুব কম অ্যাপ্লিকেশনগুলির এই অনুমতিটি ব্যবহার করা উচিত; এই উইন্ডোগুলি ব্যবহারকারীর সাথে সিস্টেম-স্তরের কথোপকথনের জন্য তৈরি।
অবিচ্ছিন্ন মান: "android.permission.SYSTEM_ALERT_WINDOW"
// সম্পাদনা করুন: সম্পূর্ণ কোড এখানে :
public class ChatHeadService 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.android_head);
WindowManager.LayoutParams 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 = 0;
params.y = 100;
windowManager.addView(chatHead, params);
}
@Override
public void onDestroy() {
super.onDestroy();
if (chatHead != null) windowManager.removeView(chatHead);
}
}
কোনওভাবে পরিষেবা শুরু করতে ভুলবেন না:
startService(new Intent(context, ChatHeadService.class));
.. এবং এই পরিষেবাটি আপনার ম্যানিফেস্টে যুক্ত করুন।
একটি নিয়ম হিসাবে, অ্যান্ড্রয়েড ক্রিয়াকলাপগুলি পুরো পর্দা, ধারণাগতভাবে উত্সর্গীকৃত ইউআই যা সমস্ত ইন্টারঅ্যাকশন গ্রহণ করে take এর ব্যতিক্রম কিছু আছে। শুরু করার জন্য, এমন পপআপ ডায়লগ রয়েছে যা স্ক্রিনটি পূরণ করে না। আর একটি হ'ল অ্যান্ড্রয়েড টোস্ট, যা একটি ইন্টারঅ্যাক্টিভ পপআপ - আপনি এটি স্পর্শ করতে পারবেন না, এবং যদি চেষ্টা করেন তবে নীচে যা যা যাবেন to
আপনি নিজের বিশেষ ইউআইও করতে পারেন। WindowManager
কোনও ধরণের পতাকা নির্দিষ্ট করে আপনি সরাসরি দর্শন যোগ করতে পারেন । চ্যাট শিরোনাম সম্ভবত TYPE_PHONE ব্যবহার করে । কয়েকটি অনুরূপ ধরণের রয়েছে, তবে উদ্দেশ্যটি একই: বিশেষ উদ্দেশ্য ওভারলেগুলি যা প্যারেন্ট অ্যাপ্লিকেশনটি আপাতভাবে উপস্থিত না করে অন্য যে কোনও কিছুর শীর্ষে প্রদর্শিত হতে পারে।
পারস্পরিক মিথস্ক্রিয়ায় সমস্যার কারণে এটি কেবল আপনাকে এ পর্যন্ত পেয়ে যায়। প্রথমদিকে, আপনার ওভারলে সমস্ত ইন্টারঅ্যাকশন শোষণ করবে, তাই কেবল মাথাটি ইভেন্টগুলি পায় না তবে আপনি নীচের সমস্ত কিছুতে ইন্টারঅ্যাকশন অবরুদ্ধ করেন।
আপনি লেআউটপ্যারাম ব্যবহার করে এই আচরণটি কনফিগার করেন । FLAG_NOT_TOUCH_MODAL
এর অর্থ হ'ল আপনার প্রদর্শন ক্ষেত্রের বাইরের ইভেন্টগুলি অন্তর্নিহিত ইউআইগুলিতে যায়। আপনি এখন এটি কার্যকরভাবে দেখতে পাবেন তবে পিছনে / মেনু বোতামগুলির মতো অ্যাপ্লিকেশনগুলিতে নির্দেশিত হয় না, পাশাপাশি কোনও কীবোর্ডের মতো অন্যান্য খারাপ জিনিস এখনও ঘটে happen আপনার যে সমাধান প্রয়োজন FLAG_NOT_FOCUSABLE
।
আপনি অ-ফোকাসযোগ্য বিট থেকেও একটি পার্শ্ব প্রতিক্রিয়া পান যা আপনার ওভারলে এর সাথে কোনও দুর্দান্ত ইন্টারঅ্যাকশন নয়, যেমন বোতাম টিপুন। আপনি কিছু বেসিক স্পর্শ ইভেন্টগুলি পেতে পারেন, যা আপনি সর্বদা গণিত করতে পারেন, এবং এটি সম্ভবত চ্যাট প্রধানদের পক্ষে যথেষ্ট। কেবল সচেতন থাকুন যে এটি আপনাকে ইউআই অ্যানিমেশনের মতো প্রচুর পরিমাণে আপনার নিজের উপর ছেড়ে দেয়।
এই স্ট্যাকওভারফ্লো থ্রেডে নির্বাচক ইন্টারঅ্যাকশন গ্রহণের অনুমতি প্রদান সহ বিশদটির একটি ভাল ওভারভিউ পাওয়া যাবে । বিশেষত উত্তরের একটি লিঙ্ক শেষ পর্যন্ত আপনাকে এখানে নিয়ে যাবে , এটি একটি ভাল উদাহরণ প্রকল্প। নোট করুন আইসিএস কীভাবে এটি সামান্য কাজ করে তা পরিবর্তন করেছে তবে থ্রেডগুলি এটি ব্যাখ্যা করে।
এটি সমস্ত সর্বজনীন এপিআই উপাদান, তবে এটি অবশ্যই মূলধারার জিনিসটির মতো বলে মনে হচ্ছে না যা অবশ্যই অবশ্যই করা উচিত। ডকুমেন্টেশন বিশেষ সিস্টেম অ্যাপ ব্যবহারের রেফারেন্স এবং ভাল কারণ সহ ফাঁকা আছে; সবাই যদি তা করে?
স্প্রিংহেডগুলি বাক্সের বাইরে চ্যাট হেডগুলির বসন্ত ভিত্তিক আচরণ দেয়। আপনাকে যে সমস্ত সংজ্ঞা দিতে হবে তা হ'ল চ্যাট শিরোনামের জন্য আকর্ষণীয় এবং চ্যাটের শিরোনামটি ক্লিক করার পরে খণ্ডটি খোলার জন্য। চ্যাট মাথাগুলি যখন ছোট করা হয় তখন তা সঙ্কুচিত হয় এবং টেনে আনলে আঙুলটি অনুসরণ করুন।
প্রকল্পে একটি ডেমো অ্যাপ্লিকেশন অন্তর্ভুক্ত রয়েছে যা সমস্ত বিল্ট কার্যকারিতা দেখায়। এটি ব্যবহার করতে, আপনার এটিকে আপনার গ্রেড নির্ভরতাতে যুক্ত করতে হবে।
compile 'com.flipkart.springyheads:library:0.9.6'