Drawable Resources Level List – Ảnh theo số

Vị trí file: res/drawable/filename.xml

Lớp sử dụng: LevelListDrawable

Gọi sử dụng:

  • In Java: R.drawable.filename
  • In XML: @[package:]drawable/filename

Cú pháp:

<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/drawable_resource" android:maxLevel="integer" 
android:minLevel="integer" />
</level-list>

Thành phần:

  • maxLevel, minLevel – Giới hạn Level mỗi Drawable

Sử dụng:

Tạo file xml:

<!-- language: lang-xml -->
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/status_off" 
android:maxLevel="0" />
    <item android:drawable="@drawable/status_on" 
android:maxLevel="1" />
</level-list>

đặt background View, đổi Level bằng hàm setLevel() hay setImageLevel()

Drawable Resources Layer List – Chèn Nhiều hình ảnh, thành 1 ảnh

Vị trí file: res/drawable/filename.xml

Hàm liên quan: LayerDrawable

Gọi xử dụng:

In Java: R.drawable.filename
In XML: @[package:]drawable/filename

Cú Pháp:

<!-- language: lang-xml -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@[package:]drawable/drawable_resource" android:id="@[+][package:]id/resource_name" android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension" />
</layer-list>

Mẹo: Canh giữa ảnh như sau

<!-- language: lang-xml -->
<item>
  <bitmap android:src="@drawable/image" android:gravity="center" />
</item>

Áp dụng:

Tạo File res/drawable/layers.xml:

<!-- language: lang-xml -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <bitmap android:src="@drawable/android_red" android:gravity="center" />
    </item>
    <item android:top="10dp" android:left="10dp">
      <bitmap android:src="@drawable/android_green" android:gravity="center" />
    </item>
    <item android:top="20dp" android:left="20dp">
      <bitmap android:src="@drawable/android_blue" android:gravity="center" />
    </item>
</layer-list>

Áp dụng vào view:

<!-- language: lang-xml -->
<ImageView 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:src="@drawable/layers" />

 


Nguồn: http://developer.android.com/guide/topics/resources/drawable-resource.html#LayerList

Drawable Resources Nine-Patch File – Ảnh background, bọc đối tượng – Ảnh co giãn theo nội dung

Ảnh co giãn theo nội dung (.9.png)

Hàm liên quan: NinePatchDrawable

Áp dụng:

&lt;!-- language: lang-xml --&gt;
&lt;Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/myninepatch" /&gt;

XML Nine-Patch

Cú pháp:

&lt;!-- language: lang-xml --&gt;
&lt;nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@[package:]drawable/drawable_resource" android:dither=["true" | "false"] /&gt;


Nguồn: http://developer.android.com/guide/topics/resources/drawable-resource.html#NinePatch

Drawable Resources – Thư mục chứa ảnh, XML Ảnh, tạo ảnh

Thự mục chứa ảnh.

Vị trí file: res/drawable/filename.png (.png, .jpg, or .gif)

Gọi sử dụng:

In Java: R.drawable.filename
In XML: @[package:]drawable/filename

Có thể chứa các loại ảnh sau:

Bitmap File

Chứa file ảnh thuần (png, jpg, gif)

Hàm liên quan: BitmapDrawable

Nine-Patch File

Ảnh co giãn theo nội dung (.9.png)

Hàm liên quan: NinePatchDrawable

Layer List

Chèn Nhiều hình ảnh, thành 1 ảnh

Hàm liên quan: LayerDrawable

State List

Ảnh theo trạng thái (hover, press)

Hàm liên quan: StateListDrawable

Level List

Ảnh theo số (ví dụ: set số 1 => ảnh 1, số 2 => ảnh 2)

Hàm liên quan: LevelListDrawable

Transition Drawable

Đổi 2 ảnh qua lại (kiểu cross-fade mờ dần)

Hàm: TransitionDrawable

Inset Drawable

Định nghĩa ảnh ở trong ảnh. Dùng khi dùng ảnh nền mà ảnh thật nhỏ hơn ảnh nền (làm ảnh to ra thêm tí :D).

Clip Drawable

Định nghĩa ảnh, là 1 phần của ảnh khác (bị cắt ra)

Hàm: ClipDrawable

Scale Drawable

Định nghĩa ảnh, đổi size ảnh khác dựa vào giá trị level.

Hàm: ScaleDrawable

Shape Drawable

Tạo ảnh qua các đường = xml, màu, gradients.

Hàm: ShapeDrawable


Ngồn: http://developer.android.com/guide/topics/resources/drawable-resource.html#Transition

Drawable Resources Stage list – Đổi màu, ảnh theo trạng thái hover, click

Vị trí file:

  • res/color/filename.xml –
  • res/drawable/filename.xml

Lớp sử dụng: ColorStateList

