Thiết kế giao diện hình nền cho Android

0
733

Để tạo màn hình nền cho thiết bị chạy hệ điều hành Android chúng ta cần tạo tập tin XML, các thuộc tính, hình ảnh hiển thị trong màn hình của bạn sẽ được mô tả tại file XML này. Ngoài ra các bạn có thể tạo ra các service mở rộng với lớp WallpaperService. Đây là lớp cơ sở cho tất cả các hình nền trong hệ thống của bạn. Các bạn sẽ phải thực hiện các phương tháp onCreateEngine () để trả về đối tượng của loại android.service.wallpaper.WallpaperService.Engine.

Mình khuyên các bạn nên nhập vào trong tập tin AndroidManifest.xml các ứng dụng của bạn có sử dụng tính năng android.software.live_wallpaper, nó sẽ chặn các tính năng không được hỗ trợ khi tạo ứng dụng màn hình.

21361590365

Bạn có thể sử dụng Intent để thiết lập hình nền.

// Button to set the Wallpaper
public void onClick(View view) {
Intent intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);
intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,
new ComponentName(this, MyWallpaperService.class));
startActivity(intent);
}

Ví dụ thiết lập màn hình nền đơn giản.

Bây giờ mình sẽ hướng dẫn các bạn tạo một dự án thiết lập màn hình nền đơn giản de.vogella.android.wallpaper

Lập trình android tạo thư mục mới với file mywallpaper.xml 

<? xml version = “1.0” encoding = “UTF-8” ?>
<wallpaper
xmlns:android= “http://schemas.android.com/apk/res/android”
android:thumbnail= “@drawable/icon”
android:description= “@string/wallpaper_description”
android:settingsActivity= “de.vogella.android.wallpaper.MyPreferencesActivity” />

Xác định dịch vụ MyWallpaperService

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”de.vogella.android.wallpaper”
android:versionCode=”1″
android:versionName=”1.0″ >

<application
android:icon=”@drawable/icon”
android:label=”@string/app_name” >
<service
android:name=”MyWallpaperService”
android:enabled=”true”
android:label=”Wallpaper Example “
android:permission=”android.permission.BIND_WALLPAPER” >
<intent-filter>
<action android:name=”android.service.wallpaper.WallpaperService” >
</action>
</intent-filter>

<meta-data
android:name=”android.service.wallpaper”
android:resource=”@xml/mywallpaper” >
</meta-data>
</service>

<activity
android:name=”.MyPreferencesActivity”
android:exported=”true”
android:label=”@string/app_name”
android:theme=”@android:style/Theme.Light.WallpaperSettings” >
</activity>
<activity
android:name=”.SetWallpaperActivity”
android:label=”@string/app_name”
android:theme=”@android:style/Theme.Light.WallpaperSettings” >
<intent-filter>
<action android:name=”android.intent.action.MAIN” />

<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
</application>

<uses-sdk android:minSdkVersion=”10″ />

<uses-feature
android:name=”android.software.live_wallpaper”
android:required=”true” >
</uses-feature>

</manifest>

Tạo ra các lớp MyPoint để tiết kiệm các yếu tố.

package de.vogella.android.wallpaper;

public class MyPoint {
String text;
private int x;
private int y;

public MyPoint(String text, int x, int y) {
this.text = text;
this.x = x;
this.y = y;
}
}

Tạo mới activity

<?xml version=”1.0″ encoding=”utf-8″?>
<PreferenceScreen xmlns:android=”http://schemas.android.com/apk/res/android”>
<CheckBoxPreference android:key=”touch”
android:title=”Enable Touch”></CheckBoxPreference>
<EditTextPreference android:key=”numberOfCircles”
android:title=”Number of Circles”></EditTextPreference>
</PreferenceScreen>
package de.vogella.android.wallpaper;

import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
import android.widget.Toast;

public class MyPreferencesActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);

// add a validator to the “numberofCircles” preference so that it only
// accepts numbers
Preference circlePreference = getPreferenceScreen().findPreference(“numberOfCircles”);

// add the validator
circlePreference.setOnPreferenceChangeListener(numberCheckListener);
}
/**
* Checks that a preference is a valid numerical value
*/

Preference.OnPreferenceChangeListener numberCheckListener = new OnPreferenceChangeListener() {

@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
// check that the string is an integer
if (newValue != null && newValue.toString().length() > 0
&& newValue.toString().matches(“\\d*”)) {
return true;
}
// If now create a message to the user
Toast.makeText(MyPreferencesActivity.this, “Invalid Input”,
Toast.LENGTH_SHORT).show();
return false;
}
};
}
Và đây là kết quả của bạn.

xwallpaper10.png.pagespeed.ic.P_rhbBWxBV

BÌNH LUẬN

Please enter your comment!
Please enter your name here