TextView上的Marquee,闪烁的textview和Seekbar进度线程阻止了UI

时间:2014-12-26 12:26:05

标签: android android-layout android-animation ui-thread android-runonuithread

我的App上有三个动画。

1。 TextView Marque(滚动继续)

2。闪烁文本视图(当我的音乐应用程序处于暂停模式时)

第3。 SeekBar Progress线程(显示播放歌曲的进度)

虽然我对我的应用程序使用了最重要的效果,但我的应用程序的UI变得很少挂起。我猜所有人都在使用UI线程。我想像独立的工作一样处理它而不会相互阻挡。

代码如下:

应用的XML布局:

<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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:background="@android:color/black"
    android:orientation="vertical">

    <TextView
        android:id="@+id/songCurrentDurationLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingLeft="10dp"
        android:singleLine="true"
        android:text="00:00"
        android:textColor="@android:color/white"
        android:textSize="14sp" />


    <TextView
        android:id="@+id/songTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_margin="10dp"
        android:ellipsize="marquee"
        android:fadingEdgeLength="10dip"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:scrollHorizontally="true"
        android:selectAllOnFocus="true"
        android:singleLine="true"
        android:textColor="@android:color/white"
        android:gravity="center_horizontal"
        android:textSize="30sp"
        android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"/>




    <SeekBar
        android:id="@+id/songProgressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="-15dp"
        android:layout_marginRight="-15dp"
        android:layout_marginTop="15dp"
        android:max="100"
        android:progress="50"
        android:progressDrawable="@drawable/scrubber_progress_horizontal_holo_light"
        android:thumb="@drawable/scrubber_control_selector_holo"
        android:indeterminate="false" />

</LinearLayout>

我的班级代码如下:

public class MainActivity extends Activity {

    private Animation blinking_anim;
    private SeekBar songProgressBar;
    private TextView songCurrentDurationLabel;
    private int count = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        blinking_anim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.blinking_animation);
        songProgressBar = (SeekBar)findViewById(R.id.songProgressBar);
        songCurrentDurationLabel = (TextView)findViewById(R.id.songCurrentDurationLabel);
        songCurrentDurationLabel.startAnimation(blinking_anim);
        mHandler.post(mUpdateTimeTask);
        songProgressBar.setMax(10000);
    }
    private final Handler mHandler = new Handler();
    private Runnable mUpdateTimeTask = new Runnable() {
        public void run() {
            try {
                Thread.sleep(100);
                count = count +10;
                songCurrentDurationLabel.setText(""+ count);
                songProgressBar.setProgress((int)count);
                System.out.println("Runnnnn.........MAIN....");
                if(count>=10000){
                    mHandler.removeCallbacks(mUpdateTimeTask);
                }else
                    mHandler.post(mUpdateTimeTask);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
}

闪烁动画:

    <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="1000" android:repeatCount="infinite">
    <alpha android:fromAlpha="4.0" android:toAlpha="0.0" android:duration="1000" android:repeatCount="infinite">
    </alpha></alpha>
</set>

需要帮助实现所有这些,以便独立工作而不会互相影响。

0 个答案:

没有答案