Saturday, September 2, 2017

Níu kéo, tiếc nuối hay… thương hại?

12h, nằm  một mình trong căn phòng nhỏ, Đà Nẵng vẫn chưa quá lạnh để tôi phải trùm kín người, hơi men bốc lên làm tôi cảm thấy buồn ngủ dần. Nghĩ lại chuyện vừa qua, như một giấc mơ, tôi phân vân không biết nên tiếp tục như thế nào – im lặng để nó trôi qua hay tiếp tục lao vào cuộc chơi không có kết quả này,..
- Anh về rồi, ngủ ngon nhé, xem như một giấc mơ thôi cũng được. – là từ bỏ sao? Cũng không biết sao lúc đó tôi lại gửi cái tin nhắn đó đi, liệu có phải do tôi không đủ can đảm để chấm dứt, để từ bỏ? Khó hiểu cái cảm xúc lúc ấy, hay đơn giản là tôi muốn nói cho em biết tình cảm của mình?
Có lẽ chỉ nói “anh thích em” là chưa đủ, mấy tháng thời gian, không quá dài mà cũng không phải ngắn, tình cảm nó cứ dồn nén ngày này qua ngày khác, những cảm xúc lẫn lộn của một người con trai đang yêu đơn phương một người con gái. Có lẽ, tôi muốn một đáp án cuối cùng, một phần kết cho cuộc tình này…

“Có lẽ anh phải nói ra để cho nhẹ lòng
Có lẽ ta chỉ có duyên gặp nhau
Em là người con gái anh đã yêu rất nhiều
Chắc em cũng biết điều đó phải ko?
Đối với anh nếu ko thể đến bên nhau
Thì đó vẫn là một hạnh phúc ngắn anh trân trọng
Mặc dù ko được bao lâu, dù đối phương kia là ai
Chỉ cần đã một lần chạm vào trái tim anh
Anh sẽ giữ trọn niềm yêu thương
Nhiều khi anh cũng ko thể hiểu nổi chính mình
Có lẽ anh sẽ phải quên một cuộc tình
Chắc sẽ phải tỉnh giấc thôi” –
lúc nghe bài hát này tôi cứ nghĩ nó được viết ra cho tôi vậy, từng câu từng chữ tôi muốn nói cho em, muốn em hiểu được,…
- Tình cảm anh dành cho em có đôi chút giống bài hát này đấy, chúc em hạnh phúc nhé! – lại một tin nhắn được gửi đi trên facebook, tôi phải nói những điều này với em, vì tôi không muốn phải hối hận, phải tiếc nuối sau này.
- Anh làm em khóc à L - em là người dễ khóc, có lẽ tôi đã biết điều này trước kia, nhưng tôi không nghĩ điều tôi nói lại làm em khóc được.
- Sao mà em có thể quên được?
- Làm sao phải khóc, mà em không quên cũng chả sao, vì đối với em anh chỉ là một người bạn thôi mà… có lẽ hơn chút nhưng anh biết vị trí của mình.
- Em xin lỗi anh, em là người dễ khóc mà, anh đừng nghĩ vậy, hơn một chút nhưng vẫn có tình cảm mà.
- Vẫn có à, vậy là anh vui rồi. Em biết những lúc bị mọi người trêu anh thường im lặng không?
- Em vẫn cảm thấy có lỗi à, em biết, tại sao anh im lặng?
- Anh không muốn làm em khó xử, anh không muốn em phải chịu bất kì áp lực nào, vì vậy em không cần cảm thấy có lỗi.
- Sao anh nghĩ cho em nhiều vậy??
- Tại vì em đã “chạm được vào trái tim” của anh mà,  hì hì, thôi đừng suy nghĩ lung tung nữa.
- Anh đang buồn mà sao vẫn cười được?
- Anh không biết, anh muốn em được vui vẻ mà, đừng để ý đến anh, con người anh cô đơn quen rồi.
- Em vui thì anh có vui không? Không lẽ anh cô đơn hoài vậy sao?
- Lúc em vui anh cũng vui :D thật đấy. Em thấy mấy ngày cuối cùng ở nhà hàng anh thường tránh mặt em không? Tại anh muốn em quên đi một người như anh. Anh muốn quên đi đoạn tình cảm này, nhưng anh làm không được…
- Em không tin đâu, anh không thể vui khi thấy em quen với người khác được!
- Ừ thì không vui, em có biết lúc anh biết em có người yêu anh buồn thế nào đâu, nhưng anh vẫn im lặng.
- Sao anh làm vậy được chứ, sao anh không nói sớm hơn, bây giờ anh mới nói là sao?
- Anh muốn em luôn vui vẻ, anh thích em vì em là một cô bé luôn cười, ngây thơi và có đôi chút trẻ con. Anh không muốn làm người thứ 3, còn tại sao anh không nói sớm? Đối với anh thì tình yêu là một cái gì đó quan trọng lắm, anh chỉ nói ra khi anh chắc chắn. Anh không nói yêu mà anh chỉ nói thích em, đó là vì anh biết em không thể thuộc về anh…