Gọi sử dụng:

In Java: R.color.filename
In XML: @[package:]color/filename

Cú pháp:

<!-- language: lang-xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
 <item android:color="hex_color" android:drawable="@drawable/button_pressed" 
android:state_pressed=["true" | "false"] 
android:state_focused=["true" | "false"] 
android:state_selected=["true" | "false"] 
android:state_checkable=["true" | "false"] 
android:state_checked=["true" | "false"] 
android:state_enabled=["true" | "false"] 
android:state_window_focused=["true" | "false"] />
</selector>

Thành phần:

  • android:drawable – Ảnh đổi
  • android:color – màu đổi

Sử dụng:

File: res/color/button_text.xml

<!-- language: lang-xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- pressed -->
 <item android:state_pressed="true" android:color="#ffff0000"/> 
<!-- focused -->
 <item android:state_focused="true" android:color="#ff0000ff"/> 
 <item android:color="#ff000000"/> <!-- default -->
</selector>

Sử dụng:

<Button android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:text="@string/button_text" 
android:textColor="@color/button_text" />

Nguồn: http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

Android Frame Animation – Hiệu Ứng theo khung hình

Vị trí file: res/drawable/filename.xml

Lớp sử dụng: AnimationDrawable

Gọi sử dụng:

In Java: R.drawable.filename
In XML: @[package:]drawable.filename

Cú pháp:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot=["true" | "false"] >
 <item android:drawable="@[package:]drawable/drawable_resource_name" android:duration="integer" />
</animation-list/>

Thuộc tính:

  • android:oneshot: chạy 1 lần
    • true – chạy 1 lần
    • false – chạy hình nhiều lần
  • android:duration – thời gian của hình

Gọi trong code:

file xml – res/anim/rocket.xml:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
<item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
<item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list/> 

Sử dụng

 
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); 
rocketImage.setBackgroundResource(R.drawable.rocket_thrust); 

rocketAnimation = (AnimationDrawable) rocketImage.getBackground(); 
rocketAnimation.start();

Trích:

http://developer.android.com/guide/topics/resources/animation-resource.html

Android – Animator – Hiệu Ứng – Chuyển hoạt nhiều hơn

Khác biệt Animation:

  • Animators là phiên bản sau của Animations (API 2.3)
  • Animators thay đổi, thay đổi theo Coordinates (Vị trí)

Vị trí File XML: res/animator/filename.xml

COMPILED RESOURCE DATATYPE – Loại Trong Resource: ValueAnimator, ObjectAnimator, or AnimatorSet

RESOURCE REFERENCE:

In Java: R.animator.filename
In XML: @[package:]animator/filename

Cú pháp:


<set
android:ordering=["together" | "sequentially"]>

<objectAnimator
android:propertyName="string"
android:duration="int"
android:valueFrom="float | int | color"
android:valueTo="float | int | color"
android:startOffset="int"
android:repeatCount="int"
android:repeatMode=["repeat" | "reverse"]
android:valueType=["intType" | "floatType"]/>

<animator
android:duration="int"
android:valueFrom="float | int | color"
android:valueTo="float | int | color"
android:startOffset="int"
android:repeatCount="int"
android:repeatMode=["repeat" | "reverse"]
android:valueType=["intType" | "floatType"]/>

<set>
...
</set>
</set>

Thuộc tính:

  • android:propertyName – tên thuộc tính (Required) example: “alpha”, “backgroundColor”, objectAnimator. Gọi trong Java: setTarget()
  • android:valueTo – (Required) 
  • android:valueFrom
  • android:duration
  • android:startOffset – Thời gian delays sau khi gọi start()
  • android:repeatCount – Lần lặp
    • -1 = vô hạn,
    • 0 = không lặp
  • android:repeatMode – Kiểu lặp
    • “reverse” = có nghịch đảo
    • “repeat” = lặp mỗi lần
  • android:valueType – Từ khóa
    • intType – thông số animated là kiểu Integers
    • floatType (default)

Gọi trong Java Code:

// Tạo AnimatorSet từ Animator
AnimatorSet anim = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.test_animator);
// Đặt đối tượng
anim.setTarget(mView);
// bắt đầu
anim.start();

Android – Animation – Hiệu ứng – Chuyển hoạt

Vị trí File XML:

res/anim/filename.xml

Resource reference (tên gọi):

In Java: R.anim.filename
In XML: @[package:]anim/filename

