吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9325|回复: 15
收起左侧

[其他转载] 一个很小的桌面,安卓8.0能用,安卓1.6也能用 主要源码

[复制链接]
djwdj 发表于 2018-1-20 15:00
本帖最后由 djwdj 于 2018-1-20 15:07 编辑

/*
全部手机都能用的桌面 源码


作者:基哥


AndroidManifest.xml重要配置:
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
壁纸背景(三选一):
android:theme="@android:style/Theme.Wallpaper"
android:theme="@android:style/Theme.Wallpaper.NoTitleBar"
android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen"
*/


package l;


import android.app.*;
import android.content.*;
import android.content.pm.*;
import android.os.*;
import android.view.*;
import android.widget.*;
import android.widget.AdapterView.*;
import java.util.*;
import android.util.*;
import android.net.*;
import android.provider.*;
import android.graphics.drawable.*;
import java.text.*;


public class l extends Activity implements OnItemClickListener,OnItemLongClickListener,Comparator<a>
{
    GridView g;
        int w,h,p;
        List<a> a=new ArrayList<a>();
       
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
                /*
                 在AndroidManifest.xml添加


                 android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen"


                 再用setTheme,就型成一种启动效果
                 */
                setTheme(android.R.style.Theme_Wallpaper_NoTitleBar);
               
                //状态栏透明
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
                {
                        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
                        getWindow().setStatusBarColor(0);
                }else if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT)
                        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
               
                //获取屏幕参数
                DisplayMetrics dm = new DisplayMetrics();
                dm = getResources().getDisplayMetrics();
                w = dm.widthPixels;
                h = dm.heightPixels;
                p=w/60;
               
                //获取桌面列表
                List<ResolveInfo>r = getPackageManager().queryIntentActivities(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER), 0);
               
                //提取桌面关键信息
                for(int i=0;i<r.size();i++)
                {
                        ActivityInfo ai=r.get(i).activityInfo;
                        a.add(new a(
                        ai.loadLabel(getPackageManager()),
                        ai.loadIcon(getPackageManager()),
                        ai.packageName,
                        ai.name));
                }
               
                //对桌面图标进行排序
                Collections.sort(a, this);
               
                g = new GridView(this);
        g.setAdapter(new b());
                g.setNumColumns(5);
                g.setOnItemClickListener(this);
                g.setOnItemLongClickListener(this);
        
                addContentView(g,new WindowManager.LayoutParams());
    }
       
        //点击事件
        @Override
        public void onItemClick(AdapterView<?> av, View v, int i, long l) {
                startActivity(new Intent().setComponent(new ComponentName(a.get(i).p(), a.get(i).c())));
        }
       
        //长按事件,可去除
        @Override
        public boolean onItemLongClick(AdapterView<?> av, View v, int i, long l)
        {
                String s=a.get(i).p();
               
                Intent it = new Intent();
                it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                if (Build.VERSION.SDK_INT >= 9) {
                        it.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                        it.setData(Uri.fromParts("package", s, null));
                } else if (Build.VERSION.SDK_INT <= 8) {
                        it.setAction(Intent.ACTION_VIEW);
                        it.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
                        it.putExtra("com.android.settings.ApplicationPkgName", s);
                }
                startActivity(it);


                return true;
        }
       
        //排序规则
        @Override
        public int compare(a a, a b)
        {
                Collator c = Collator.getInstance(java.util.Locale.CHINA);
                if (c.compare(a.t(), b.t())>0){  
                        return 1;  
                }else if (c.compare(a.t(), b.t())<0){  
                        return -1;  
                }
                return 0;
        }
       
        //重写退出事件,本程序为主桌面时,可防止误退导致手机出错
        @Override
        public void finish(){}
       
        //桌面图标的主要内容
        class b extends BaseAdapter {


        @Override
        public int getCount(){return a.size();}


        @Override
        public Object getItem(int i){return a.get(i);}


        @Override
        public long getItemId(int i){return i;}


        @Override
        public View getView(int id, View v, ViewGroup vg) {


                        c c;
                        //生成桌面小格框架
                        if(v == null){
                                c = new c();
                               
                                ImageView i  ;
                                LinearLayout l;
                                TextView t;
                               
                                l=new LinearLayout(getApplication());
                                l.setOrientation(LinearLayout.VERTICAL);
                                l.setGravity(Gravity.CENTER);


                                //桌面图标
                                i = new ImageView(getApplication());
                                i.setPadding(p,p,p,p);
                                i.setScaleType(ImageView.ScaleType.FIT_CENTER);
                                i.setLayoutParams(new GridView.LayoutParams(w/6, w/6));
                                l.addView(i);


                                //应用名
                                t=new TextView(getApplication());
                                t.setMaxLines(1);
                                t.setGravity(Gravity.CENTER);
                                l.addView(t);


                                c.i=i;
                                c.t=t;
                                v=l;
                               
                                v.setTag(c);
                               
            } else c=(c) v.getTag();
                       
                        //写入图标和应用名
                        c.i.setImageDrawable(a.get(id).i());
                        c.t.setText(a.get(id).t());
                       
            return v;
        }
    }
}


//自定义列表
class a{
        CharSequence t;
        Drawable i;
        String p,c;


        a(CharSequence t,Drawable i, String p, String c)
        {
                this.t=t;
                this.i=i;
                this.p=p;
                this.c=c;
        }
       
        CharSequence t(){return t;}
        Drawable i(){return i;}
        String p(){return p;}
        String c(){return c;}
}


//桌面小格的框架
class c{ImageView i;TextView t;}


/*
        全部代码都完成了
       
        代码由【基哥科技】创作。
        嘻嘻,团队目前只有基哥一人。
        代码不多,但也很用心研究了半个月。
*/

app.zip

3.96 KB, 下载次数: 107, 下载积分: 吾爱币 -1 CB

项目源码

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

fengshu 发表于 2018-10-9 14:07

新建一个demo,再把这个文件覆盖就能运行了。这没有布局文件,代码中有说明获取每行几列
fengshu 发表于 2018-10-9 14:06
wj2008wh 发表于 2018-5-28 14:15
用什么工具编译?

用  Android studio 即可,然后新建一个demo,再把这个文件覆盖就能运行了。
xyz833 发表于 2018-1-20 15:15
wwjahl 发表于 2018-1-20 15:23
这个有啥作用啊
jxh 发表于 2018-1-20 15:38
可以 ,先收藏了  等以后下学安卓了,在进行学习
Maolping 发表于 2018-1-20 15:56
建议适当贴出部分图片
ning2016 发表于 2018-1-24 17:24
感谢分享,下载看看
fjflgc 发表于 2018-1-31 23:10
感谢分享,下来看看
mossfly 发表于 2018-2-2 16:49
建议贴几张效果图
baibao023 发表于 2018-2-2 16:54
好东西,谢谢分享
lqlq07 发表于 2018-2-2 16:58 来自手机
不错的源码,谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 15:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表