- Anh im lặng vậy sao mà chịu được? Bực anh ghê!!
- Với anh thì tình yêu là cho đi mà không cần nhận lại :D em đừng suy nghĩ gì nữa. Xóa mấy cái stt kìa đi, anh không muốn vì mấy phút sai lầm mà ảnh hưởng đến em đâu.
- Em xin lỗi, em không biết nói sao nữa nhưng em quý anh lắm, em xin lỗi… Em không xóa, sao anh lại nói là sai lầm chứ?
- Anh đoán vậy, vì anh thấy trước giờ em có thể hiện chút tình cảm nào đâu. Anh biết em có chút men nên làm bậy thôi.
- Anh vị tha lắm à, anh càng bao dung thì em càng cảm thấy có lỗi với anh. Em không say mà, em không làm bậy đâu, em nghĩ là mình làm đúng. Hùi nãy lúc ngồi trên xe em định ôm anh đó nhưng chắc bì một điều gì đó… nên em không thể.
- Anh mà vị tha gì, anh ích kỷ lắm, không thấy anh giữ tình cảm cho riêng anh à. Anh biết, nhiều lúc chở em đi anh lạnh lắm, anh cũng muốn có một vòng tay ôm lấy anh lúc ấy…
- Anh không ích kỷ, vì anh không muốn em phải suy nghĩ hay bị áp lực nên anh mới làm vậy, khi nào anh cũng suy nghĩ cho em hết…
- …nhưng anh không hề nói với em điều gì, anh biết em khó xử, anh không để ý điều đó đâu.
- Sao anh không nói, anh ngốc vậy? Em không thể hiểu được tại sao anh lại đối xử tốt với em như vậy cơ chứ?
- Anh là thằng ích kỷ mà, anh chả tốt đẹp gì đâu, quên những điều này đi.
- Em không làm gì được cho anh hết, trong khi đó anh suy nghĩ cho em quá nhiều. Em không quên được, anh không ích kỷ mà!
- Thời gian sẽ làm em quên đi thôi, tin anh và đi ngủ đi… - ẻm  đi ngủ thật :3

Lời tạm biệt
- Mai anh đi cẩn thận nha, nhớ giữ gìn sức khỏe, em buồn khi sắp phải xa người bạn như anh. Em xin lỗi vì thời gian qua em đã quá ngây thơ không nhận ra được tình cảm của anh dành cho em. Em sẽ nhớ những kỷ niệm của anh và em. Anh cũng vậy nha! Em không có quà tặng anh với lại em không đáp lại tình cảm của anh chắc anh buồn lắm phải không. Em xin lỗi.

- Cái ôm lúc chia tay xem như là món quà của em đi, đối với anh, chỉ cần em chạm được vào trái tim anh, thì anh vẫn xem đó là một hạnh phúc ngăn ngủi mà anh sẽ mãi trân trọng, em không cần suy nghĩ gì về điều đó. Ngủ đi, ngày mai tỉnh dậy em sẽ quên những điều này thôi :D”

