笔记82 | Launcher常用修改(重修版)
1.替换APP图标
2.自定义APP/小部件栏
3.直接控制APP图标大小
4.当需要在APP列表界面给APP图标加个外框时,此属性用于调节内边距
5.用于APP列表界面APP排列的行数与列数
6.调节APP与名称的距离
7.主界面可以滑动的页面
8.主界面快捷图标的排列行数与列数
9.控制APP所在布局所占宽度和高度
10.主界面切换条
10.1全界面
10.2Workspace
11.默认壁纸
public void initWallPaper(){
SharedPreferences sp = getSharedPreferences(TAG, Context.MODE_PRIVATE);
if(!sp.getBoolean("initwallpaper", false))
{
WallpaperManager wpm = (WallpaperManager)getSystemService(
Context.WALLPAPER_SERVICE);
try {
wpm.setResource(R.drawable.bg);
} catch (IOException e) {
e.printStackTrace();
}
sp.edit().putBoolean("initwallpaper", true).commit();
}
}
12.添加收音内容插件
12.0 系统默认的插件
12.1
//mHandler中接收收音数据
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0x0401) {
byte obj [] = (byte[]) msg. obj;
int band = obj [1 ] & 0x7;
int freq = ((obj[ 2] & 0xff)<< 8) | ( obj[ 3] & 0xff);
if((mBand != band ) || (mFreq != freq)) {
mBand = band ;
mFreq = freq ;
showRadio();
}
}
}
};
private int mBand;
private int mFreq;
private void showRadio(){
if (mBand == 2 ) {
((TextView)findViewById(R.id.tv_radio)).setText(getResources().getString(R.string.am1)+" "+String .format( Locale .US , "%d" , mFreq ));
} else {
((TextView)findViewById(R.id.tv_radio)).setText(getResources().getString(R.string.fm)+" "+String .format( Locale .US , "%.2f" , (float )(mFreq / ( float) 100.0)));
}
}
12.2
//onClick中发切换指令
case R.id.fm_next:{
mTWUtil.write(0x0301, (1<<7) | (1<<6), 0x01);
mTWUtil.write(0x0401, 0x01, 0x00);
break;
}
case R.id.fm_prev:{
mTWUtil.write(0x0301, (1<<7) | (1<<6), 0x01);
mTWUtil.write(0x0401, 0x01, 0x01);
break;
}
13.添加时间内容插件
13.0 系统默认的插件
<appwidget
launcher:className="com.android.launcher2.TimeWidget"
launcher:container="-100"
launcher:packageName="com.android.launcher"
launcher:screen="0"
launcher:spanX="3"
launcher:spanY="2"
launcher:x="0"
launcher:y="0" />
13.1 获取时间内容 年月日 星期 上/下午
protected void showDate() {
try {
Calendar c = Calendar.getInstance();
int h = c.get(Calendar.HOUR_OF_DAY);
int m = c.get(Calendar.MINUTE);
int apm = c.get(Calendar.AM_PM);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd"); //可以定制显示时间格式 "yyyy-MM-dd" "yyyy/MM/dd"
Date currentTime = new Date();
String dateString = formatter.format(currentTime);
//String d = DateFormat.getDateInstance().format(c.getTime()); //默认显示时间格式
String w = c.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
((TextView)findViewById(R.id.tvDate)).setText(dateString+" "+w);
boolean is24 = android.text.format.DateFormat.is24HourFormat(this);
if(is24){
((TextView)findViewById(R.id.tvampm)).setVisibility(View.GONE);
}else{
((TextView)findViewById(R.id.tvampm)).setVisibility(View.VISIBLE);
if(apm == 1){
((TextView)findViewById(R.id.tvampm)).setText(getResources().getString(R.string.pm));
}else{
((TextView)findViewById(R.id.tvampm)).setText(getResources().getString(R.string.am));
}
if(h<=12){
if(h==0)
h=12;
}else if(h>12){
h = h-12;
}
}
if(h<10){
((ImageView)findViewById(R.id.tvTime0)).getDrawable().setLevel(0);
((ImageView)findViewById(R.id.tvTime1)).getDrawable().setLevel(Integer.parseInt((h+"").substring(0, 1)));
}else{
((ImageView)findViewById(R.id.tvTime0)).getDrawable().setLevel(Integer.parseInt((h+"").substring(0, 1)));
((ImageView)findViewById(R.id.tvTime1)).getDrawable().setLevel(Integer.parseInt((h+"").substring(1, 2)));
}
if(m<10){
((ImageView)findViewById(R.id.tvTime2)).getDrawable().setLevel(0);
((ImageView)findViewById(R.id.tvTime3)).getDrawable().setLevel(Integer.parseInt((m+"").substring(0, 1)));
}else{
((ImageView)findViewById(R.id.tvTime2)).getDrawable().setLevel(Integer.parseInt((m+"").substring(0, 1)));
((ImageView)findViewById(R.id.tvTime3)).getDrawable().setLevel(Integer.parseInt((m+"").substring(1, 2)));
}
} catch (Exception e) {
Log.i("md", "e: "+e.toString());
e.printStackTrace();
}
}
13.2 时间更新监听
13.2.1 动态注册监听广播
IntentFilter t = new IntentFilter();
t.addAction(Intent.ACTION_TIME_TICK);
t.addAction(Intent.ACTION_TIME_CHANGED);
t.addAction(Intent.ACTION_TIMEZONE_CHANGED);
registerReceiver(mTimeReceiver, t);
13.2.2 监听广播
private BroadcastReceiver mTimeReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
showDate();
}
};
14. 添加音乐内容插件
14.0系统默认的插件
<appwidget
launcher:className="com.tw.music.MusicWidgetProvider"
launcher:container="-100"
launcher:packageName="com.tw.music"
launcher:screen="0"
launcher:spanX="3"
launcher:spanY="2"
launcher:x="3"
launcher:y="0" />