首页 > 编程知识 正文

android studio跳转页面怎么实现,ui设计tv端尺寸

时间:2023-05-04 13:29:46 阅读:57368 作者:1850

创建浏览布局

使用leanback库中的BrowseFragment,可以创建以最低限度的代码引用媒体项目类别和行的主要布局。

代码示例如下:

android:id='@ id/main_frame '

Android : layout _ width=' match _ parent '

Android : layout _ height=' match _ parent '

Android : name=' com.example.Android.tvleanback.ui.main fragment '

Android : id=' @ id/main _ browse _ fragment '

Android : layout _ width=' match _ parent '

安卓: layout _ height=' match _ parent ' /

在activity中设置布局:

publicclassmainactivityextendsactivity {

@Override

公共void oncreate (绑定验证例程状态)。

super.oncreate (savedinstancestate;

setcontentview(r.layout.main );

}

.

BrowseFragment在视图中嵌入视频数据和UI元素,并设置布局参数,例如图标、标题和类别标题是否有效。

设置用于设置UI元素

设置setHeadersState类别标题状态

APP应用程序的子类实现BrowseFragment方法,为UI元素设置事件侦听,准备后台管理器等。 代码示例如下所示。

publicclassmainfragmentextendsbrowsefragmentimplements

LoaderManager.LoaderCallbacks {

.

@Override

publicvoidonactivitycreated (bundlesavedinstancestate )。

super.onactivitycreated (savedinstancestate;

loadVideoData (

prepareBackgroundManager (;

setupUIElements (;

setupEventListeners (;

}

.

私密性voidpreparebackgroundmanager {

mbackgroundmanager=background manager.getinstance (get activity );

mbackgroundmanager.attach (get activity ).getWindow );

mdefaultbackground=get resources (

. get drawable (r.drawable.default _ background );

m metrics=new显示度量(;

getActivity ().getwindow manager (.getdefaultdisplay ) ).getmetrics ) mmetrics;

}

私有语音设置元素(

setbadgedrawable (获取活动(.get resources ) )。

. get drawable (r.drawable.videos _ by _ Google _ banner );

//Badge,when set,takes precedent over title

settitle (getstring (r.string.browse _ title );

setheadersstate (headers _ enabled;

以太网横向连接启用(true;

//set headers后台颜色

setbrandcolor(getresources ).getcolor (r.color.fast lane _ background );

//set search icon color

setsearchaffordancecolor (get resources ).getcolor (r.color.search _ opaque );

}

私有语音加载视频数据(

{

VideoProvider.setContext(getActivity());

mVideosUrl = getActivity().getResources().getString(R.string.catalog_url);

getLoaderManager().initLoader(0, null, this);

}

private void setupEventListeners() {

setOnSearchClickedListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Intent intent = new Intent(getActivity(), SearchActivity.class);

startActivity(intent);

}

});

setOnItemViewClickedListener(new ItemViewClickedListener());

setOnItemViewSelectedListener(new ItemViewSelectedListener());

}

...

设置UI元素

browse.png

setBadgeDrawable() 将指定的图片放置到browse fragment的右上角,如图UI_Element.png。当调用setTitle()时,字符串将替换图片。

setTitle() 设置标题并显示在fragment的右上角,除非调用了setBadgeDrawable()。

setHeadersState()和setHeadersTransitionOnBackEnabled() 隐藏或不使用分类标题。

setBrandColor() 设置分类标题区块的背景颜色。

setSearchAffordanceColor() 设置搜索图标的背景颜色。

自定义分类标题的视图

你可以自定义包括更多视图的复杂布局。

自定义布局如下:

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/header_icon"

android:layout_width="32dp"

android:layout_height="32dp" />

android:id="@+id/header_label"

android:layout_marginTop="6dp"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

使用Presenter实现抽象方法:create,bind,unbind ,如下:

public class IconHeaderItemPresenter extends Presenter {

@Override

public ViewHolder onCreateViewHolder(ViewGroup viewGroup) {

LayoutInflater inflater = (LayoutInflater) viewGroup.getContext()

.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View view = inflater.inflate(R.layout.icon_header_item, null);

return new ViewHolder(view);

}

@Override

public void onBindViewHolder(ViewHolder viewHolder, Object o) {

HeaderItem headerItem = ((ListRow) o).getHeaderItem();

View rootView = viewHolder.view;

ImageView iconView = (ImageView) rootView.findViewById(R.id.header_icon);

Drawable icon = rootView.getResources().getDrawable(R.drawable.ic_action_video, null);

iconView.setImageDrawable(icon);

TextView label = (TextView) rootView.findViewById(R.id.header_label);

label.setText(headerItem.getName());

}

@Override

public void onUnbindViewHolder(ViewHolder viewHolder) {

// no op

}

}

这个例子展示了如何定义一个多视图的复杂的presenter。然而,有种更简单的方式结合TextView和图片,通过使用TextView.drawableLeft属性。这种方式就不需要Imageview。

在fragment中显示,如下:

setHeaderPresenterSelector(new PresenterSelector() {

@Override

public Presenter getPresenter(Object o) {

return new IconHeaderItemPresenter();

}

});

设置标题区块的显示状态

使用BrowseFragment.setHeadersState()设置标题区块的状态。

HEADERS_ENABLED 当Fragment被创建时,默认可用并显示;

HEADERS_HIDDEN 当Fragment被创建时,默认隐藏;

HEADERS_DISABLED 当Fragment被创建时,默认不可用并绝不显示。

显示媒体列表

BrowseFragment允许你使用Adapter和Presenter定义并显示可浏览的媒体内容类别和项目。Adapter可以连接到包含媒体目录信息的本地或在线数据源。Adapter使用Presenter创建视图并绑定数据以显示到屏幕上。

实现presenter,如下:

public class StringPresenter extends Presenter {

private static final String TAG = "StringPresenter";

public ViewHolder onCreateViewHolder(ViewGroup parent) {

TextView textView = new TextView(parent.getContext());

textView.setFocusable(true);

textView.setFocusableInTouchMode(true);

textView.setBackground(

parent.getContext().getResources().getDrawable(R.drawable.text_bg));

return new ViewHolder(textView);

}

public void onBindViewHolder(ViewHolder viewHolder, Object item) {

((TextView) viewHolder.view).setText(item.toString());

}

public void onUnbindViewHolder(ViewHolder viewHolder) {

// no op

}

}

构造Adapter使用Presenter来显示类别和项目:

private ArrayObjectAdapter mRowsAdapter;

private static final int NUM_ROWS = 4;

@Override

protected void onCreate(Bundle savedInstanceState) {

...

buildRowsAdapter();

}

private void buildRowsAdapter() {

mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());

for (int i = 0; i < NUM_ROWS; ++i) {

ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(

new StringPresenter());

listRowAdapter.add("Media Item 1");

listRowAdapter.add("Media Item 2");

listRowAdapter.add("Media Item 3");

HeaderItem header = new HeaderItem(i, "Category " + i);

mRowsAdapter.add(new ListRow(header, listRowAdapter));

}

mBrowseFragment.setAdapter(mRowsAdapter);

}

更新背景

使用 BackgroundManager改变activity的背景,如下:

protected void updateBackground(Drawable drawable) {

BackgroundManager.getInstance(this).setDrawable(drawable);

}

根据用户的当前选择自动更新背景:

protected void clearBackground() {

BackgroundManager.getInstance(this).setDrawable(mDefaultBackground);

}

protected OnItemViewSelectedListener getDefaultItemViewSelectedListener() {

return new OnItemViewSelectedListener() {

@Override

public void onItemSelected(Object item, Row row) {

if (item instanceof Movie ) {

Drawable background = ((Movie)item).getBackdropDrawable();

updateBackground(background);

} else {

clearBackground();

}

}

};

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。