Thuộc tính chung:

  • android:fillAfter=”true” – Giữ trạng thái sau khi chạy (trong <set>)
  • android:fillBefore=”true” – Giữ trạng thái trước khi chạy
  • android:duration – Thời gian chạy
  • android:startOffset – Thời gian chờ trước khi chạy
  • android:repeatMode – Chế độ lặp
  • android:repeatCount – Lần lặp
  • infinite – lặp vô hạn
  • android:interpolator – (nội suy) kiểu chạy
    • @android:anim/accelerate_decelerate_interpolator – Tăng tốc, giảm tốc
    • @android:anim/accelerate_interpolator – Tăng tốc
    • @android:anim/anticipate_interpolator – (Biết trước) quay lên vị trí đầu, chạy tiếp
    • @android:anim/anticipate_overshoot_interpolator – (Biết trước_Vượt qua) quay lên vị trí đầu, vượt qua vị trí cuối
    • @android:anim/bounce_interpolator – (nẩy lên) nẩy lên ở vị trí cuối
    • @android:anim/cycle_interpolator – (Vòng tròn) chạy qua lại đầu, cuối
    • @android:anim/decelerate_interpolator – (Giảm tốc) Chậm dần
    • @android:anim/linear_interpolator – (Thẳng) đều đều
    • @android:anim/overshoot_interpolator – (Vượt qua) vượt qua vị trí cuối
    • @android:anim/fade_in
    • @android:anim/fade_out
    • @android:anim/slide_in_left – Chạy từ trái qua
    • @android:anim/slide_out_right – Chạy từ phải rồi mất

Alpha Animation (Độ trong suốt):


<alpha
android:duration="3000"

android:fromAlpha="0"
android:toAlpha="1" />

Rotate Animation (Độ xoay):


<rotate
android:duration="3000"

android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" />

</div>

Scale Animation (Độ co dãn):


<scale
android:duration="3000"

android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="2"
android:toYScale="2" />

Translate Animation (Độ đi chuyển):


</div>
<translate
android:duration="3000"

android:fromXDelta="-50%"
android:fromYDelta="-50%"
android:toXDelta="0%"
android:toYDelta="0%" />

Set/Batch Animation (nhiều hiệu ứng):


<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/slide_out_right">

<alpha
android:duration="3000"

android:fromAlpha="0"
android:toAlpha="1" />

<rotate
android:duration="3000"

android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" />

<scale
android:duration="3000"

android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="2"
android:toYScale="2" />

<translate
android:duration="3000"

android:fromXDelta="-50%"
android:fromYDelta="-50%"
android:toXDelta="0%"
android:toYDelta="0%" />

</set>

Gọi trong Code:

// Load hiệu ứng
final Animation amin = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_out);
// Sự kiệnamin.setAnimationListener(new Animation.AnimationListener() {
    @Override    public void onAnimationStart(Animation animation) {

    }

    @Override    public void onAnimationEnd(Animation animation) {

    }

    @Override    public void onAnimationRepeat(Animation animation) {

    }
});
// Chạy hiệu ứng
txtMessage.startAnimation(amin);

Trích:

http://www.androidhive.info/2013/06/android-working-with-xml-animations/
http://developer.android.com/guide/topics/resources/animation-resource.html

Android Studio – Mẹo và Thủ thuật – Tips and Cheaps

Mở nhanh

Mở Class: Ctrl + N
Mở File: Ctrl + Shift + N
Mở Task: Alt + Shift + N

Di chuyển

Đến vị trí con trỏ cũ: Ctrl + Alt + Left/Right (làm gì xong về chỗ cũ)
Đến vị trí chỉnh sửa cũ: Ctrl + Shift + backspace
Android Studio LogoĐến biến khai báo: Ctrl + B = Ctrl + Click

Highlight Code: ctrl+shift+f7 (Hủy =esc)

Android Studio Logo

Chuyển con trỏ đến Methods, Inner Classes khác: alt+up/down

Android Studio Logo

Mở File Structure nhanh: Ctrl + F12 

Android Studio Logo

Xem cấp bậc Method (The Call Hierarchy Popup): ctrl+alt+h

Android Studio Logo

 Xem định nghĩa nhanh: ctrl+shift+iAndroid Studio Logo

Đóng hiện Nhóm code: ctrl+shift+plus/minus

Android Studio Logo

Bookmarks!

Toggle Bookmark: F11

Toggle Bookmark With Mnemonic: ctrl+f11

Nếu bookmark có số: ctrl+number

Show Bookmarks shift+f11

Android Studio Logo

Tìm Hành động trong menu: ctrl+shift+a

Android Studio Logo

Chuyển dòng lên xuống: alt+shift+up/down

Android Studio Logo

Xóa dòng: ctrl+y

Android Studio Logo

trích: http://www.developerphil.com/android-studio-tips-of-the-day-roundup-1/

Nhân đôi dòng (Duplicate): ctrl+d

Android Studio Logo

Tăng, Giảm vùng chọn: ctrl+w / ctrl+shift+w

Android Studio Logo

Rào (surround) hàm (thêm if, …): ctrl+alt+t

