android 滑动出按钮,Android 滑动显示按钮,点击按钮置顶

我们在浏览一些列表时,有时会一直向下滑动。

当滑动过后,突然想回到上面,还得滑上去,特别麻烦。

针对于这点,一个好的办法就是:滑动显示出按钮,点击按钮置顶

实现此功能的简单思路:

1.监听ScrollView 的onScrollChanged 滚动改变回调

2.当滚动距离大于某个值时显示置顶按钮(即我们显示图片)

3.当点击置顶按钮时能让ScrollView滑动到顶部

cad7bd78877a86b969198a16e5e68e96.png

XML布局

MainActivity

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private ScrollView scrollView;// scrollView数据列表

private Button toTopBtn;// 返回顶部的按钮

private int scrollY = 0;// 标记上次滑动位置

private View contentView;

private final String TAG = "qq986945193";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

}

/**

* 初始化视图

*/

private void initView() {

scrollView = (ScrollView) findViewById(R.id.my_scrollView);

if (contentView == null) {

contentView = scrollView.getChildAt(0);

}

toTopBtn = (Button) findViewById(R.id.top_btn);

toTopBtn.setOnClickListener(this);

/******************** 监听ScrollView滑动停止 *****************************/

scrollView.setOnTouchListener(new View.OnTouchListener() {

private int lastY = 0;

private int touchEventId = -9983761;

Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

View scroller = (View) msg.obj;

if (msg.what == touchEventId) {

if (lastY == scroller.getScrollY()) {

handleStop(scroller);

} else {

handler.sendMessageDelayed(handler.obtainMessage(

touchEventId, scroller), 5);

lastY = scroller.getScrollY();

}

}

}

};

public boolean onTouch(View v, MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_UP) {

handler.sendMessageDelayed(

handler.obtainMessage(touchEventId, v), 5);

}

return false;

}

/**

* ScrollView 停止

*

* @param view

*/

private void handleStop(Object view) {

Log.i(TAG, "handleStop");

ScrollView scroller = (ScrollView) view;

scrollY = scroller.getScrollY();

doOnBorderListener();

}

});

/***********************************************************/

}

/**

* ScrollView 的顶部,底部判断:

*

* 其中getChildAt表示得到ScrollView的child View, 因为ScrollView只允许一个child

* view,所以contentView.getMeasuredHeight()表示得到子View的高度,

* getScrollY()表示得到y轴的滚动距离,getHeight()为scrollView的高度。

* 当getScrollY()达到最大时加上scrollView的高度就的就等于它内容的高度了啊~

*

* @param

*/

private void doOnBorderListener() {

// 底部判断

if (contentView != null

&& contentView.getMeasuredHeight() <= scrollView.getScrollY()

+ scrollView.getHeight()) {

toTopBtn.setVisibility(View.VISIBLE);

Log.i(TAG, "bottom");

}

// 顶部判断

else if (scrollView.getScrollY() == 0) {

Log.i(TAG, "top");

} else if (scrollView.getScrollY() > 30) {

toTopBtn.setVisibility(View.VISIBLE);

Log.i(TAG, "test");

}

}

/**

* 下面我们看一下这个函数: scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部

* scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部

*

*

* 需要注意的是,该方法不能直接被调用 因为Android很多函数都是基于消息队列来同步,所以需要一部操作,

* addView完之后,不等于马上就会显示,而是在队列中等待处理,虽然很快, 但是如果立即调用fullScroll,

* view可能还没有显示出来,所以会失败 应该通过handler在新线程中更新

*

*/

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

switch (v.getId()) {

case R.id.top_btn:

scrollView.post(new Runnable() {

@Override

public void run() {

// scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部

// scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部

//

// 需要注意的是,该方法不能直接被调用

// 因为Android很多函数都是基于消息队列来同步,所以需要一部操作,

// addView完之后,不等于马上就会显示,而是在队列中等待处理,虽然很快,但是如果立即调用fullScroll, view可能还没有显示出来,所以会失败

// 应该通过handler在新线程中更新

scrollView.fullScroll(ScrollView.FOCUS_UP);

}

});

toTopBtn.setVisibility(View.GONE);

break;

}

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Studio中的滑动按钮是指Switch控件,它是一种开关控件,可以在打开和关闭之间切换。用户可以通过滑动按钮来改变其状态。在布局文件中,可以使用Switch标签来创建滑动按钮。在代码中,可以使用Switch类来控制滑动按钮的状态和行为。 ### 回答2: Android Studio滑动按钮是一个非常流行的用户界面元素,用于控制应用程序中的设置和功能开关。滑动按钮分为开关按钮和拖动按钮两种。使用滑动按钮可以提供一种更直观、更易于使用和更现代的选择方式,同时还可以增加应用程序的可用性和易用性。 开关按钮可以让用户轻松开启或关闭应用程序的某些设置或功能,例如启用或禁用通知、开启或关闭音频播放、启用或禁用数据同步等。在开关按钮上,用户可以看到当前设置状态(开启或关闭),并可以通过滑动按钮来更改它们。 拖动按钮可以让用户设置某些选项的值,例如音量或亮度等级。拖动按钮可以移动到不同的位置来反映不同的值。用户可以向左或向右拖动按钮来更改选项的值。在滑动按钮上,用户可以看到当前选项设置的值,并可以通过滑动按钮来更改它们。 Android Studio提供了一个名为Switch的视图组件,用于创建开关按钮。该组件可以通过XML代码或代码方式创建,并可以设置开启和关闭状态的文本、颜色和图标等属性。 另一方面,Android Studio还提供了SeekBar组件,用于创建拖动按钮。您可以通过XML代码或代码方式创建SeekBar,并设置最小值、最大值、当前值、进度条颜色和拖动按钮的样式等属性。 总的来说,Android Studio滑动按钮非常易于使用和灵活,开发者可以将它们嵌入到各种应用程序中,以提供更人性化的用户体验。 ### 回答3: Android Studio中的滑动按钮(Switch)是一种常见的UI控件,它允许用户通过滑动操作来切换某种状态。滑动按钮看起来像一个小型开关,但是其显示的状态可以是开、关或未确定状态。 使用Android Studio创建一个滑动按钮很简单,只需在XML布局文件中添加以下代码: ``` <Switch android:id="@+id/my_switch" android:layout_width="wrap_content" android:layout_height="wrap_content" /> ``` 这里的ID和布局宽度和高度可以根据实际需要进行修改。 接下来,我们可以在Activity中通过findViewById方法获取到这个滑动按钮,并添加一个OnCheckedChangeListener来监听状态改变事件: ``` Switch mySwitch = (Switch) findViewById(R.id.my_switch); mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // 如果滑动按钮被切换到打开状态 if (isChecked) { // 执行你想要的操作 } else { // 执行另一种操作 } } }); ``` 在onCheckedChanged方法中,我们可以根据isChecked的值来判断滑动按钮的状态,从而执行相应的操作。 另外,我们还可以在XML布局文件中添加一些属性来自定义滑动按钮的外观,例如: - android:focusable="false":滑动按钮不接受焦点,点击事件将被忽略。 - android:textOff="关闭":指定了关闭状态下的文本。 - android:textOn="打开":指定了打开状态下的文本。 - android:thumbTint="#FF0000":指定了滑块的颜色。 - android:trackTint="#00FF00":指定了轨道的颜色。 总之,Android Studio中的滑动按钮是一个非常实用的UI控件,可以帮助我们实现许多功能。您可以在UI设计中灵活运用滑动按钮,为用户提供更好的交互体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值