Wednesday, December 17, 2014

Có phải là giấc mơ không em?

Cứ như một giấc mơ

- 7/12/2014 – viết cho 5/12

Quả thật đến bây giờ tôi vẫn nghĩ đó như là một giấc mơ, vì tôi không tin được là em lại có cảm tình với tôi, dù chỉ là một chút. Bỏ qua những suy nghĩ khác về công việc bạn bè mà mọi thứ, chỉ có những suy nghĩ, những tình cảm về em, tôi muốn lưu giữ nó lại.



Đến đón em đi chơi, tôi xem như đây là lần cuối tôi và em gần nhau, tôi không suy nghĩ nhiều về chuyện đó. Vì trong tôi, đã xem em như một ký ức đẹp.



Lúc em nhắn tin nhờ tôi đón đi chơi, tôi chỉ nghĩ em muốn đi cho vui thôi, vì em là một cô bé ham vui mà :D. Vi vu trên đường, không để ý nên bị hố mất một đoạn, trễ hẹn với em mấy chục phút J. Thế mà lúc đến vẫn không thấy em tỏ ra khó chịu gì cả, nhìn thấy em, một chút ký ức trong tôi lại trỗi dậy, tôi muốn cho em biết những tình cảm của mình, nhưng tôi không dám.



Chúng tôi lại im lặng, sự im lặng quen thuộc mỗi lần em ngồi sau tôi…



Đến nhà hàng, có lẽ đây cũng là lần cuối tôi có mặt ở đây, được gặp lại một số gương mặt thân quen, đã bên tôi suốt 4 tháng. Tôi và em tách ra, ngồi nói chuyện phiếm với mấy đứa, lâu lâu lại nhìn em cái, thấy em vẫn vui vẻ là được rồi.



Sau một hồi rủ rê lôi kéo thì mọi người cũng rủ nhau đi nhậu, để xem hôm đó có ai nào: Vân, Xuân, Đức, Sơn, Bảo, Hùng, Hiệp, Kiều, Vân (đen), Loan (móm), em và tôi. Mọi người cạn lên cạn xuống, nhưng nhìn chung thì chỉ có mấy đứa là chịu uống, còn những người khác chỉ nhấp môi. Liếc qua thấy ly bia trước mặt em, tôi không vui chút nào, em bị đau dạ dày mà... Nhưng tôi không có lý do gì để ngăn em, tôi chỉ là một người bạn thôi mà…



Tôi uống, tôi muốn quên đi những cảm xúc này, cạn, cạn và cạn. Một lúc thì hết thùng bia, mấy đứa lại rủ nhau đi kara, nhưng có lẽ sáng mai phải làm nên có mấy người bỏ về. Em muốn đi, tôi cũng đoán được, tôi cũng mong điều đó xảy ra, muốn được gần em thêm chút nữa.



Em lại ngồi phía sau tôi, trời Đà Nẵng mấy hôm nay dần trở lạnh, tôi cảm nhận được chút hơi ấm từ em, điều mà tôi vẫn luôn mong chờ, nhưng tại sao nó lại đến muộn vậy?



Hôm nay không phải lần đầu tôi chở em đi, nhưng những hôm đó tôi chỉ cảm nhận được cái lạnh ngoài kia. Em vẫn luôn hỏi tôi sao tôi không mang áo khoác gì mà để lạnh vậy? Tôi chỉ cười và bảo anh lười đấy, em im lặng... Những hôm thức dậy sớm, chạy gần chục cây số qua đón em đi làm, tay anh lúc nào cũng run cầm cập, rồi những đêm chở em về nữa. Anh lạnh lắm, cái lạnh giá kia với sự cô đơn trong tim như muốn làm anh từ bỏ, từ bỏ đoạn tình cảm này...



