Android 仿网易新闻图片新闻底部布局

没有做不同分辨率的处理,只是简单写了一下。欢迎指正交流。

最近公司项目需求需要用到网易新闻图片新闻底部的滑动控件,找了一圈轮子没有知道合适的决定自己造一个轮子吧,最后实现出来的效果和网易还是有一点差别的,有什么的好的思路欢迎私信交流。

项目地址https://github.com/Hemumu/BottomDrawerLayout

所有素材来自网易新闻,仅作学习交流。

先上效果图和网易新闻的对比

网易新闻

图片 1

GIF.gif

我实现的

图片 2

GIF22.gif

基本效果实现了,后面还需要进一步优化。实现的答题思路就是通过拦截滑动事件和调用layout()的实现控件的拖动和高度的限制,内容的高度是由TextViewmaxHeightminHeight来限制的。

图片 3

初始化

新建一个类继承LinearLayout这个类就是我们布局容器,首先初始化这个类,需要定义一些自定义参数

/**
     * 初始化View
     * @param context
     * @param attrs
     */
    private void initView(Context context, AttributeSet attrs) {
        TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.bot_arr);

        String title = ta.getString(R.styleable.bot_arr_bot_title);
        String content = ta.getString(R.styleable.bot_arr_bot_content);
        ta.recycle();

        LayoutInflater inflater = LayoutInflater.from(context);
        mView = inflater.inflate(R.layout.bottom_layout2, this, true);

        mTitleView = (TextView) mView.findViewById(R.id.bot_title_text);
        mContentView = (TextView) mView.findViewById(R.id.bot_content);
        mPageNum = (TextView) mView.findViewById(R.id.page_num);
        mTitleLayout = (LinearLayout) mView.findViewById(R.id.title_layout);

        mOuterLayout= (LinearLayout)mView.findViewById(R.id.outer_layout);
        mContentView.setText(content);
        //设置TextView可以滚动
        mContentView.setMovementMethod(new ScrollingMovementMethod());
        mTitleView.setText(title);
        this.context = context;
    }

基本都是一些很简单的东西,但是有一句很关键的代码mContentView.setMovementMethod(new ScrollingMovementMethod());,当我们设置了TextViewmaxHeightminHeight后当字数超过了限制我们当然希望是可以滑动的,但是TextView是无法滑动的。最开始我的想法是用ScrollView嵌套一个TextView但是ScrollView没有限制高度的方法,要自己去计算最高和最低的高度很麻烦。最后在Stackoverflow上看到了解决方法,使用setMovementMethod方法,我们看看官方文档的解释

图片 4

QQ截图20170314161222.png

什么?看不懂?好吧我就是放上来装逼的。Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,只需要设置一些属性

<TextView
            android:id="@+id/bot_content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            //最高高度
            android:maxHeight="200dp"
            //最低高度
            android:minHeight="100dp"
            android:padding="5dp"
            //滚动反向  
            android:scrollbars="vertical"
            android:text="xxxx"
            android:textColor="#ffffff"
            android:textSize="15sp" />

当然也可以这样设置他的android:maxLines="2"来限制它的高度从而实现滚动。然后通过设置TextView的滚动实例也就是上面提到的方法setMovementMethod(new ScrollingMovementMethod())。这样就实现了滚动了。

本文由上海快三发布于新闻,转载请注明出处:Android 仿网易新闻图片新闻底部布局

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。