引用:http://blog.csdn.net/xyz_fly/article/details/9146395#comments
微信朋友圈中,如果好友发表的文字过长,会自动收缩起来,底下有提示,当点击“显示更多”时才会展开。
首先定义布局文件(很简单,不解释):
<?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="match_parent" android:orientation="vertical" > <TextView android:id="@+id/desc_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4.0dip" android:gravity="center_vertical" android:textColor="#ff000000" android:textSize="14.0dip" /> <TextView android:id="@+id/desc_op_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4.0dip" android:gravity="center" android:singleLine="true" android:textColor="#ff576b95" android:textSize="14.0dip" android:visibility="gone" /> </LinearLayout>
文字:
<string name="desc_shrinkup">收起</string> <string name="desc_spread">显示更多</string>
public class CollapsibleTextView extends LinearLayout implements OnClickListener { /** default text show max lines */ private static final int DEFAULT_MAX_LINE_COUNT = 2; private static final int COLLAPSIBLE_STATE_NONE = 0; private static final int COLLAPSIBLE_STATE_SHRINKUP = 1; private static final int COLLAPSIBLE_STATE_SPREAD = 2; private TextView desc; private TextView descOp; private String shrinkup; private String spread; private int mState; private boolean flag; public CollapsibleTextView(Context context, AttributeSet attrs) { super(context, attrs); shrinkup = context.getString(R.string.desc_shrinkup); spread = context.getString(R.string.desc_spread); View view = inflate(context, R.layout.collapsible_textview, this); view.setPadding(0, -1, 0, 0); desc = (TextView) view.findViewById(R.id.desc_tv); descOp = (TextView) view.findViewById(R.id.desc_op_tv); descOp.setOnClickListener(this); } public CollapsibleTextView(Context context) { this(context, null); } public final void setDesc(CharSequence charSequence, BufferType bufferType) {
desc.setText(charSequence, bufferType);
mState = COLLAPSIBLE_STATE_SPREAD;
flag = false;
requestLayout();
} @Override public void onClick(View v) { flag = false; requestLayout(); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); if (!flag) { flag = true; if (desc.getLineCount() <= DEFAULT_MAX_LINE_COUNT) { mState = COLLAPSIBLE_STATE_NONE; descOp.setVisibility(View.GONE); desc.setMaxLines(DEFAULT_MAX_LINE_COUNT + 1); } else { post(new InnerRunnable()); } } } class InnerRunnable implements Runnable { @Override public void run() { if (mState == COLLAPSIBLE_STATE_SPREAD) { desc.setMaxLines(DEFAULT_MAX_LINE_COUNT); descOp.setVisibility(View.VISIBLE); descOp.setText(spread); mState = COLLAPSIBLE_STATE_SHRINKUP; } else if (mState == COLLAPSIBLE_STATE_SHRINKUP) { desc.setMaxLines(Integer.MAX_VALUE); descOp.setVisibility(View.VISIBLE); descOp.setText(shrinkup); mState = COLLAPSIBLE_STATE_SPREAD; } } } }
效果图:
源码:
引用:http://blog.csdn.net/xyz_fly/article/details/9146395#comments
相关推荐
9. **多线程与异步处理**:网络请求和大数据处理通常在后台线程进行,以避免阻塞主线程,源码可能使用AsyncTask、Handler、Thread或更现代的RxJava、Coroutines进行异步编程。 10. **模块化设计**:大型项目通常...
总的来说,"Android 仿微信UI源码"是一个涵盖Android UI设计、网络请求、数据存储、权限管理等多方面知识的综合实例。通过深入研究并实践这份源码,开发者可以提升自己的Android开发技能,更好地理解和掌握Android...
例如,顶部的导航栏可能需要自定义ToolBar,底部TabBar可以使用FragmentPagerAdapte配合TabLayout实现,而聊天界面则需要实现ListView或RecyclerView来显示消息列表,并且要处理好滑动刷新和下拉加载更多等功能。...
在本资源"Android应用源码之高仿微信.rar"中,我们可以深入学习和研究如何在Android平台上构建一个类似微信的应用程序。源代码提供了完整的实现,包括界面设计、功能模块和交互逻辑,对于Android开发者来说是一份...
【标题】:“仿微信界面应用源码...总之,“仿微信界面应用源码”是一个全面学习和实践Android UI设计与开发的宝贵资源,无论你是初学者还是经验丰富的开发者,都能从中获取到有价值的知识和技巧,提升自己的开发能力。
这个“Android应用源码高仿安卓微信UI项目”是一个基于Java编程语言的开源项目,旨在模仿和实现微信的用户界面(UI)设计。通过研究这个项目,开发者可以深入理解如何在Android平台上构建类似微信的复杂交互和视觉...
总的来说,《Android应用源码之高仿微信》涵盖了Android应用开发的多个方面,从UI设计到功能实现,再到数据管理和网络通信,都是学习和提升Android开发技能的好材料。通过对源码的分析和学习,开发者可以深入了解...
总之,这个"安卓Android源码——高仿安卓微信UI项目.zip"涵盖了Android开发中的诸多关键知识点,包括UI设计、事件处理、数据存储、图片加载和多线程等。通过深入研究和实践,开发者不仅可以提升自己的编程技巧,还能...
总的来说,"Android高级应用源码-HorizontalListView仿微信发起群聊"是一个很好的学习资源,涵盖了自定义View、事件处理、数据绑定、布局管理等多个Android开发的重要知识点,值得开发者深入研究。
"安卓Android源码——精典源码之高仿微信.zip" 这个标题揭示了我们要探讨的主题是关于Android平台上的一个开源项目,它的目标是模仿微信的应用界面和功能。这个项目可能是为了教学目的,或者是开发者研究微信交互...
源码中可能包含了自定义的输入框、表情选择器、滑动加载更多视图等,这些都是微信为了优化交互体验而定制的组件。 4. 网络请求部分,开发者通常会使用如Retrofit、Volley或OkHttp等库进行网络通信。微信源码中会...
例如,一个用于展示图片,另一个用于显示纯文本,可能还有更多类型用于视频或者其他复杂结构。每个布局文件应包含对应类型的UI元素。 4. 视图复用:为了优化性能, GridView和ListView都依赖于视图复用机制。在`...
这个压缩包文件“Android应用源码之高仿微信5.2内测版UI项目.zip”包含了一个Android应用的源码,其目标是模仿微信5.2内测版本的用户界面设计。通过分析这个项目,我们可以深入理解Android UI开发、布局管理、自定义...
【标题】"仿微信源码"所涉及的知识点主要集中在移动应用开发领域,特别是针对Android平台,因为通常 APK 文件是 Android 应用程序的打包格式。这个项目旨在创建一个类似于微信的应用程序,它包含了基本的微信功能,...
8. **用户界面设计**:源码中包含了自定义View和Adapter的使用,展示了如何创建与微信类似的用户界面元素,如滑动刷新、下拉加载更多等。 9. **图片加载库**:为了优化图片的加载和显示,源码可能使用了Glide、...
在本资源中,我们得到了一个名为"Android 完美高仿的微信源码.zip"的压缩包,这是一份用于学习和研究的Android应用程序源代码,旨在模仿微信的应用功能和用户体验。这个项目主要使用Java语言编写,同时也可能涉及到...
本项目“Android应用源码之仿微信标题栏右上角PopupWindow”旨在实现一个与微信应用类似的标题栏功能,特别是在右上角的下拉PopupWindow效果。这个功能通常用于展示更多的操作选项或者设置,增强了用户体验。 首先...
1. **Android UI设计**:微信的用户界面设计是其成功的关键因素之一。你需要了解并运用Android的布局管理器(如LinearLayout、RelativeLayout、ConstraintLayout等)来创建聊天界面、联系人列表、朋友圈展示页等。...
通过分析和实现微信的源码,开发者不仅能学习到Android布局设计的技巧,还能深入理解Android应用开发的各种技术,包括数据持久化、网络请求、多线程、权限管理等方面的知识。同时,这也是一种提高自己编程能力、解决...