Nhiều lúc tự hỏi làm thế này có đáng không, có cần phải làm vậy không?? Những lúc đó tôi chỉ cười mỉm mà nghĩ rằng, thôi không quan tâm nữa, chỉ vì trong tim tôi đã có hình bóng em, vậy là đủ rồi. Một chút suy nghĩ về em, một chút vẩn vơ làm tim tôi cảm thấy ấm áp để tiếp tục giữ lại đoạn tình cảm này. Đối với tôi thì tình yêu là một thứ gì đó xa vời, nên dù rằng đây chỉ là một chút tình cảm từ một phía, tôi vẫn muốn giữ mãi nó trong tim mình. Đúng là tự mình đa tình mà, hì.



Một chút ký ức đó để tôi quay về với thực tại, em đang ngồi sát phía sau. Tôi có thể cảm nhận được hơi ấm từ cơ thể em. Bất giác tôi quay lại, điều này như một thói quen khi chở em, tôi muốn xem em còn ngồi đó không hay rơi đâu mất rồi =)), có chuyện này là bởi bình thường em thường ngồi cách tôi một quãng, dường như quá xa để tôi không cảm nhận được sự tồn tại của em. Lúc này đây tôi quay lại, nhìn thấy rõ gương mặt em ngay bên mình, lúc này em đang cười mỉm, tôi không hiểu lắm, lại tiếp tục lái xe đi.



Bất chợt em áp sát vào và hỏi tôi:



- Anh có gì muốn nói với em không? - ngay lúc đó tôi thấy đầu óc mình như trống rỗng, tôi hỏi lại theo bản năng - nói gì hả em?



- Thì có chuyện gì muốn nói với em không? - em lại nói, hình như có đôi chút ngại ngùng. Tôi im lặng mất một lúc để tiêu hóa một đống suy nghĩ vừa lóe lên trong đầu.



- Em không cảm nhận được chút nào sao? - tôi hỏi lại em sau một lúc cân nhắc, giọng tôi có chút run rẩy.



Lần này đến lượt em im lặng. Chúng tôi im lặng cho đến lúc đến nơi, quán đóng cửa, cả bọn giải tán. Sau một hồi tranh cãi giữa Đức với Sơn thì tôi vẫn là người chở em về.



Lần này vẫn im lặng, nhưng tôi có cảm giác điều gì đó sắp xảy ra, trái tim của tôi có lẽ đang lỗi nhịp.



- Anh nói tiếp đi - em lại mở lời, không biết em muốn nghe điều gì đây...



- Em có người yêu rồi đúng không?



- Nếu em nói chưa có, anh nghĩ sao?



- Không tin chứ sao. - hình như tôi hơi phũ =)), em im lặng một lúc lại hỏi tiếp:



- Tại sao anh lại biết?



- Anh lùng sục fb của em nhiều mà ~.~ - tôi còn nhớ lúc đó có cảm giác hơi ngại, giống như mình làm sai chuyện gì vậy. Em thì im lặng, không biết đang nghĩ gì...



Có lẽ tôi muốn phá tan cái không khí im lặng này, tôi không muốn lần gặp cuối cùng này của tôi với em kết thúc như vậy áy lúc tôi đang cố điều chỉnh lại tâm trạng thì em lại hỏi tôi:



- Tại sao anh lại có cảm tình với em chứ không phải một cô gái khác? - em nói nhanh và rành mạch, giống như nó đã được chuẩn bị từ lâu rồi vậy...



- Em còn nhớ lúc nhà hàng tổ chức cho nhân viên đi chơi không?



- Ừm



- Lần đó anh có nói là anh thích giọng nói của em. - tôi vẫn nhớ lần đó em ngồi sau xe tôi líu lo cả buổi.



- Tại sao anh lại thích?



- Anh thấy nó ngọt ngào mà nhẹ nhàng.



- Thế anh chỉ thích giọng nói của em thôi à? - hình như em đang cố ý đùa tôi.



- Anh không biết, nhưng anh thấy thích con người em từ lúc mới gặp, anh thấy em đáng yêu, có chút con nít...



- Khi nào anh trở lại Đà Nẵng?



