android水平滚动条,Android使用HorizontalScrollView实现水平滚动
HorizontalScrollView 和 ScrollView 都是由 FrameLayout 派生出來(lái)的。它們就是一個(gè)用于為普通組件添加滾動(dòng)條的組件。且 HorizontalScrollView 和 ScrollView 里面最多只能包含一個(gè)組件(當(dāng)然組件里面還可以嵌套組件)。它們不同的是 HorizontalScrollView 用于添加水平滾動(dòng),而 ScrollView 用于添加垂直滾動(dòng)。
突然間想到 做一個(gè)屏幕下方水平滑動(dòng),屏幕上方并作出相應(yīng)的反應(yīng)的效果。只是在下方滾動(dòng)時(shí),屏幕上方?jīng)]有作出理想的反應(yīng),點(diǎn)擊事件倒是實(shí)現(xiàn)了。最終只能在網(wǎng)上搜索,終于找到了一個(gè)。于是作出的效果如下:
只是這個(gè)效果還有所缺陷,加載了 13 張圖片,在屏幕下方水平滾動(dòng)到最后一頁(yè)時(shí),第 9 張的圖片并沒有在上面的顯示出來(lái)(原作者的也有這個(gè)問題);如果圖片的數(shù)量小于或者等于 4 張時(shí)則不能運(yùn)行。
本例的難點(diǎn)主要在于 MyHorizontalView 類中,并且還有收集而來(lái)的注解。
MainActivity.java :
package com.crazy.horizontalscrollviewtest;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.crazy.horizontalscrollviewtest.MyHorizontalView.CurrentImageChangeListener;
import com.crazy.horizontalscrollviewtest.MyHorizontalView.OnItemClickListener;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private ImageView mImageView;
private MyHorizontalView myHorizontalView;
private List bitmapList;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
mImageView = (ImageView)findViewById(R.id.imageView);
bitmapList = new ArrayList<>(Arrays.asList(
readBitMap(this, R.drawable.bricks),
readBitMap(this, R.drawable.dog),
readBitMap(this, R.drawable.flower),
readBitMap(this, R.drawable.grass),
readBitMap(this, R.drawable.stones),
readBitMap(this, R.drawable.wood),
readBitMap(this, R.drawable.bg_01),
readBitMap(this, R.drawable.bg_02),
readBitMap(this, R.drawable.bg_03),
readBitMap(this, R.drawable.bg_04),
readBitMap(this, R.drawable.bg_05),
readBitMap(this, R.drawable.bg_06),
readBitMap(this, R.drawable.bg_07)
));
myHorizontalView = (MyHorizontalView)findViewById(R.id.my_horizontal);
adapter = new MyAdapter(this, bitmapList);
//設(shè)置適配器
myHorizontalView.initDatas(adapter);
//添加滾動(dòng)回調(diào)
myHorizontalView
.setCurrentImageChangeListener(new CurrentImageChangeListener() {
@Override
public void onCurrentImgChanged(int position, View viewIndicator) {
Log.e("==============","=============== " + position);
mImageView.setImageBitmap(bitmapList.get(position));
viewIndicator.setBackgroundColor(Color.parseColor("#AA024DA4"));
}
});
//添加點(diǎn)擊回調(diào)
myHorizontalView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
mImageView.setImageBitmap(bitmapList.get(position));
view.setBackgroundColor(Color.parseColor("#AA024DA4"));
}
});
}
public static Bitmap readBitMap(Context mContext, int resId) {
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.RGB_565;
opt.inPurgeable = true;
opt.inInputShareable = true;
InputStream is = mContext.getResources().openRawResource(resId);
return BitmapFactory.decodeStream(is, null, opt);
}
}
總結(jié)
以上是生活随笔為你收集整理的android水平滚动条,Android使用HorizontalScrollView实现水平滚动的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pat数素数 20 c语言,PAT乙级C
- 下一篇: android sina oauth2.