android用户界面框架采用什么模式
- 行业动态
- 2024-01-24
- 2
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则使用默认值,可以自行修改。!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&(((((((((((((((((((((((((((((((((((((((((((((((&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%............................................................................................................%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}$}}}}}}$}}}}}}}}}}$}}}}}}$}}}}}}}}}$}}}}}}}}}}}}}$}}}}}}$}}}}}}}}}$}}}}}}$}}}}}}$}}}}}}}}}$}}}}}}$}}}}}}$}}}}}}}}}$}}}}}}}}}$}}}}}}}}}$}}}}|$
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/354826.html