效果图

代码

  1. 添加依赖
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'implementation 'androidx.recyclerview:recyclerview:1.1.0'
  1. AppInfo.java
import android.graphics.drawable.Drawable;/** * created on 2020/8/3 20:22 * * @author Scarf Gong */public class AppInfo {    private Drawable image;    private String appName;    private String packageName;    public AppInfo() {    }    public Drawable getImage() {        return image;    }    public void setImage(Drawable image) {        this.image = image;    }    public String getAppName() {        return appName;    }    public void setAppName(String appName) {        this.appName = appName;    }    public String getPackageName() {        return packageName;    }    public void setPackageName(String packageName) {        this.packageName = packageName;    }}
  1. AppUtils.java
/** * created on 2020/8/3 20:24 * * @author Scarf Gong */public class AppUtils {    private static final String TAG = "AppUtils";    public static List<AppInfo> scanLocalInstallAppList(PackageManager packageManager) {        List myAppInfos = new ArrayList();        try {            List packageInfos = packageManager.getInstalledPackages(0);            for (int i = 0; i < packageInfos.size(); i++) {                PackageInfo packageInfo = (PackageInfo) packageInfos.get(i);                //过滤掉系统app                if ((ApplicationInfo.FLAG_SYSTEM & packageInfo.applicationInfo.flags) != 0) {                    continue;                }                AppInfo myAppInfo = new AppInfo();                String appName = packageInfo.applicationInfo.loadLabel(packageManager).toString();                myAppInfo.setAppName(appName);                myAppInfo.setPackageName(packageInfo.packageName);                if (packageInfo.applicationInfo.loadIcon(packageManager) == null) {                    continue;                }                myAppInfo.setImage(packageInfo.applicationInfo.loadIcon(packageManager));                myAppInfos.add(myAppInfo);            }        } catch (Exception e) {            Log.e(TAG, "获取应用包信息失败");        }        return myAppInfos;    }}
  1. AppAdapter.java
/** * created on 2020/8/3 20:26 * * @author Scarf Gong */public class AppAdapter extends BaseQuickAdapter<AppInfo, BaseViewHolder> {    public AppAdapter(int layoutResId, @Nullable List<AppInfo> data) {        super(layoutResId, data);    }    @Override    protected void convert(BaseViewHolder helper, AppInfo item) {        helper.setImageDrawable(R.id.iv_img,item.getImage());        helper.setText(R.id.tv_name,item.getAppName());        helper.addOnClickListener(R.id.ll_layout);    }}
  1. MainActivity.java
public class MainActivity extends AppCompatActivity {    private RecyclerView mRecyclerView;    private AppAdapter mAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initAdapter();    }    private void initView() {        mRecyclerView = findViewById(R.id.recyclerView);    }    private void initAdapter() {        final List<AppInfo> appInfos = AppUtils.scanLocalInstallAppList(MainActivity.this.getPackageManager());        mAdapter = new AppAdapter(R.layout.item_app_info,appInfos);        mAdapter.openLoadAnimation();        mAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {            @Override            public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {                String packageName = appInfos.get(position).getPackageName();                openApp(packageName);            }        });        mRecyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this,3));        mRecyclerView.setAdapter(mAdapter);    }    private void openApp(String packageName) {        Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);        startActivity(intent);    }}

布局文件

  1. item_app_info.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:id="@+id/ll_layout"    android:layout_width="120dp"    android:layout_height="120dp"    android:layout_gravity="center"    android:gravity="center">    <ImageView        android:id="@+id/iv_img"        android:layout_width="90dp"        android:layout_height="90dp"        android:src="@mipmap/ic_launcher"/>    <TextView        android:id="@+id/tv_name"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="16sp"        android:text="android"        android:textColor="#000"/>LinearLayout>

更多相关文章

  1. android 资源获取
  2. Android获取、设置桌面
  3. android 获取 imei号码
  4. Android取消EditText自动获取焦点
  5. Android(安卓)ListView 长按列表弹出菜单
  6. linux下获取环境变量(Android)
  7. android 获取 imei号码
  8. Android(安卓)获取包名,版本信息
  9. 获取android手机基本信息

随机推荐

  1. Android腾讯微薄客户端开发教程汇总
  2. Android(安卓)通过NTP服务器自动获取时间
  3. ImageView---属性android:background与andro
  4. Android开发工具下载地址
  5. android(2)——Structure of an Android
  6. vue.js的h5页面与android(WebViewJavascr
  7. ffmpeg htc
  8. Android Studio 配置
  9. Android RelativeLayout常用属性~
  10. Android 怎么给图片添加一个边框