下面是代码:

MainActivity

public class MainActivity extends AppCompatActivity {    ListView lv;    //自定义属性    List mList = new ArrayList<>();    ShowTextView showTextView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        for (int i = 0; i < 10; i++) {            mList.add("菜单" + i);        }        setContentView(R.layout.activity_main);        lv = (ListView) findViewById(R.id.lv);        lv.setAdapter(adapter);        showTextView = (ShowTextView) findViewById(R.id.showTextView);        showTextView.setText("加载动画\n" +                "AnimationUtils\n" +                "\n" +                "所有动画都有的属性\n" +                "fillAfter  动画播放完毕后 停留在最后的动画的状态,不能同时播放帧动画后停止状态\n" +                "android:repeatCount=\"infinite\"  次数,可选数值\n" +                "android:repeatMode=\"reverse\" 反转    模式 默认重复,\n" +                "android:interpolator=\"@android:anim/bounce_interpolator\" 弹球效果,不能在set里面\n" +                "\n" +                "java代码创建\n" +                " Animation anim = new ScaleAnimation(0, 1, 0, 1, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);\n" +                " \n" +                "如果没有写TO_SELF,那么针对父窗体\n" +                "\n" +                "增对activity的进出场动画\n" +                "overridePendingTransition\n" +                "必须放在finish或者startactivity还有forResult之后的一句,");    }    private BaseAdapter adapter = new BaseAdapter() {        @Override        public int getCount() {            return mList.size();        }        @Override        public Object getItem(int position) {            return null;        }        @Override        public long getItemId(int position) {            return 0;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            //每条都给动画            if (convertView == null)                convertView = View.inflate(MainActivity.this, android.R.layout.simple_list_item_1, null);            TextView tv = (TextView) convertView;            tv.setText(mList.get(position));            //动画            tv.startAnimation(getTranAnim(position));            return convertView;        }        public Animation getTranAnim(int position) {            Animation anim = new TranslateAnimation(getResources().getDisplayMetrics().widthPixels, 0, 0, 0);            anim.setDuration(300);            anim.setStartOffset(100 * position);            return anim;        }    };}

ShowTextView ,显示动画效果的类

public class ShowTextView extends LinearLayout implements View.OnClickListener {    TextView tvContent, tvMore;    boolean isShow;    public ShowTextView(Context context) {        super(context);        init();    }    //设置文本    public void setText(String text) {        tvContent.setText(text);        initText();    }    /**     * private void init() {        //有两个组件        setOrientation(VERTICAL);        //marge标签        View.inflate(getContext(), R.layout.textview_layout, this);        //this.addView(layout);        tvContent = (TextView) findViewById(R.id.tv_content);        tvContent.setPadding(10, 10, 10, 10);        tvMore = (TextView) findViewById(R.id.tv_more);        //开始设置        initText();    }    private void initText() {        //延迟的去操作view        tvContent.post(new Runnable() {            @Override            public void run() {                //判断是否单行                Log.e("TAG", "------------" + tvContent.getLineCount());                if (tvContent.getLineCount() != 1) {                    tvContent.setGravity(Gravity.LEFT);                } else {                    tvContent.setGravity(Gravity.CENTER);                }                //判断是否超过5行                if (tvContent.getLineCount() > 5) {                    tvMore.setVisibility(View.VISIBLE);                    tvMore.setOnClickListener(ShowTextView.this);                } else {                    tvMore.setVisibility(View.GONE);                }            }        });    }    public ShowTextView(Context context, AttributeSet attrs) {        super(context, attrs);        init();    }    @SuppressLint("NewApi")    @Override    public void onClick(View v) {        //当用户点击的时候        isShow = !isShow;        if (isShow) {            //需要显示更多            tvMore.setText("收起");            //属性动画            //。。。代表可变长度数值            Log.e("TAG", tvContent.getMaxLines() + "   " + tvContent.getLineCount());            ObjectAnimator.ofInt(tvContent, "lines", 5, tvContent.getLineCount()).setDuration(500).start();        } else {            //收起            tvMore.setText("显示更多");            ObjectAnimator.ofInt(tvContent, "lines", tvContent.getLineCount(), 5).setDuration(500).start();        }    }}

show_layout.xml用的是merge标签

<?xml version="1.0" encoding="utf-8"?><merge xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="wrap_content">    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:maxLines="5"        android:id="@+id/tv_content"        android:gravity="center"        android:text="显示内容"/>    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_margin="10dp"        android:id="@+id/tv_more"        android:visibility="invisible"        android:text="显示更多"/>merge>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:orientation="vertical"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.listanim_10_28.MainActivity"><com.example.listanim_10_28.ShowTextView    android:layout_width="match_parent"    android:id="@+id/tv_show"    android:layout_height="wrap_content"    />    <ListView        android:id="@+id/lv"        android:layout_width="wrap_content"        android:visibility="invisible"        android:layout_height="wrap_content" />LinearLayout>

更多相关文章

  1. 【从头学android】第一个程序,点按钮显示Hello World
  2. android 数据库初体验
  3. android全屏显示
  4. Android(安卓)使用decodeFile方法加载手机磁盘中的图片文件
  5. Android全屏对话框(附带延时关闭效果)
  6. android:visibility
  7. android实现左右滑动菜单
  8. android 状态栏与标题栏一体化
  9. ListView 滑动出现黑色边际问题

随机推荐

  1. android应用安全——数据安全
  2. Android之辅助服务上篇————Accessibi
  3. Android NDK系列(三)-AS编写C文件没有提示
  4. 【Android 界面效果19】Android中shape的
  5. Android中调用C++函数的一个简单Demo
  6. Android Test - Auto Test Multi Activit
  7. Android工程引入第三方jar包
  8. 一点见解: Android事件分发机制(三)
  9. android测试工具大全
  10. Android ContentProvider总结