一:ScrollView:滚动视图
滚动视图用于为其他组建添加滚动条,在默认的情况下,当窗体中内容比较多的时候,而且一个屏幕装不下,超出的部分不能被用户看到.因为android中布局管理器本身没有提供滚动屏幕的功能,如果想让屏幕滚动,则需要使用滚动视图.
滚动视图是FrameLayout的子类,因此,在滚动视图中,可以添加任何想要放进去的组件,但是一个滚动视图中只能放进去一个组件,如果想让放进去多个组件,可以先放一个布局,然后把想放进去的组件放入布局中,其中,应用比较广泛的是线性布局管理器。
纵向可滚动的视图(上下滑动):
<ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbarThumbVertical="@color/colorPrimaryDark" <--滚动条的颜色 android:scrollbarTrackVertical="@color/colorAccent" <--滚动条区域的背景颜色 > <TextView android:text="HelloWorld!" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </ScrollView>
横向可滚动的视图(左右滑动):
android:scrollbarThumbHorizontal="" 设置滚动条的颜色
android:scrollbarTrackHorizontal="" 设置滚动条的背景
public void scrollTo(int x,int y)
设置当前视图滚动到的位置
x:滚动到的x位置
y:滚动到的y位置
例如:
private Button btn; private WebView wv; private ImageView iv; private RelativeLayout rl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = findViewById(R.id.btn); rl = findViewById(R.id.rl); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { rl.scrollTo(-30,-30); } }); }
点击按钮,然后rl的位置发生改变(一次性)
private Button btn; private WebView wv; private ImageView iv; private RelativeLayout rl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = findViewById(R.id.btn); rl = findViewById(R.id.rl); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { rl.scrollBy(-30,-30); } }); }
大家可以再试试这个,找找scrollBy与scrollTo的区别
scrollTo(x,y)是滚动到设置的位置
而scrollBy(x,y)是偏移量,每次点击都在原来的基础上再偏移
一:ScrollView:滚动视图
android资源大致分为两种:
1.res目录下的资源:可编译的资源文件:这种资源文件会在R.java这样一个文件中自动生成资源文件的id,所以访问这种资源比较简单,可以直接通过R.id.xxx等等方式调用。注意:在res目录下有个特殊的文件夹交错raw这个文件里的资源不会被编译,但会生成id
2.Assets文件夹下的资源文件 原始资源文件:系统在编译的时候不会编译这个文件夹下的资源。直接打包,也不会生成id,所以不能通过id进行调用
创建Assets文件夹的步骤:
1.获取Assets文件夹的管理类
AssetManager manager = getAssets();
2.遍历文件夹下的资源列表名称
String[ ] list = manager.list("文件夹名称");
3.获取Assets文件夹的绝对路径(可以直接复制使用):
file:///android_asset/
4.获取Assets文件夹下的图片
AssetManager am = getAssets();try { for (String s : str) { Log.i("haha",s); } InputStream is = am.open("html/pic.jpg"); Bitmap bitmap = BitmapFactory.decodeStream(is); iv.setImageBitmap(bitmap);} catch (IOException e) { e.printStackTrace();}
5.获取Assets文件夹下的音频
try { AssetFileDescriptor adf = getAssets().openFd("Luhan.mp4"); MediaPlayer player = new MediaPlayer(); player.setDataSource(adf.getFileDescriptor(),adf.getStartOffset(),adf.getLength()); player.prepare(); player.start(); } catch (IOException e) { e.printStackTrace(); }