天天看點

android tv 自定義頻道,Android TV自定義通用标題欄(組合控件)

一,天氣,圖檔,網絡狀态,時間自動重新整理,廣告輪播。

package spa.nabo.com.nabospa.view;

import android.content.Context;

import android.os.Handler;

import android.os.Message;

import android.support.annotation.Nullable;

import android.util.AttributeSet;

import android.view.LayoutInflater;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.TextView;

import com.bumptech.glide.Glide;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.TimeZone;

import java.util.logging.LogRecord;

import spa.nabo.com.nabospa.R;

public class title extends LinearLayout {

ImageView logoIv; //logo

TextView addrTv; //位址

ImageView weatherIv;//天氣

TextView tempTv; //溫度

TextView adveTv; //廣告。

ImageView networkIv;//網絡狀态。

TextView dateTv; //日期

public Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

//這裡重新整理UI

dateTv.setText(netTime());

}

};

public title(Context context) {

super(context);

}

public title(Context context, @Nullable AttributeSet attrs) {

super(context, attrs);

//加載布局。

LayoutInflater.from(context).inflate(R.layout.title, this);

//擷取控件

logoIv = findViewById(R.id.logo_iv);

addrTv = findViewById(R.id.addr_tv);

weatherIv = findViewById(R.id.weather_iv);

tempTv = findViewById(R.id.temp_tv);

adveTv = findViewById(R.id.adve_tv);

networkIv = findViewById(R.id.network_iv);

dateTv = findViewById(R.id.date_tv);

adveTv.setSelected(true);

}

public title(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

public title(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {

super(context, attrs, defStyleAttr, defStyleRes);

}

public void setLogoIv(String img) {

Glide.with(getContext()).load(img).into(logoIv);

}

public void setLogoIv(int img) {

Glide.with(getContext())

.load(img)

.into(logoIv);

}

public void setAddrTv(String addr) {

addrTv.setText(addr);

}

public void setAdveTv(String adve) {

adveTv.setText(adve);

}

public void setWeatherIv(int weathType) {

switch (weathType) {

//TODO: 根據背景來的資料 來判斷對應的天氣圖示。。未完持續。。。。

case 1:

// Glide.with(getContext()).load().into(weatherIv);

break;

case 2:

break;

case 3:

break;

case 4:

default:

}

}

public void setTempTv(String temp) {

tempTv.setText(temp);

}

public void setNetworkIv(int netWorkType) {

//TODO: 網絡判斷。

switch (netWorkType) {

case 0:// 沒有網絡連接配接

//改變圖檔。

Glide.with(getContext())

.load(R.drawable.ic_network_n)

.into(networkIv);

break;

case 1:// 是有線網絡。

Glide.with(getContext())

.load(R.drawable.ic_network)

.into(networkIv);

break;

case 2:// 是無線網絡。

Glide.with(getContext())

.load(R.drawable.ic_lianjie_true)

.into(networkIv);

break;

default:

break;

}

}

public void setDateTv() {

new TimeThread().start();

// TODO: 2018/3/22 0022 根據背景 實際做出 整改。

}

//開一個線程繼承Thread

public class TimeThread extends Thread {

//重寫run方法

@Override

public void run() {

super.run();

// do-while 一 什麼什麼 。。

do {

try {

//每隔一秒 發送一次消息

Thread.sleep(1000);

Message msg = new Message();

//消息内容 為MSG_ONE

msg.what = 1;

//發送

handler.sendMessage(msg);

} catch (InterruptedException e) {

e.printStackTrace();

}

} while (true);

}

}

//擷取網絡時間

public String netTime() {

SimpleDateFormat dff = new

SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

dff.setTimeZone(TimeZone.getTimeZone("GMT+08"));

String ee = dff.format(new Date());

return ee;

}

}

//監聽網絡狀态的廣播

package spa.nabo.com.nabospa.receiver;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.net.ConnectivityManager;

import android.net.NetworkInfo;

import org.greenrobot.eventbus.EventBus;

import spa.nabo.com.nabospa.evenbus.NetWorkState;

public class NetWorkStateReceiver extends BroadcastReceiver {

public static int state = 0;//0 是沒有網絡連接配接。1 是有線網絡。2 是無線網絡。

@Override

public void onReceive(Context context, Intent intent) {

ConnectivityManager manager = (ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE);

if (manager!=null){

NetworkInfo info = manager.getActiveNetworkInfo();

boolean up = false;

if(info != null && info.isConnected()){

up = true;

state = 1;

EventBus.getDefault().post(new NetWorkState(state));

}else{

state = 0;

EventBus.getDefault().post(new NetWorkState(state));

}

}

}

}

在Activity方法裡面使用

public static void setTites(spa.nabo.com.nabospa.view.title title) {

// title.setTempTv();//溫度

title.setAddrTv(city);//位址

// title.setNetworkIv();//網絡狀态

title.setLogoIv(logoPath);//看路徑

title.setDateTv();//shijian

title.setAdveTv(msg);//輪播廣告

title.setTempTv(Config.szuoweihao + "");

Log.e("city" + city + "", "TIME:" + times + "--logopath:" + logoPath + "---msg:" + msg);

// title.setWeatherIv();//天氣

}

記個筆記。留個爪。。