当前位置:首页 > 行业动态 > 正文

android用户界面框架采用什么模式

Android的用户界面框架采用单线程用户界面(Single-threaded UI)的模式。

ListPreference简介

ListPreference是Android中的一种首选项框架,它允许用户从一个列表中选择一个选项,ListPreference通常用于那些只有有限个选项的情况,例如颜色、字体大小等,与Spinner相比,ListPreference的性能更好,因为它不需要在内存中存储所有的选项数据。

ListPreference的使用

1、创建ListPreference

要使用ListPreference,首先需要在布局文件中添加一个EditText控件,用于输入用户的选择,然后在代码中创建一个ListPreference实例,并将其与EditText控件关联。

<androidx.preference.ListPreference
    android:id="@+id/list_preference"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/colors"
    android:entryValues="@array/color_codes"
    app:dialogTheme="@style/DialogTheme" />

2、在Java代码中设置ListPreference的监听器

要监听ListPreference的变化,需要为其设置一个OnPreferenceChangeListener,当用户更改首选项时,监听器会被调用,并传入用户选择的新值。

ListPreference listPreference = (ListPreference) findPreference("list_preference");
listPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        String selectedColor = (String) newValue;
        // 根据用户选择的颜色执行相应操作
        return true;
    }
});

3、从资源文件中获取列表项数据

要让ListPreference显示一个列表,需要在资源文件(如res/values/strings.xml)中定义一个字符串数组,其中包含列表项的文本,然后在代码中通过ArrayUtils类将数组转换为CharSequence数组。

<resources>
    <string-array name="colors">
        <item>红色</item>
        <item>绿色</item>
        <item>蓝色</item>
    </string-array>
</resources>
import androidx.annotation.NonNull;
import java.util.Arrays;
import java.util.List;
import android.content.Context;
import androidx.core.content.res.ResourcesCompat;
import org.apache.commons.lang3.ArrayUtils;
public class MyActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
List<CharSequence> colorEntries = Arrays.asList(getResources().getStringArray(R.array.colors));
CharSequence[] colorCodes = ArrayUtils.toObject(colorEntries);

4、为ListPreference设置列表项图标和提示文字样式

如果希望为列表项添加图标和自定义提示文字样式,可以在资源文件中定义一个drawable和string数组,然后在代码中通过TypedArray获取这些资源ID,最后将这些资源ID设置到ListPreference的entryIcon和entryHint属性上。

<resources>
    <drawable-array name="color_codes">
        <item>@mipmap/red</item>
        <item>@mipmap/green</item>
        <item>@mipmap/blue</item>
    </drawable-array>
</resources>
TypedArray typedArray = getResources().obtainTypedArray(R.array.color_codes);
int[] colorCodeIds = new int[typedArray.length()];
for (int i = 0; i < typedArray.length(); i++) {
    colorCodeIds[i] = typedArray.getResourceId(i, R.mipmap.red); //默认图标为红色圆点图标,如果没有对应的资源ID则使用默认值,可以自行修改。!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&(((((((((((((((((((((((((((((((((((((((((((((((&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%............................................................................................................%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}$}}}}}}$}}}}}}}}}}$}}}}}}$}}}}}}}}}$}}}}}}}}}}}}}$}}}}}}$}}}}}}}}}$}}}}}}$}}}}}}$}}}}}}}}}$}}}}}}$}}}}}}$}}}}}}}}}$}}}}}}}}}$}}}}}}}}}$}}}}|$
0

随机文章