- Anh không biết, nếu đợt này về không trúng nghĩa vụ thì ra tết có khi anh vào lại, còn nếu trúng thì 2 năm, anh cũng chịu.



Em không nói gì, cũng sắp đến nhà em rồi, em chỉ bảo tôi dừng lại trước kiệt nhà em. Hình như em không muốn cho người nhà biết tôi chở em về thì phải :(. Tôi dừng xe tại chỗ mà tôi vẫn thường để em lại, cách nhà em chừng 50m. Em xuống xe, ngay lúc tôi tưởng em sẽ nói lời tạm biệt thì em lại làm tôi ngơ ra tập 2:



- Anh còn gì muốn nói với em nữa không? - Em lúc này đang cầm cái mũ bảo hiểm đưa qua đưa lại, có lẽ đang bối rối đây. Còn tôi, đang run lên ấy chứ, nói hay không nói? Nói ra thì cũng không có kết quả, mà không nói thì sau này lại tiếc, nghĩ lên nghĩ xuống, và có lẽ tình cảm dồn nén thời gian qua, tôi đã bày tỏ tình cảm của mình với em:



- Anh thích em. - tôi nói rõ ràng từng chữ và đợi phản ứng của em, sau khi nghe xong câu đó, tôi thấy em mỉm cười, em hơi cúi mặt xuống, có lẽ để che giấu cái gì đó ^^. Em hỏi:



- Đây là lần đầu anh nói điều này với một người con gái à?



- Ừa - em lại im lặng, tôi không nghĩ em lại đoán được, đây đúng là lần đầu tiên tôi bày tỏ tình cảm của mình, nói được câu "anh thích em" với một cô gái.



- Tại sao anh không nói sớm hơn?



- Em có nhớ lần anh dẫn em với anh V đi ăn không?



- Có anh.



- Lần đó anh phát hiện em có người yêu. – tôi nói có phần ấp úng vì có chuyện không đẹp lắm sắp được tôi kể ra.



- Anh nhìn điện thoại em à? - tôi lại bất ngờ thêm lần nữa, nhớ lại về buổi đi chơi đó. Chính em rủ tôi đi, cũng bảo đi 2 đứa, tôi cứ nghĩ hôm đó sẽ làm quan hệ của chúng tôi tiến thêm bước nữa. Mặc dù có lòi thêm 1 người nhưng tôi vẫn không quan tâm lắm, lần đó vô tình tôi lướt qua màn hình điện thoại em, hình như em đang nhắn tin với ai đó. Còn nhớ lúc đó tim tôi như bị ai đó nện cho một cái vậy, đau lắm...



Một loạt tin nhắn đến, chỉ cần nhìn qua là tôi có thể đoán được rồi, ở giữ đống ký tự gì đó là 2 chữ mà chỉ cần nó đã nói lên tất cả. Tôi đơ người mất gần 2s, sau đó quay mặt đi, em mỉm cười cất điện thoại đi và có nhìn lướt qua tôi, sau này nghĩ lại tôi cảm thấy đoạn này cứ như em cố ý cho tôi thấy vậy. Trước kia cũng có lần tôi cầm điện thoại em rồi, nhưng cũng chả tò mò gì. Bao nhiêu suy nghĩ lóe lên trong đầu tôi, thất vọng cũng có, buồn cũng có, tiếc nuối,... Nhưng tôi cố gắng để không biểu hiện gì ra ngoài, chúng tôi kết thúc một buổi đi chơi vui vẻ.



Tối hôm đó tôi suy nghĩ rất nhiều, để rồi đưa ra một quyết định, mặc dù tôi cảm thấy nó có chút “ngớ ngẩn”, nhưng tôi vẫn quyết vậy, đó là tránh tiếp xúc với em. Khoảng thời gian tháng 11, tôi ít nói chuyện với em hơn, không như hồi trước mỗi khi em ngang qua tôi thường đùa 1 2 câu. Tuy thế nhưng tình cảm trong tôi nó vẫn không mất đi, hằng ngày gặp em đó, giúp đỡ khi em cần, thấy em vẫn vui vẻ, dần trong tôi không còn nghĩ về những chuyện buồn đó nữa. Tôi chỉ đơn giản nghĩ em là một đoạn ký ức, một đoạn tình cảm trong đời tôi, vậy là đủ rồi.



Quay lại lúc đó, khi em hỏi tôi câu đó, ngay lập tức tôi nghĩ chuyện lúc trước là em cố ý, em muốn tôi từ bỏ. Nhưng rồi tôi cũng không chắc chắn, dù sao tôi vẫn thấy sợ trực giác của phụ nữ =)). Tôi trả lời em một cách ngập ngừng:



