編輯:關於Android編程
一、activity_main.xml
自定義了控件,外層是RelativeLayout,裡面是個View,通過設置View的寬度來實現進度條的前進,主要com.jltxgcy.progressbar.ProgressView要和包名一致
setProgress之所以要延遲20毫秒,是因為只有這樣才能順利獲取View的高度和寬度。自定義控件可以操作自己的View,通過onFinishInflate,來找到View,然後來操作
package com.jltxgcy.progressbar; import android.content.Context; import android.graphics.Color; import android.util.AttributeSet; import android.view.View; import android.widget.RelativeLayout; public class ProgressView extends RelativeLayout { private View mProgress; public ProgressView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onFinishInflate() { // TODO Auto-generated method stub super.onFinishInflate(); mProgress = findViewById(R.id.progress); } public void setBackgroud() { mProgress.setBackgroundColor(Color.BLUE); } public void setProgress(final int progress) { postDelayed(new Runnable() { @Override public void run() { int width = getWidth(); int height = getHeight(); int curProgress = (int) (progress / 100.0 * width); LayoutParams params = new LayoutParams(curProgress, height); mProgress.setLayoutParams(params); } }, 20); } }
通過findViewById來操作自定義ProgreeView
package com.jltxgcy.progressbar; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { private ProgressView mProgressView; private int progressRate; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mProgressView = (ProgressView) findViewById(R.id.rootview); mProgressView.postDelayed(new updataProgressBar(), 500); } class updataProgressBar implements Runnable{ @Override public void run() { mProgressView.setBackgroud(); mProgressView.setProgress(progressRate); progressRate += 2; mProgressView.postDelayed(new updataProgressBar(), 500); } } }
頂部指示器?這是什麼?好吧,我承認這是我自己想出來的詞,因為我不知道它有什麼學名,究竟是什麼呢?看下這個圖就知道了。這是我們的美工MM畫的,偶的神吶,這雖然很漂亮
關於布局動畫是針對ViewGroup而言的,意指ViewGroup在增加子View或者刪除子View時其子View的過渡動畫,在android官網有這麼一個簡單的例子,其
在5.2.1節和5.2.2節介紹了<a>標簽以及TextView自動識別的特殊文本(網址、電話號、Email等),這些都可以通過單擊來觸發不同的動作。雖然這些
關於下拉刷新的實現原理我在上篇文章Android自定義控件之仿美團下拉刷新中已經詳細介紹過了,這篇文章主要介紹表盤的動畫實現原理汽車之家的下拉刷新分為三個狀態:第一個狀態