2011-11-10

在 Android 使用配合螢幕尺寸縮放的背景圖(9-Patch)

Android SDK 內建一個製作 9-Patch 圖片的小工具,詳細作法可以參考 Ken Yang 筆記


9-Patch 圖片的命名規則為「檔名.9.png」,其中只有「.9」是強制的,與一般圖片一樣是放到 /res/drawable 下。


要小心,不可以同時有 bg.9.png 與 bg.png,這樣是違反 Android Resource 命名規則的,因為「.9」並不計入識別字元,僅供 Android 參考使用。

重點結束,程式沒有不一樣的地方。

NinePatchActivity
public class NinePatchActivity extends Activity implements OnClickListener {

    private static final String TAG = "NinePatchActivity";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.findViewById(R.id.ninePatchBtn).setOnClickListener(this);
        this.findViewById(R.id.normalBtn).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Log.d(TAG, "click " + v.getId() + "...");
        LinearLayout main = (LinearLayout) this.findViewById(R.id.main);
        TextView tv = (TextView) this.findViewById(R.id.tv);
        switch (v.getId()) {
        case R.id.ninePatchBtn:
            main.setBackgroundResource(R.drawable.bg);
            tv.setText("9-Patch");
            break;
        case R.id.normalBtn:
            main.setBackgroundResource(R.drawable.bg_n);
            tv.setText("Normal");
            break;
        }
    }
}
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
    <LinearLayout 
      android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:gravity="center"
      >
        <Button  
            android:id="@+id/normalBtn"
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="Normal"
          />
        <Button  
            android:id="@+id/ninePatchBtn"
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="9-Patch"
          />
    </LinearLayout>
    <LinearLayout 
        android:id="@+id/main"
      android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      >
        <TextView  
            android:id="@+id/tv"
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:textColor="#000000"
          />
    </LinearLayout>
</LinearLayout>
使用一般的圖片:


使用 9-Patch 圖片:



相關文章

沒有留言:

張貼留言