- Lúc đó anh vô tình thấy trong điện thoại em, trong tin nhắn có chữ Ck, là anh biết rồi. – nói xong tôi cố tránh ánh mắt của em. Em cười, có lẽ em thấy tôi ngớ ngẩn quá thì phải ~.~



** mất một đoạn, vì đoạn sau làm tôi khá là bất ngờ, kể cả những việc sau đây tôi cũng không nhớ rõ thứ tự nữa :D**



- Anh làm em cảm thấy có lỗi quá... – em làm tôi khá bất ngờ.



- Em có lỗi gì, chỉ tại anh không biết tận dụng thời cơ thôi... – lại im lặng, lúc này tôi thực sự ghét nó, trong thôi như có cái gì đó thôi thúc vậy, nó cứ thế dâng lên làm tôi không thể khống chế được, tôi nói với em một câu mà mình cũng không ngờ đến:



- Cho anh ôm cái nha. – em cúi đầu bước đến với tiếng “ừm” nhỏ. Tôi vòng tay ôm em sát vào người mình, cứ như một giấc mơ vậy, tôi ước gì nó là vĩnh hằng, là mãi mãi. Cảm nhận được hơi ấm từ em, cảm nhận được vòng tay của em đang ôm tôi, tôi vui lắm. Tôi là người chủ động bỏ em ra, mặc dù tôi muốn ôm em nữa ^^.



- Em có suy nghĩ gì về anh không? – tôi hỏi mà có chút mong chờ.



- Hơn bạn một chút... – câu trả lời của em làm tôi khá buồn, hơn bạn, chung quy vẫn là bạn...nhưng mà điều em đã làm cho tôi như vậy là đủ rồi, không nên đòi hỏi quá nhiều.



Tôi nhìn em thật kỹ, như muốn ghi nhớ những giây phút cuối cùng này, hình bóng em vào sâu trong tim.



- Tạm biệt em nhé.



- Cũng gần 12h rồi, thôi anh về đi. – em nhìn thoáng qua đồng hồ nói. - Em vào trước đi. – Em thoáng nhìn tôi rồi bước đi, tôi cũng không nhớ mình có chờ em đi khuất chưa, cũng chả nhớ mình về phòng thế nào... Tôi không nhớ, không muốn nhớ gì nữa,.. liệu chuyện này đến đây có phải kết thúc rồi không?

Tuesday, May 6, 2014

Lấy tất cả Resource trong drawable của Android


Đoạn mã sau cung cấp cách để lấy ra tất cả resource trong drawable của android.
final R.drawable drawableResources = new R.drawable();
final Class<R.drawable> c = R.drawable.class;
final Field[] fields = c.getDeclaredFields();

for (int i = 0, max = fields.length; i < max; i++) {
    final int resourceId;
    try {
        resourceId = fields[i].getInt(drawableResources);
    } catch (Exception e) {
        continue;
    }
    /* make use of resourceId for accessing Drawables here */
}

Wednesday, April 23, 2014

Đặc điểm của Vector, ArrayList trong Java


ArrayList và Vector trong java

Các lớp Vector và ArrayList được triển khai xây dựng dựa trên mảng Object[] dùng để lưu trữ các phần tử. Việc truy xuất đến các phần tử cũng đơn giản thông qua việc truy xuất theo chỉ mục(index) như trong mảng.

