安卓仿淘宝头条数据上下自动滚动

来源:互联网 发布:java视频模糊 编辑:程序博客网 时间:2024/05/07 16:08

其实实现逻辑就是一个自定义的view,在加上指定的动画就可以;


布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#ffffff"    android:orientation="vertical"    tools:context=".MainActivity" >    <TextView        android:layout_width="match_parent"        android:layout_height="50dp"        android:background="#f1f1f1"        android:gravity="center_vertical|center_horizontal"        android:text="PonyProject" />    <RelativeLayout        android:id="@+id/noti_real_pre"        android:layout_width="fill_parent"        android:layout_height="60dp"        android:orientation="vertical"        android:paddingLeft="10dp" >        <ImageView            android:id="@+id/adt_type"            android:layout_width="100dp"            android:layout_height="50dp"            android:layout_alignParentLeft="true"            android:layout_centerVertical="true"            android:layout_marginBottom="1px"            android:layout_marginTop="1px"            android:clickable="false"            android:focusable="false"            android:paddingBottom="2dp"            android:paddingLeft="@dimen/dp_5"            android:paddingRight="@dimen/dp_10"            android:paddingTop="2dp"            android:src="@drawable/icon_activity" />        <View            android:id="@+id/mView"            android:layout_width="0.5dp"            android:layout_height="15dp"            android:layout_centerVertical="true"            android:layout_toRightOf="@id/adt_type"            android:background="#e5e5e5"            android:clickable="false"            android:focusable="false" >        </View>        <com.pony.view.UPMarqueeView            android:id="@+id/sl_activity"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerVertical="true"            android:layout_marginLeft="10dp"            android:layout_toRightOf="@id/mView"            android:clickable="false"            android:focusable="false" />    </RelativeLayout>    <View        android:layout_width="fill_parent"        android:layout_height="1px"        android:background="#cccccc"        /></LinearLayout>

显示滚动内容的布局文件:


<?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">    <LinearLayout        android:id="@+id/rl"        android:layout_width="match_parent"        android:gravity="center_vertical"        android:layout_height="43dp">        <TextView            android:id="@+id/tv1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_toRightOf="@+id/title_tv1"            android:ellipsize="end"            android:focusable="false"            android:clickable="false"            android:textColor="@color/check_more_topic"            android:textSize="14sp"            android:maxLines="1" />        <TextView                android:layout_width="wrap_content"                android:layout_toRightOf="@id/sl_activity"                android:layout_height="wrap_content"                android:layout_marginLeft="8dp"                android:text="HOT"                android:focusable="false"                android:clickable="false"                android:textSize="10dip"                android:layout_centerVertical="true"                android:padding="2dp"                android:textColor="#ffffff"                android:background="@drawable/selected_selector"        />   </LinearLayout></LinearLayout>


自定义view文件:

package com.pony.view;import java.util.List;import android.content.Context;import android.util.AttributeSet;import android.view.View;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.ViewFlipper;import com.pony.R;/** * 仿淘宝首页的 淘宝头条滚动的自定义View * * Created by mengwei on 2016/7/20. */public class UPMarqueeView extends ViewFlipper {    private Context mContext;    private boolean isSetAnimDuration = false;    private int interval = 3000;    /**     * 动画时间     */    private int animDuration = 500;    public UPMarqueeView(Context context, AttributeSet attrs) {        super(context, attrs);        init(context, attrs, 0);    }    private void init(Context context, AttributeSet attrs, int defStyleAttr) {        this.mContext = context;        setFlipInterval(interval);        Animation animIn = AnimationUtils.loadAnimation(mContext, R.anim.anim_marquee_in);        if (isSetAnimDuration) animIn.setDuration(animDuration);        setInAnimation(animIn);        Animation animOut = AnimationUtils.loadAnimation(mContext, R.anim.anim_marquee_out);        if (isSetAnimDuration) animOut.setDuration(animDuration);        setOutAnimation(animOut);    }    /**     * 设置循环滚动的View数组     *     * @param views     */    public void setViews(final List<View> views) {        if (views == null || views.size() == 0) return;        removeAllViews();        for ( int i = 0; i < views.size(); i++) {            final int position=i;                        /**             * 这边的监听事件是对滚动的每一条的点击事件,在使用的时候可以打开,但是在打开的时候会获取此布局的焦点,导致外层的事件不能够点击,所以在使用的时候要注意             */                        //            //设置监听回调//            views.get(i).setOnClickListener(new OnClickListener() {//                @Override//                public void onClick(View v) {//                    if (onItemClickListener != null) {//                        onItemClickListener.onItemClick(position, views.get(position));//                    }//                }//            });            addView(views.get(i));        }        startFlipping();    }////    /**//     * 点击//     *///    private OnItemClickListener onItemClickListener;////    /**//     * 设置监听接口//     * @param onItemClickListener//     *///    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {//        this.onItemClickListener = onItemClickListener;//    }////    /**//     * item_view的接口//     *///    public interface OnItemClickListener {//        void onItemClick(int position, View view);//    }}

主Activity文件:


package com.pony;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.widget.LinearLayout;import android.widget.TextView;import com.pony.view.UPMarqueeView;public class MainActivity extends Activity {private String flag = "log_message";/** * 设置显示的view */List<View> views = new ArrayList<View>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);UPMarqueeView ts_activity = (UPMarqueeView) findViewById(R.id.sl_activity);setView();ts_activity.setViews(views);}/** * 设置布局文件 */private void setView() {for (int i = 0; i < 3; i++) {final int position = i;// 设置滚动的单个布局LinearLayout moreView = (LinearLayout) LayoutInflater.from(MainActivity.this).inflate(R.layout.item_view, null);// 初始化布局的控件TextView tv1 = (TextView) moreView.findViewById(R.id.tv1);// 进行对控件赋值tv1.setText("Pony第"+i+"个信息");// 添加到循环滚动数组里面去views.add(moreView);}}}


源码供大家学习:

http://download.csdn.net/detail/u014388322/9643727





1 0