SOLUTION: sử dụng onPrepareOptionsMenu(Menu menu) thay vì onCreateOptionsMenu
2. Khi nào thì cần extend một View?
SOLUTION: có lẽ bạn chỉ cần 1 loại View mới khi hình ảnh của bạn thường xuyên thay đổi hoặc thật là quái dị :)) khác biệt với các View mà android đã cung cấp. Với những thao tác với 1 View bạn muốn làm như: di chuyển, thay đổi kích cỡ, độ trong suốt thì bạn vẫn chưa cần phải extend 1 View.
Cụ thể:
Hãy sử dụng các FLAG của WindowManager.LayoutParams để thu được hiệu quả mong muốn, ví dụ:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
// set position
params.gravity = Gravity.LEFT | Gravity.TOP;
params.x = (int) xOfIcon;
params.y = (int) yOfIcon;
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
mIcon = new ImageView(this);
mIcon.setImageResource(R.drawable.icon);
// Set alpha
mIcon.setAlpha(mPreferences.getInt("alpha", 255));
// set Size
sizeRate = mPreferences.getInt("size", 25);
halfOfIconSize = sizeRate / 2;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.icon);
Bitmap scaled = Bitmap.createScaledBitmap(bitmap, sizeRate, sizeRate,
true);
mIcon.setImageBitmap(scaled);
// invalidate (update view)
mIcon.invalidate();
// Add view
wm.addView(mIcon, params);
3. Có thể kết hợp giữa View lập trình và View đã set trong file layout XML ?
SOLUTION:
thay vì dung <ImageView .../> ta sẽ thay bằng Qualified Name của class chưa View muốn đặt vào vị trí đó. VD: <com.hvn.activity.XXXView .../>
4. Khi viết code để DragNDrop 1 view. Nếu gặp lỗi hình ảnh nhảy loạn lên khi kéo?
SOLUTION: hãy dùng getRawX() thay vì getX()
5. Không có khác biệt giữa ImageButton và ImageView click được. Hai view này chỉ khác nhau ở style ban đầu:
Default ImageButton:
<style name="Widget.ImageButton">
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
<item name="android:scaleType">center</item>
<item name="android:background">@android:drawable/btn_default</item>
</style>
Khi dùng 1 custom list, nếu cho ImageButton vào sẽ không click được list item do ImageButton đã set focusable = true. Giải pháp là set = false hoặc dùng ImageView thay thế.
No comments:
Post a Comment