Đặc điểm của Vector và ArrayList là chúng ta có thể thêm những phần tử mới vào mà không gặp trở ngại về “sức chứa” như Array thông thường là phải định rõ độ lớn(chiều dài) của mảng.

Vậy, chúng “giãn nở” như thế nào ? Như đã nói ở trên Vector & ArrayList được xây dựng dựa trên mảng các Object[]. Mảng này có thể lớn hơn độ lớn các phần tử cấu thành lên Vector/ArrayList object nhằm giữ khả năng có thể thêm phần tử mới khi cần. Khi tận dụng hết khả năng sức chứa của mảng này thì Vector/ArrayList object phải tạo ra một mảng mới có độ lớn (sức chứa) hơn mảng cũ và những phần tử trước đó sẽ được sao chép chuyển sang mảng mới này. Về độ lớn của mảng mới tạo ra so với mảng cũ sẽ tùy thuộc vào các version SDK mà dao động trong khoảng 50 – 100 (%). 2 đoạn code dưới đây là một minh chứng :
public void ensureCapacity(int minCapacity) {
    int oldCapacity = elementData.length;
    if (minCapacity > oldCapacity) {
        Object oldData[] = elementData;
        int newCapacity = (oldCapacity * 3) / 2 + 1;
        if (newCapacity < minCapacity) newCapacity = minCapacity;
        // minCapacity is usually close to size, so this is a win:
        elementData = Arrays.copyOf(elementData, newCapacity);
    }
}

public void ensureCapacity(int minCapacity) {
    int oldCapacity = elementData.length;
    if (minCapacity > oldCapacity) {
        Object oldData[] = elementData;
        int newCapacity = Math.max(oldCapacity * 2, minCapacity);
        elementData = new Object[newCapacity];
        System.arrayscopy(oldData, 0, elementData, 0, size);
    }
}


Tính hiệu quả khi chèn phần tử mới vào Vector & ArrayList :
- Chèn vào vị trí index = 0 sẽ cho tính hiệu quả kém nhất (the worst performance) vì tất cả những phần tử trước đó sẽ phải dịch chuyển lên trên.
- Chèn vào vị trí sau phần tử đứng cuối cùng sẽ cho hiệu quả tốt nhât (the best performance) vì các phần tử trước đó vẫn giữ nguyên vị trí không có một sự xáo trộn nào xảy ra.
- Từ đây ta cũng có thể hiển được tính hiệu quả khi chèn vào vị trí bất kì nào khác 2 vị trí trên.


Điểm khác biệt chính giữa Vector và ArrayList là sử dụng cơ chế đồng bộ (synchronization). Ngoài 2 methods sử dụng serialize thì ArrayList không có một methods nào được đồng bộ hóa. Ngược lại với Vector, hầu hết các phương thức (method) của Vector được đồng bộ hóa. Vì thế Vector là thread-safe còn ArrayList thì không. Trong những ứng dụng đa luồng thì việc sử dụng Vector là hợp lý hơn vì tính đồng bộ của nó thích hợp cho việc giải quyết nhiều tương tác trong một thời điểm. Còn các phương thức của ArrayList sẽ cho tốc độ xử lý nhanh hơn trong trường hợp đơn giản không đòi hỏi xử lý nhiều tương tác trong một thời điểm. Sự cách biệt về tốc độ xử lý giữa 2 class này càng ngày càng được thu hẹp lại với những version JVMs (máy ảo Java) mới nhất.
(Sưu tầm)

Saturday, March 15, 2014

OpenGL ES 2.0 trên android - Trả lời sự kiện chạm

Trả lời sự kiện chạm

Làm cho đối tượng di chuyển theo một chương trình định sẵn như hình tam giác xoay rất hữu ích để có được một số sự chú ý, nhưng những gì nếu bạn muốn có người dùng tương tác với đồ họa OpenGL ES của bạn? Chìa khóa để làm ứng dụng cảm ứng OpenGL ES của bạn tương tác được mở rộng thực hiện của bạn GLSurfaceView để ghi đè lên onTouchEvent () để lắng nghe cho các sự kiện liên lạc.
Bài học này cho bạn thấy làm thế nào để lắng nghe cho các sự kiện liên lạc cho phép người dùng xoay một đối tượng OpenGL ES.

