android 滚动画画,Android利用ViewPager实现可滑动放大缩小画廊效果
畫廊在很多的App設計中都有,如下圖所示:
該例子是我沒事的時候寫的一個小項目,具體源碼地址請訪問https://www.easck.com/>
使用方式
布局中添加該自定義控件
xmlns:tools="http://www.easck.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@+id/cover"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
代碼中設置
代碼中設置分為以下幾個步驟:
?查找控件
?初始化數據
?將需要顯示的數據設置到控件上
?設置滑動監聽
public class MainActivity extends AppCompatActivity {
private CoverFlowViewPager mCover;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCover = (CoverFlowViewPager) findViewById(R.id.cover);
// 初始化數據
List list = new ArrayList<>();
for(int i = 0;i<10;i++){
ImageView img = new ImageView(this);
img.setBackgroundColor(Color.parseColor("#"+getRandColorCode()));
list.add(img);
}
//設置顯示的數據
mCover.setViewList(list);
// 設置滑動的監聽,該監聽為當前頁面滑動到中央時的索引
mCover.setOnPageSelectListener(new OnPageSelectListener() {
@Override
public void select(int position) {
Toast.makeText(getApplicationContext(),position+"",Toast.LENGTH_SHORT).show();
}
});
}
/**
* 獲取隨機顏色,便于區分
* @return
*/
public static String getRandColorCode(){
String r,g,b;
Random random = new Random();
r = Integer.toHexString(random.nextInt(256)).toUpperCase();
g = Integer.toHexString(random.nextInt(256)).toUpperCase();
b = Integer.toHexString(random.nextInt(256)).toUpperCase();
r = r.length()==1 ? "0" + r : r ;
g = g.length()==1 ? "0" + g : g ;
b = b.length()==1 ? "0" + b : b ;
return r+g+b;
}
}
實現原理
實現過程中有兩個難點:
?如何實現滑動過程中的放大與縮小
?如何顯示ViewPager中未被顯示的頁面
如何實現滑動過程中的放大與縮小?
在設置每一個ViewPager 的頁面時,對每一個頁面都設置一個固定的padding值,這樣每個頁面都會顯示縮小狀態。同時ViewPager設置addOnPageChangeListener(),滑動監聽,在該滑動監聽中會回調ViewPager的滑動的狀態,滑動的偏移量等,根據滑動的偏移量進行放大縮小。及根據padding值設置控件的顯示大小
總結
以上是生活随笔為你收集整理的android 滚动画画,Android利用ViewPager实现可滑动放大缩小画廊效果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php url乱码java接收,java
- 下一篇: android getdecorview