android qq侧滑,Android实现QQ的侧滑置顶、删除
Android实现QQ的侧滑置顶、删除
本博客向大家介绍Android实现QQ侧滑(删除、置顶等)功能。主要包括Android实现QQ侧滑(删除、置顶等)功能。本博客里面的全部依赖于Android里面的原生控件,不需要依赖于第三方架包来实现。
1.效果图展示
2.代码实现
目标结构
布局文件activity_main.xml
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">
android:id="@+id/line1"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
布局文件item.xml
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="none">
android:id="@+id/line0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center">
android:layout_width="75dp"
android:layout_height="75dp"
android:src="@mipmap/touxiang" />
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:paddingLeft="15dp"
android:text=""
android:textSize="15dp" />
android:id="@+id/tv_zhidin"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#bfbfbf"
android:gravity="center"
android:paddingLeft="15dp"
android:paddingTop="10dp"
android:paddingRight="15dp"
android:paddingBottom="10dp"
android:text="置顶"
android:textColor="#fff" />
android:id="@+id/tv_shanchu"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#f00"
android:gravity="center"
android:paddingLeft="15dp"
android:paddingTop="10dp"
android:paddingRight="15dp"
android:paddingBottom="10dp"
android:text="删除"
android:textColor="#fff" />
自定义控件BaseHorizontalScrollView.java
package com.example.qqclient;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.HorizontalScrollView;
public class BaseHorizontalScrollView extends HorizontalScrollView {
private float mOffsetX,mOffsetY; //横纵偏移
private float mLastPostX,mLastPostY; //上次落点
private int mInterval;
public BaseHorizontalScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptHoverEvent(MotionEvent event) {
boolean result;
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
mOffsetX=0.0F;
mOffsetY=0.0F;
mLastPostX=event.getX();
mLastPostY=event.getY();
result=super.onInterceptHoverEvent(event);
break;
default://其余动作
float thisPosX=event.getX();
float thisPosY=event.getY();
mOffsetX+=Math.abs(thisPosX-mLastPostX);//X轴偏差
mLastPostY+=Math.abs(thisPosY-mLastPostY);//Y轴偏差
mLastPostX=thisPosX;
mLastPostY=thisPosY;
if (mOffsetX
result=true;
}else{
result=false;
}
break;
}
return result;
}
}
4.适配器MyAdapter.java
package com.example.qqclient;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MyAdapter extends BaseAdapter {
List list=new ArrayList<>();
Context context;
public void set(List list) {
this.list = list;
notifyDataSetChanged();
}
public MyAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
View view1 = LayoutInflater.from(context).inflate(R.layout.item, null);
ViewHolder holder = new ViewHolder(view1);
LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) holder.title.getLayoutParams();
linearParams.width = MainActivity.widthPixels;// 控件的宽强制设置
holder.title.setLayoutParams(linearParams); //使设置好的布局参数应用到控件
holder.title.setText(list.get(i));
holder.tv_shanchu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
list.remove(i);
notifyDataSetChanged();
}
});
holder.tv_zhidin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String title1=list.get(i);
list.remove(i);
list.add(0,title1);
notifyDataSetChanged();
}
});
return view1;
}
public static
class ViewHolder {
public View rootView;
public TextView title;
public TextView tv_zhidin;
public TextView tv_shanchu;
public LinearLayout line0;
public ViewHolder(View rootView) {
this.rootView = rootView;
this.title = (TextView) rootView.findViewById(R.id.title);
this.tv_zhidin = (TextView) rootView.findViewById(R.id.tv_zhidin);
this.tv_shanchu = (TextView) rootView.findViewById(R.id.tv_shanchu);
this.line0 = (LinearLayout) rootView.findViewById(R.id.line0);
}
}
}
主文件MainActivity.java
package com.example.qqclient;
import android.os.Bundle;
import android.view.Display;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private ListView line1;
//获得屏幕的宽度
public static int widthPixels=0;
MyAdapter adapter;
private ArrayList list=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
//获得屏幕宽度
Display display = getWindowManager().getDefaultDisplay();
widthPixels = display.getWidth()-45;
initDate();
}
private void initDate() {
list.add("小明");
list.add("小红");
list.add("小亮");
list.add("小花");
adapter=new MyAdapter(MainActivity.this);
adapter.set(list);
line1.setAdapter(adapter);
}
private void initView() {
line1 = (ListView) findViewById(R.id.line1);
}
}
android qq侧滑,Android实现QQ的侧滑置顶、删除相关推荐
- autojs模仿qq消息列表侧拉置顶删除菜单
牙叔教程 简单易懂 效果展示 思路 使用安卓qq可知, 消息列表每次只能有一个侧拉菜单被打开 autojs版本 9.0.4 你将学到以下知识点 RecyclerView的基本使用 拦截rv的触摸事件 ...
- android备忘录_苹果备忘录怎样把内容置顶?有置顶功能的备忘录便签
苹果手机是很多人都比较喜欢的一个电子设备,人们之所以喜欢它,除了它精致的外观之外,还有更大一部分原因是因为它的性能非常强大,并且有很多实用的工具软件可以安装,备忘录就是其中一种.苹果备忘录怎样把内容置 ...
- Android集成环信IM,实现聊天置顶功能
首先是,要实现置顶聊天,那么我们就要有两个List集合,一个是置顶的,一个是不是置顶的.这里,环信给出了EMConversation的一个方法,带大家看看技术文档. 看下这个文档里面说的非常清楚,也就 ...
- qq五笔linux,QQ五笔 - 五笔小字典 QQ绑定很实用
九. 智能调频.空码检索.词序固定 在QQ五笔中还有一些小亮点,比如它可以根据"最近输入"."输入次数"对候选词排序.同时为了加快检索速度,默认只在常用字库(G ...
- android环信删除会话列表,关于会话列表的置顶聊天
最近搞完了置顶聊天,来写篇文章分享下经验. 其实刚刚开始 ,我自己在想,我是不是要去做出类似于QQ那种的滑动,然后显示置顶和删除. 图1 我就开始写,写完了之后然后去置顶,取消置顶,其实是有用的,但是 ...
- Android自定义View之仿QQ侧滑菜单实现
最近,由于正在做的一个应用中要用到侧滑菜单,所以通过查资料看视频,学习了一下自定义View,实现一个类似于QQ的侧滑菜单,顺便还将其封装为自定义组件,可以实现类似QQ的侧滑菜单和抽屉式侧滑菜单两种菜单 ...
- 名片夹android布局代码,Android自定义布局实现仿qq侧滑部分代码
自定义布局实现仿qq侧滑部分Android代码,供大家参考,具体内容如下 实现说明: 通过自定义布局实现: SlidingLayout继承于 HorizontalScrollView /** * Cr ...
- android开发之仿QQ拖拽界面效果(侧滑面板)
仿QQ拖拽界面效果(侧滑面板),我们一般继承Layout,不会直接去继承ViewGroup,而是继承FrameLayout,为什么五大布局我们偏偏只继承FrameLayout呢? 第一,FrameLa ...
- android仿qq布局,Android自定义布局实现仿qq侧滑部分代码
自定义布局实现仿qq侧滑部分android代码,供大家参考,具体内容如下 实现说明: 通过自定义布局实现: slidinglayout继承于 horizontalscrollview /** * cr ...
- Android的SwipeToDismiss第三方开源框架模拟QQ对话列表侧滑删除,置顶,将头像图片圆形化处理。...
<Android SwipeToDismiss:左右滑动删除ListView条目Item> Android的SwipeToDismiss是github上一个第三方开源框架(github ...
最新文章
- 从零开始,教你征战Kaggle竞赛
- Google综述:细数Transformer模型的17大高效变种
- 构建未来情报体系—— AI及大数据时代情报分析人员的战略价值
- 爬虫框架Scrapy的第一个爬虫示例入门教程
- boost::geometry::discrete_frechet_distance用法的测试程序
- 使用FIT2CLOUD在青云QingCloud快速部署和管理Kubernetes集群
- 10.15 lzxkj
- java课程设计拼图_基于Java拼图游戏的设计与实现(含录像)
- java设计模式之备忘_[译]Java 设计模式之备忘录
- 为什么MySQL不建议使用NULL作为列默认值?
- React Native 首次加载白屏优化
- Android系统信息获取 之九:TelephonyManager类
- Altium Designer 入门教程
- 配置修改Tomcat端口
- UVA-816 Abbott's Revenge (bfs)
- 如何将Excel一页转PDF变多页?好用的PDF转换工具推荐
- 小明一家过桥_「小明一家人过桥问题」如何用编程解决?
- redis中 Could not get a resource from the pool 异常解决
- 登录TOM163VIP邮箱的几种方式,以及常见问题有哪些?
- 如何将谷歌浏览器的插件下载到本地?
热门文章
- 动态范围Bitmap的参考实现
- 完全解析为什么0.1+0.2=0.30000000000000004
- 从零开始的RVOS: Referring Video Object Segmentation
- 公司新来了个软件测试工程师,一副毛头小子的样儿,哪想到是新一代卷王...
- POJ 3295.Tautology
- 垃圾短信分类java_有了这个神器,快速告别垃圾短信邮件
- 生活大爆炸第六季 那些精妙的台词翻译
- c语言日期计算器程序代码,用C语言写一个日期计算器
- python 实现日期计算器
- EM2 MP1 Vowel and Consonant Teacher:Ashley