1.1.   Cài đặt một Touch Listener

Để làm cho ứng dụng OpenGL ES phản ứng với các sự kiện chạm vào, bạn phải thực hiện onTouchEvent() trong lớp GLSurfaceView của bạn. Việc thực hiện ví dụ dưới đây cho thấy làm thế nào để lắng nghe cho các sự kiện MotionEvent.ACTION_MOVE và dịch chúng vào một góc quay cho một shape.
@Override

public boolean onTouchEvent(MotionEvent e) {

    // MotionEvent reports input details from the touch screen
    // and other input controls. In this case, you are only
    // interested in events where the touch position changed.

    float x = e.getX();
    float y = e.getY();

    switch (e.getAction()) {
        case MotionEvent.ACTION_MOVE:

            float dx = x - mPreviousX;
            float dy = y - mPreviousY;

            // reverse direction of rotation above the mid-line
            if (y > getHeight() / 2) {
              dx = dx * -1 ;
            }

            // reverse direction of rotation to left of the mid-line
            if (x < getWidth() / 2) {
              dy = dy * -1 ;
            }

            mRenderer.setAngle(
                    mRenderer.getAngle() +
                    ((dx + dy) * TOUCH_SCALE_FACTOR);  // = 180.0f / 320
            requestRender();
    }

    mPreviousX = x;
    mPreviousY = y;
    return true;
}
Chú ý rằng sau khi tính toán góc quay, phương pháp này gọi requestRender () để cho các renderer rằng đó là thời gian để làm cho khung. Phương pháp này là hiệu quả nhất trong ví dụ này vì khung không cần phải được vẽ lại, trừ khi có một sự thay đổi trong vòng quay. Tuy nhiên, nó không có bất kỳ tác động hiệu quả trừ khi bạn cũng yêu cầu các renderer chỉ vẽ lại khi dữ liệu thay đổi bằng cách sử dụng hàm setRenderMode(), do đó hãy chắc chắn rằng dòng này là không chú thích trong renderer:
public MyGLSurfaceView(Context context) {

    ...
    // Render the view only when there is a change in the drawing data
    setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);

}

1.2.   Phơi bày các góc quay

Mã ví dụ trên yêu cầu bạn tiếp xúc với các góc quay thông qua renderer của bạn bằng cách thêm một thành viên public. Kể từ khi mã renderer đang chạy trên một thread khác từ phía giao diện người dùng chính thread của ứng dụng của bạn, bạn phải khai báo biến công cộng này là volatile. Đây là mã để làm điều đó:
public class MyGLRenderer implements GLSurfaceView.Renderer {

    ...
    public volatile float mAngle;

1.3.   Áp dụng phép xoay

Áp dụng phép xoay được tạo ra bởi đầu vào cảm ứng, chú thích ra các mã để tạo một góc và thêm mAngle, trong đó có các đầu vào tạo ra góc cảm ứng:
public void onDrawFrame(GL10 gl) {

    ...
    float[] scratch = new float[16];

    // Create a rotation for the triangle
    // long time = SystemClock.uptimeMillis() % 4000L;
    // float angle = 0.090f * ((int) time);
    Matrix.setRotateM(mRotationMatrix, 0, mAngle, 0, 0, -1.0f);

    // Combine the rotation matrix with the projection and camera view
    // Note that the mMVPMatrix factor *must be first* in order
    // for the matrix multiplication product to be correct.
    Matrix.multiplyMM(scratch, 0, mMVPMatrix, 0, mRotationMatrix, 0);

    // Draw triangle
    mTriangle.draw(scratch);
}
Khi bạn đã hoàn thành các bước mô tả ở trên, chạy chương trình và kéo tay của bạn trên màn hình để xoay hình tam giác:

Figure 1. Triangle being rotated with touch input (circle shows touch location).