Android Studio Logo

Mở File gần đây: Ctrl + E, Ctrl + Tab

Android Studio Logo

Di chuyển Method: ctrl+shift+up/down

Android Studio Logo

  Hoàn thành Method, code nhanh, khỏi chuyển xuống cuối: ctrl+shift+enter

 Android Studio Logo

Kết hợp dòng: ctrl+shift+j

 Android Studio Logo

Chọn Nhanh vị trí trong (Structure, file…, bar): alt+f1

 Android Studio Logo

Unwrap/Remove: ctrl+shift+delete

 Android Studio Logo

 Toggle Breakpoints: Ctrl+F8

 Expand Shrink Selection

Đổi biến khi Debug: Right Click Breakpoint

Expand Shrink Selection

Tạo Log Debug: Nhấp Phải Breakpoint

Logging Breakpoints

Tạo Breakpoint Tạm: Ctrl+Alt+Shift+F8 = Alt+Left Click in the left gutter

Temporary Breakpoints

 Ẩn Breakpoint: Alt+Left Click on an existing breakpoint in the left gutter

Expand Shrink Selection

 Đính kèm hàm khi Debug: Build / Attach to Android Process

 Attach Debugger

Xem Biến nhanh qua cửa sổ (Evaluate Expression): Alt+F8

 Evaluate Expression

Xem giá trị biến (Inspect Variable): Alt+Left Click biến

Inspect Variable

Mark Object: right-click and select “Mark Object”

Mark Object

 Phân tích dữ liệu tại chỗ: Menu: Analyze → Analyze Data Flow to Here

Analyze Data flow to Here

Chọn nhiều, thay đổi nhiều dòng cùng lúc: Alt+J

Sublime Text Multi Selection

Chọn nhiều Cột: Alt+MouseDrag = Shift+Alt+Insert

Column Selection

Postfix Completion:

gợi ý từ khóa:

  • .for (for a foreach)
  • .format (wraps a string in String.format())
  • .cast (wraps a statement in a type cast)

 Postfix Completion

So sánh với Clipboard: right-click the selection and select Compare With Clipboard

Find action: compare with clipboard

Compare With Clipboard

 VCS Operation Popup: Alt+`

VCS Operations Popup

Compare With Branch (Git):

  • Menu (for git): VCS -> Git -> Compare With Branch
  • Find Actions: Compare With Branch
Compare With Branch (Git)

Trích: http://www.developerphil.com/android-studio-tips-of-the-day-roundup-4/

Enter vs Tab for Code Completion: enter or tab

Enter vs Tab for Code Completion

  • Return and keep panel open: Escape
  • Close panel and Return: Shift+Escape

Return to the Editor

Jump to Last Tool Window (F12)

Jump to Last Tool Window

Hide All Panels (Ẩn mọi Panels): Ctrl+Shift+F12

Hide All Panels

 Thông tin tham số trong Hàm (Parameter Info): Ctrl+P

 Parameter Info

Đổi Tab nhanh: Ctrl+Tab

The Switcher

 Thông tin hàm: Ctrl+Shift+Q, Ctrl + Q

Context Info

Trích: http://www.developerphil.com/android-studio-tips-of-the-day-roundup-5/

Refactor This:  Ctrl+Alt+Shift+T

 Refactor This

Mở file Liên quan (Related File): Ctrl+Cmd+Up

Related File

Extract Variable: Ctrl+Alt+V

Extract Variable

Extract Parameter: Ctrl+Alt+P

  Extract Parameter

Extract Method: Ctrl+Alt+M

 Extract Method

Gom dòng (Inline): Ctrl+Alt+M

Inline

Đổi tên:  Shift+F6

Rename

Pull Up / Push Down: Ctrl+Alt+Shift+T and choose pull members up / push members down

 Pull Up / Push Down

Trích: http://www.developerphil.com/android-studio-tips-of-the-day-roundup-6/

Phần mềm miễn phí Cần thiết

Chỉnh sửa hình ảnh

GIMP: Chỉnh ảnh thay thế Photoshop

Link: http://www.gimp.org/

Inkscape: Chỉnh Vector thay thế CorelDraw, Ai

Link: https://inkscape.org/en/

Inkscape là phần mềm mã nguồn mở cho xử lý đồ họa vec tơ. Mục đích
phát triển của dự án Inkscape là để tạo ra một phần mềm có tính năng xử
lý đồ họa véc tơ tốt đồng thời phù hợp với chuẩn XML, SVG và CSS

FreeCommander: Duyệt File

Free Audio Converter: Convert Video, Audio

Blender: Chỉnh Sửa 3D file (hay bị lỗi, góc nhìn không đẹp)

EagleGet: Tải nhanh hơn

Picasa: Xem ảnh nhanh