编写自定义的 Android Preference 组件

网友投稿 594 2022-12-01

编写自定义的 Android Preference 组件

编写自定义的 Android Preference 组件

Android SDK 提供好几个 Preference 组件,例如 CheckBoxPreference、EditTextPreference、DialogPreference、ListPreference 等,这些组件是跟 Android 提供的 Preference 存储机制绑定的,你可以通过这些组件来修改应用的一些配置,如下图所示,这是 Android 自带的系统设置界面:

请看中间选项的效果,在右边显示当前选择的图片。

代码如下:

​​源码​​​ ​​​打印​​​ ​​​?​​

1. import2. import3. import4. import5. import6. import7. import8. import9. 10. /**11. * 图片选项,用于设置图片和边框12. * @author Winter Lau13. */14. public class ImageOptionPreference extends15. 16. private17. private int18. private19. 20. public ImageOptionPreference(Context context, AttributeSet attrs, int21. super22. }23. 24. public25. super26. }27. 28. public29. super30. }31. 32. void33. this34. }35. 36. @Override37. public boolean38. return false39. }40. 41. /**42. * 修改图片43. * @param newImage44. * @return45. */46. boolean ChangeGamePic( int47. if ( this48. return false49. GameGlobal.save_pic(newImage);50. this51. preview_img.setImageResource(newImage);52. return true53. }54. 55. @Override56. protected void57. super58. 59. this60. preview_img = (ImageView)view.findViewById(R.id.pref_current_img);61. this.mImage);62. }63. 64. @Override65. protected void66. super67. new68. this.mImage);69. new Intent(parent, ImageSelector. class70. intent.putExtras(bundle);71. parent.startActivityForResult(intent, MagicSetting.REQUEST_CODE_GAME_IMAGE);72. }73. 74. } 1. import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.preference.Preference;import android.preference.PreferenceActivity;import android.util.AttributeSet;import android.view.View;import android.widget.ImageView;2. /*** 图片选项,用于设置图片和边框* @author Winter Lau*/public class ImageOptionPreference extends Preference {3. private PreferenceActivity parent;private int mImage = R.drawable.car;private ImageView preview_img;public ImageOptionPreference(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}4. public ImageOptionPreference(Context context, AttributeSet attrs) {super(context, attrs);}5. public ImageOptionPreference(Context context) {super(context);}void setActivity(PreferenceActivity parent) {this.parent = parent;}@Overridepublic boolean isPersistent() {return false;}6. /*** 修改图片* @param newImage* @return*/boolean ChangeGamePic(int newImage ){if(this.mImage == newImage)return false;GameGlobal.save_pic(newImage);this.mImage = newImage;preview_img.setImageResource(newImage);return true;}7. @Overrideprotected void onBindView(View view) {super.onBindView(view);this.mImage = GameGlobal.get_pic();preview_img = (ImageView)view.findViewById(R.id.pref_current_img);preview_img.setImageResource(this.mImage);}8. @Overrideprotected void onClick() {super.onClick();Bundle bundle = new Bundle();bundle.putInt(GameGlobal.PREF_KEY_IMAGE, this.mImage);Intent intent = new Intent(parent, ImageSelector.class);intent.putExtras(bundle);parent.startActivityForResult(intent, MagicSetting.REQUEST_CODE_GAME_IMAGE);}9. } 对应的 Perference 配置信息如下 而 preference_widget_image 的信息如下 而这个 ImageView 的 Layout 就是在选项右边显示的图片。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:android ListView 数据更新的总结
下一篇:Android 应用程序获得版本号
相关文章

 发表评论

暂时没有评论,来抢沙发吧~