`
iluoxuan
  • 浏览: 579971 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

微信ui设计 ---添加朋友

 
阅读更多

1:添加朋友的 ui: xml布局

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
	xmlns:android="http://schemas.android.com/apk/res/com.tencent.mm"
	>
	<IconPreference
		android:title="@7F0A04EA"
		android:key="find_friends_by_micromsg"
		>
	</IconPreference>
	<IconPreference
		android:title="@7F0A04F1"
		android:key="find_friends_by_qrcode"
		>
	</IconPreference>
	<PreferenceCategory
		>
	</PreferenceCategory>
	<IconPreference
		android:title="@7F0A04F5"
		android:key="find_friends_by_qq"
		>
	</IconPreference>
	<IconPreference
		android:title="@7F0A04F6"
		android:key="find_friends_by_mobile"
		>
	</IconPreference>
	<IconPreference
		android:title="@7F0A086B"
		android:key="find_friends_by_facebook"
		>
	</IconPreference>
	<PreferenceCategory
		>
	</PreferenceCategory>
	<IconPreference
		android:title="@7F0A04FA"
		android:key="find_friends_by_web"
		>
	</IconPreference>
	<PreferenceCategory
		>
	</PreferenceCategory>
</PreferenceScreen>
 

 查看: 关于自定义IconPreference:

 

http://my.oschina.net/huangsm/blog/40027

 

次和大家分享一下关于androidPreferenceActivity使用以及为配置信息文件中添加图标的功能,首先给大家看一下效果图:


大家可以看到这是最终的效果图,android提供了很大的空间供开发者可以自行定义控件,你想让你的控件长成什么样子,你就可以让它长成什么样子。自己也很推崇这类开发思想,因为自行定义控件(前提:系统内置的控件满足不了自己的需求)的优点不言而喻。这边主要分享两种类型:1:单纯标题类型;2:带有复选框。

先和大家介绍一下PreferenceActivity的几种标签:系统提供的这些标签默认都是没有图片信息

Preference :没有图片单纯的文字

EditTextPreperence:带有编辑框

ListPreference:一个List集合,右边会有一个较小的向下的三角形

RingtonePreference :铃声的相关设置

其中上面的标签当中,都有android:keyandroid:title两个属性,如果你直接使系统内置的这些标签,其中没有任何的扩展,在通过SharedPreferences的时候对应的key便是android:key中的key,在你的应用中需要取值的时候也通过这个key来取,数据也不用开发者通过代码保存,系统自动就会保存您在设置中改变的数据。Android:keyandroid:title这两个属性需要在strings.xml中自行定义。

简单的介绍过后我们回过头来看看带有图片的PreferenceActivity是怎样实现。要实现带有图片的preference有两种方法;第一,使用系统内置的preference然后通过代码设置它的setLayoutResource(layoutResourceId),把layout的换成我们自己定义的layout,但是这有一种局限性就是如果有多preference个话,而且显示的图片也要不一样,那就意味着你有多少个preference就得有多少个自己定义的layout;另一种是通过继承preference来自己扩展,这样也叫灵活,不管你有多少个preference我只需要一个layout就可以搞定。

建立类为:IconOptionPreference.java继承Preference

重写构造函数,oncreateView(arg0)onBindView(arg0)这几个方法就可以,在oncreateView的代码如下:

protected View onCreateView(ViewGroup parent) {       

    return LayoutInflater.from(getContext()).inflate(R.layout.app_item, parent, false);

}

你只需将自行定义的layout返回即可,接下来是绑定要显示的图片和要显示的值的问题,重写oncreateView方法,代码如下:

   protected void onBindView(View view) {

       super.onBindView(view);

       ImageView icon = (ImageView) view.findViewById(R.id.item_image);

       icon.setImageDrawable(mItemDrawable);      

       TextView title = (TextView) view.findViewById(R.id.item_title);

       title.setText(getTitle());

    }

构造函数中你只需将自己定义的属性,取出值即可。在android有结果过launcher开发的对自定义属性肯定不会陌生,代码如下:

public IconOptionPreference(Context context, AttributeSet attr){

       super(context, attr);

       TypedArray a = context.obtainStyledAttributes(attr, R.styleable.Preference);

       int icon = a.getResourceId(R.styleable.Preference_image, 0);

       mItemDrawable = context.getResources().getDrawable(icon);      

       a.recycle();

    }

//自定义熟悉 http://www.92coding.com/blog/index.php/archives/408.html

 

属性定义在这里就不描述了,不明白的可以留言。最后就是app_item.xml布局文件了,里面就是一个ImageViewTextView

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="55dip"

    android:orientation="horizontal">   

    <ImageView android:id="@+id/item_image"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:paddingLeft="15dip"

       android:layout_gravity="center_horizontal|center_vertical"/>   

    <TextView android:id="@+id/item_title"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:textSize="22dip"

       android:paddingLeft="10dip"

       android:layout_gravity="center_horizontal|center_vertical"

       android:textColor="@color/preference_text_color"/>

</LinearLayout>

就这样完成了一个带有图片的preference,在使用是你和其他自定义标签是一样的使用如:

<cn.yunmai.cclauncher.IconOptionPreference

           android:key="@string/start_mode_key"

           android:title="@string/start_mode_title"

            preference:image="@drawable/prefer_modelling"/>

preference:image即为自己定义的属性,这样就完成了一个带有标签的preference了。完整的代码如下:

 

01 /***
02  * @author huangsm
03  * @date 2012-2-1
04  * @email huangsanm@gmail.com
05  * @desc custom icon of preference
06  */
07 public class IconOptionPreference extends Preference {
08    private Drawable mItemDrawable;
09    public IconOptionPreference(Context context) {
10       super(context);
11    }
12  
13    public IconOptionPreference(Context context, AttributeSet attr){
14       super(context, attr);
15       TypedArray a = context.obtainStyledAttributes(attr, R.styleable.Preference);
16       int icon = a.getResourceId(R.styleable.Preference_image, 0);
17       mItemDrawable = context.getResources().getDrawable(icon);
18        a.recycle();
19  
20    }
21    public IconOptionPreference(Context context, AttributeSet attr, int defStyle){
22       super(context, attr, defStyle);
23       TypedArray a = context.obtainStyledAttributes(attr, R.styleable.Preference, defStyle, 0);
24       int icon = a.getResourceId(R.styleable.Preference_image, 0);
25       mItemDrawable = context.getResources().getDrawable(icon);
26       a.recycle();
27    }
28  
29    @Override
30    protected void onBindView(View view) {
31       super.onBindView(view);
32       ImageView icon = (ImageView) view.findViewById(R.id.item_image);
33       icon.setImageDrawable(mItemDrawable);   
34       TextView title = (TextView) view.findViewById(R.id.item_title);
35       title.setText(getTitle());
36    }
37     @Override
38    protected View onCreateView(ViewGroup parent) {
39       return LayoutInflater.from(getContext()).inflate(R.layout.app_item, parent, false);
40    }
41 }

 

 

 

第二种带有复选框的你只需将布局文件中加入复选框就可以了,但是有点需要注意的是,复选框默认会获取焦点,所以你在处理点击事件的时候你的点击事件怎么样也不会生效,就是因为checkbox把焦点给抢走了,checkbox.item.xml代码如下:

<CheckBox android:id="@+id/wallpaper_ismove"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:focusable="false"

       android:clickable="false"

        android:layout_centerVertical="true"

        android:layout_alignParentRight="true"/>

就可以了,其中android:clickable=”false”这样设置是细节上的一个问题,你可以先去掉这个属性,当你测试的时候你会发现bug。完整代码如下:

 

 

01 /***
02  * @author huangsm
03  * @date 2012-2-2
04  * @email huangsanm@gmail.com
05  * @desc 扩展Checkboxpreference,加入icon
06  */
07 public class IconCheckBoxPreference extends Preference {
08  
09     private Drawable mDrawable;
10    private CheckBox mCheckBox;
11    private Context mContext;
12    //private View mView;
13    public IconCheckBoxPreference(Context context) {
14       super(context);
15    }
16    public IconCheckBoxPreference(Context context, AttributeSet attr) {      super(context, attr);
17       this.mContext = context;
18       TypedArray a = context.obtainStyledAttributes(attr, R.styleable.Preference);
19       int icon = a.getResourceId(R.styleable.Preference_image, 0);
20       mDrawable = context.getResources().getDrawable(icon);  
21       a.recycle();
22    }
23  
24    public IconCheckBoxPreference(Context context, AttributeSet attr, int defStyle) {
25       super(context, attr, defStyle);
26       this.mContext = context;
27       TypedArray a = context.obtainStyledAttributes(attr, R.styleable.Preference);
28       int icon = a.getResourceId(R.styleable.Preference_image, 0);
29       mDrawable = context.getResources().getDrawable(icon);
30       a.recycle();
31    }
32  
33    @Override
34    protected void onBindView(View view) {
35       super.onBindView(view);
36       //绑定自定义View实现回显
37       ImageView i = (ImageView) view.findViewById(R.id.wallpaper_imageView);
38       i.setImageDrawable(mDrawable);
39       TextView t = (TextView) view.findViewById(R.id.wallpaper_title);
40       t.setText(getTitle());  
41       final SharedPreferences s = PreferenceManager.getDefaultSharedPreferences(mContext);
42       mCheckBox = (CheckBox) view.findViewById(R.id.wallpaper_ismove);
43       mCheckBox.setChecked(s.getBoolean(getKey(), true));
44    }
45    @Override
46    protected View onCreateView(ViewGroup parent) {
47       return LayoutInflater.from(getContext()).inflate(R.layout.checkbox_item, parent, false);
48    }
49  
50    //这个方法是方便在点击事件的做处理
51    public CheckBox getIconCheckbox(){
52       return mCheckBox;
53    }
54 }
分享到:
评论

相关推荐

    仿微信UI界面 全套源码下载

    这个源码包,名为"MyWeixin",提供了实现微信UI设计的各种关键组件和功能,使得开发者可以快速搭建具有类似用户体验的移动应用。 首先,我们来看登录功能。登录是任何应用程序的入口点,对于微信UI的模仿来说也不...

    安卓微信相关相关-android中微信朋友圈布局.rar

    在安卓平台上,微信朋友圈的布局设计是一个复杂而精妙的工程,它涉及到多个技术层面,包括UI设计、数据处理、滚动优化以及用户交互等。这个压缩包“安卓微信相关相关-android中微信朋友圈布局.rar”可能包含了一些...

    微信小游戏-斗地主(非demo)

    8. UI/UX设计:美观且易用的用户界面,良好的用户体验设计。 9. 错误处理和测试:确保游戏稳定,进行各种测试以消除bug。 通过Node.js服务器,开发者可以处理诸如玩家认证、游戏匹配、分数统计、聊天系统等后端任务...

    微信小程序 - 微信小程序工具 - Bookshare 借书小程序(源码+截图)

    5. **分享书单**:微信小程序提供了分享功能,通过调用wx.onShareAppMessage或wx.updateShareMenu接口,用户可以将书单分享给微信好友或朋友圈。 其次,从适用人群来看,无论你是前端开发者还是初学者,都可以通过...

    ios-高仿微信朋友圈--适合初学者.zip

    这个项目的核心是模拟微信的朋友圈功能,包括发布动态、查看好友的动态、评论、点赞等互动操作。这里我们将围绕"图文混排"这一标签,详细探讨在iOS中如何实现这一功能。 首先,我们需要了解的是`UITableView`。在...

    AndroidMyAppWeixin(仿微信界面)-IT计算机-毕业设计.zip

    微信界面的模仿涉及到UI设计和交互逻辑的实现。在Android中,XML文件通常用于定义界面布局,包括按钮、文本框、图片视图等控件。你将在AndroidMyAppWeixin的资源目录下找到这些布局文件,它们以.axml格式存在。文件...

    安卓微信相关相关-android仿微信朋友圈图片浏览其中有图片的异步加双击图片放缩点击图片退出当前界面横向滚动图片查看.rar

    在安卓开发中,微信作为一款广泛使用的社交应用,其用户界面和交互设计被许多开发者视为模仿的对象。这个压缩包文件“安卓微信相关相关-android仿微信朋友圈图片浏览其中有图片的异步加双击图片放缩点击图片退出当前...

    微信小程序-商城源码仿康爱多商城系统.rar

    - **社交分享**:支持微信内的好友分享、朋友圈分享,扩大商城影响力。 - **数据分析**:集成数据分析工具,对用户行为、交易数据进行统计分析,辅助运营决策。 总的来说,这个源码包为构建一个完整的微信小程序...

    微信小程序-美妆小铺古风版ancientBeauty-master.zip

    6. **社交分享**:用户可以将商品或购物体验分享到微信朋友圈或与朋友私聊分享。 【开发工具与流程】 开发者使用微信开发者工具进行小程序的编写、调试和发布。流程大致包括: 1. 创建项目并配置app.json和app.js。...

    微信UIdemo

    在微信的场景下,这可能包括消息发送、朋友圈分享、添加好友等基本操作的简短演示。这些引导页通常设计得既美观又易于理解,以便快速让用户熟悉应用的核心功能。 3. **欢迎页面**: 在某些应用中,尤其是社交应用...

    微信小程序-户外旅游小程序源码及项目截图

    5. **社交互动**:添加好友,组建旅行小组,分享实时位置,增加旅途中的互动性。 6. **天气查询**:实时查询旅行目的地的天气情况,为出行做好准备。 7. **优惠券与促销**:定期推送商家优惠信息,刺激消费。 8. **...

    407-微信小程序-优购.zip

    6. **商品分享**:支持一键分享功能,用户可以将商品信息分享给微信好友或朋友圈,扩大商品曝光度,促进口碑传播。 7. **添加购物车**:用户可将心仪商品加入购物车,实现批量结算,同时也方便用户在不同时间点查看...

    微信小程序-交友互动小程序源码及项目截图

    在项目截图中,我们可以看到实际应用的界面设计和布局,这对于开发者来说是很有帮助的,可以作为UI设计的参考,同时也可用来检验源码是否能正确实现所期望的功能和视觉效果。 综上所述,“小契约(交友互动小程序)...

    微信小程序-天天快拍短视频小程序源码及项目截图

    - **社交分享**:用户可以将拍摄的短视频分享到朋友圈或微信好友,这就需要用到微信小程序的分享API。 - **界面设计**:考虑到用户体验,UI设计需要简洁易用,同时,可能需要动态加载和分页显示视频列表。 通过对...

    微信小程序仿朋友圈代码

    总的来说,"微信小程序仿朋友圈代码"项目涵盖了微信小程序的基础开发、用户授权、UI设计、数据交互、动态发布和社交功能等多个方面。通过这个项目,开发者不仅可以深入了解微信小程序的开发流程,还能提升对用户体验...

    仿微信6.2UI界面最新出炉

    微信作为中国最流行的社交应用,其用户界面设计一直备受开发者和设计师的关注...同时,持续关注并学习最新的UI设计趋势,对于保持应用的竞争力至关重要。因此,这个主题对于移动应用开发者来说,是一个极好的学习资源。

    毕业设计 微信小程序设计-精品旅游类.rar

    **社交互动**:利用微信的社交属性,添加分享功能,用户可以将行程、心得一键分享到朋友圈或微信群,提高小程序的曝光度和传播力。\n\n5. **支付集成**:微信支付的接入,使得交易过程更为便捷,提升用户体验。\n\...

    高仿安卓微信UI全套源码.zip

    4. **摇一摇动画**:这是微信中的一个特色功能,通过模拟手机摇晃的动作来触发特定事件,如添加朋友或参与活动。 5. **个人详细界面**:这是用户查看和编辑自己资料的页面,可能包括头像、昵称、个人信息编辑等功能...

    微信小程序-B站首页界面设计

    此外,考虑到微信小程序的分享特性,开发者还可以增加社交功能,比如一键分享到朋友圈、微信好友等,增强用户的互动性和传播性。 总结来说,实现“微信小程序-B站首页界面设计”项目,需要掌握微信小程序的开发技术...

    用于展示美容产品的微信小程序Cosmetic-Wechat-Mini-master.zip

    综上所述,创建“Cosmetic-Wechat-Mini-master”这样的美容产品展示微信小程序,需要综合运用前端技术、UI设计、用户体验、数据分析等多个领域的知识。开发者不仅要关注技术实现,还要注重用户体验,打造一个既实用...

Global site tag (gtag.js) - Google Analytics