当前位置: 编程技术>移动开发
本页文章导读:
▪给listview的item设置背景颜色-工作中遇到什么难题,如何解决的 给listview的item设置背景颜色--工作中遇到什么难题,怎么解决的
昨天准备把2个activity通过fragment继承到一个里面, 左边的fragment是一个listview,右边的是左边某个项目的详细信息。遇到的问.........
▪ OpenGL ES2学习札记(6)- Line Strip和Line Loop OpenGL ES2学习笔记(6)-- Line Strip和Line LoopLine Strip
上一篇文章画了两条线段,但是用了4个点。如果几条线段首尾相接的话,可以让OpenGL把他们当成Line Strip来画,这样就可以用n+1个点来画n条线.........
▪ QMenu的个人化定制 QMenu的个性化定制 经常使用菜单,菜单的定制相当重要,普通的样式设置不难,一般需求足以实现(QMenu + QAction)。如果要足够个性,则需要进行一定的定制。
说起定制,其实也是.........
[1]给listview的item设置背景颜色-工作中遇到什么难题,如何解决的
来源: 互联网 发布时间: 2014-02-18
给listview的item设置背景颜色--工作中遇到什么难题,怎么解决的
昨天准备把2个activity通过fragment继承到一个里面, 左边的fragment是一个listview,右边的是左边某个项目的详细信息。
遇到的问题是当点击昨天某一个listview的时候把背景设置成高亮或者改变背景颜色, google提供的fragment例子上是有个这个功能的。但是当我移植到自己的项目里时,该功能一直不起作用。上网查了一下,实现方法跟我的一样,就是使用setItemChecked.
于是我就重新阅读了google的示例代码,发现他使用的是ArrayAdapter,我用的是BaseAdapter,查了资料发现这2个类区别不大,就是多一个filter接口 , 于是把我的BaseAdapter实现了filter接口,还是不起作用。
于是我仔细查了ArrayAdapter的资料,发现简单版只有一个EditText控件,发现该控件实现了checkable接口。 于是上网搜Listview和checkable ,果然发现很多资料。
于是自定一个一个RelativeLayout类 ,实现checkable接口, 再把布局文件改成自定已的RelativeLayout类, 终于实现了更改listview的某一项的背景颜色。
关键代码只有几句
public void setChecked(boolean checked) {
if(checked){
this.setBackgroundColor(Color.GREEN);
refreshDrawableState();
}else{
this.setBackgroundColor(Color.TRANSPARENT);
refreshDrawableState();
}
}
昨天准备把2个activity通过fragment继承到一个里面, 左边的fragment是一个listview,右边的是左边某个项目的详细信息。
遇到的问题是当点击昨天某一个listview的时候把背景设置成高亮或者改变背景颜色, google提供的fragment例子上是有个这个功能的。但是当我移植到自己的项目里时,该功能一直不起作用。上网查了一下,实现方法跟我的一样,就是使用setItemChecked.
于是我就重新阅读了google的示例代码,发现他使用的是ArrayAdapter,我用的是BaseAdapter,查了资料发现这2个类区别不大,就是多一个filter接口 , 于是把我的BaseAdapter实现了filter接口,还是不起作用。
于是我仔细查了ArrayAdapter的资料,发现简单版只有一个EditText控件,发现该控件实现了checkable接口。 于是上网搜Listview和checkable ,果然发现很多资料。
于是自定一个一个RelativeLayout类 ,实现checkable接口, 再把布局文件改成自定已的RelativeLayout类, 终于实现了更改listview的某一项的背景颜色。
关键代码只有几句
public void setChecked(boolean checked) {
if(checked){
this.setBackgroundColor(Color.GREEN);
refreshDrawableState();
}else{
this.setBackgroundColor(Color.TRANSPARENT);
refreshDrawableState();
}
}
[2] OpenGL ES2学习札记(6)- Line Strip和Line Loop
来源: 互联网 发布时间: 2014-02-18
OpenGL ES2学习笔记(6)-- Line Strip和Line Loop
Line Strip
效果 Line Loop
Line Strip
上一篇文章画了两条线段,但是用了4个点。如果几条线段首尾相接的话,可以让OpenGL把他们当成Line Strip来画,这样就可以用n+1个点来画n条线段。
代码import java.nio.ByteBuffer import java.nio.ByteOrder import javax.media.opengl.GL def vertexShaderCode = """ attribute vec4 a_Position; void main() { gl_Position = a_Position; gl_PointSize = 10.0; } """ def fragmentShaderCode = """ precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.5, 0.0, 1.0); } """ def shaderProgram = glob.compileAndLink(vertexShaderCode, fragmentShaderCode) def aPositionLocation = gl.glGetAttribLocation(shaderProgram.objectId, "a_Position") shaderProgram.use() def BYTES_PER_FLOAT = 4 def POSITION_ELEMENT_COUNT = 2 def POINT_COUNT = 4 def vertices = [ -0.2f,-0.8f, -0.2f,-0.2f, 0.0f, 0.0f, 0.2f,-0.6f, ] as float[] def vertexData = ByteBuffer .allocateDirect(vertices.length * BYTES_PER_FLOAT) .order(ByteOrder.nativeOrder()) .asFloatBuffer() vertexData.put(vertices) vertexData.position(0) gl.glVertexAttribPointer(aPositionLocation, POSITION_ELEMENT_COUNT, gl.GL_FLOAT, false, 0, vertexData) gl.glEnableVertexAttribArray(aPositionLocation) gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f) gl.glClear(gl.GL_COLOR_BUFFER_BIT) gl.glLineWidth(4) gl.glDrawArrays(gl.GL_LINE_STRIP, 0, POINT_COUNT)唯一有必要说明的就是这段代码:
gl.glDrawArrays(gl.GL_LINE_STRIP, 0, POINT_COUNT)传入的参数是GL_LINE_STRIP而不是GL_LINES。
效果 Line Loop
如果Line Strip闭合的话,那么就变成了Line Loop。修改上面的脚本,把传递给glDrawArrays()方法的GL_LINE_STRIP参数改成GL_LINE_LOOP:
gl.glDrawArrays(gl.GL_LINE_LOOP, 0, POINT_COUNT)
[3] QMenu的个人化定制
来源: 互联网 发布时间: 2014-02-18
QMenu的个性化定制
经常使用菜单,菜单的定制相当重要,普通的样式设置不难,一般需求足以实现(QMenu + QAction)。如果要足够个性,则需要进行一定的定制。
经常使用菜单,菜单的定制相当重要,普通的样式设置不难,一般需求足以实现(QMenu + QAction)。如果要足够个性,则需要进行一定的定制。
说起定制,其实也是利用Qt中现成的组件进行组装而已,使用QMenu + QWidgetAction + QAction,再加上QSS美化就可实现个性的QMenu。
先看效果(模仿酷狗所做的一个托盘菜单):
主要代码如下:
SystemTray::SystemTray()
: QSystemTrayIcon()
{
this->createActions();
this->createPlayAction();
this->addActions();
this->translateLanguage();
this->setContextMenu(pop_menu);
}
SystemTray::~SystemTray()
{
}
void SystemTray::translateLanguage()
{
this->setToolTip(tr("hey music"));
this->switchPlayToolTip(is_paly);
backward_button->setToolTip(tr("backward"));
forward_button->setToolTip(tr("forward"));
show_action->setText(tr("show"));
setting_action->setText(tr("setting"));
lock_lrc_action->setText(tr("lock lrc"));
this->showLrc(is_show);
login_action->setText(tr("login"));
logout_action->setText(tr("logout"));
}
void SystemTray::createActions()
{
this->setIcon(QIcon(":/images/music.png"));
pop_menu = new QMenu();
show_action = new QAction(pop_menu);
setting_action = new QAction(pop_menu);
lock_lrc_action = new QAction(pop_menu);
show_lrc_action = new QAction(pop_menu);
login_action = new QAction(pop_menu);
logout_action = new QAction(pop_menu);
connect(show_action, &QAction::triggered, this, &SystemTray::showWidget);
connect(show_lrc_action, &QAction::triggered, this, static_cast(&SystemTray::showLrc));
connect(login_action, &QAction::triggered, this, &SystemTray::showLoginWidget);
connect(logout_action, &QAction::triggered, this, &SystemTray::logoutWidget);
}
void SystemTray::createPlayAction()
{
play_widget = new QWidget();
play_widget_action = new QWidgetAction(pop_menu);
play_button = new QPushButton();
backward_button = new QPushButton();
forward_button = new QPushButton();
music_name_label = new QLabel();
music_name_label->setFixedWidth(MUSIC_NAME_WIDTH);
music_name_label->setAlignment(Qt::AlignCenter);
QPixmap play_pixmap(":/action/pause");
play_button->setIcon(play_pixmap);
play_button->setIconSize(play_pixmap.size());
play_button->setObjectName("transparentButton");
QPixmap backward_pixmap(":/action/backward");
backward_button->setIcon(backward_pixmap);
backward_button->setIconSize(backward_pixmap.size());
backward_button->setObjectName("transparentButton");
QPixmap forward_pixmap(":/action/forward");
forward_button->setIcon(forward_pixmap);
forward_button->setIconSize(forward_pixmap.size());
forward_button->setObjectName("transparentButton");
backward_button->setCursor(Qt::PointingHandCursor);
play_button->setCursor(Qt::PointingHandCursor);
forward_button->setCursor(Qt::PointingHandCursor);
QHBoxLayout *layout = new QHBoxLayout();
layout->addWidget(backward_button);
layout->addWidget(play_button);
layout->addWidget(forward_button);
layout->setSpacing(0);
layout->setContentsMargins(20, 0, 20, 0);
QVBoxLayout *layout2 = new QVBoxLayout();
layout2->addLayout(layout);
layout2->addWidget(music_name_label, 0, Qt::AlignCenter);
layout2->setSpacing(5);
layout2->setContentsMargins(0, 0, 0, 5);
music_name_label->setText("player");
music_name_label->setEnabled(false);
play_widget->setLayout(layout2);
play_widget_action->setDefaultWidget(play_widget);
connect(play_button, &QPushButton::clicked, this, &SystemTray::play);
connect(backward_button, &QPushButton::clicked, this, &SystemTray::skipBackward);
connect(forward_button, &QPushButton::clicked, this, &SystemTray::skipForward);
}
void SystemTray::addActions()
{
pop_menu->addAction(play_widget_action);
pop_menu->addSeparator();
pop_menu->addAction(show_action);
pop_menu->addSeparator();
pop_menu->addAction(setting_action);
pop_menu->addAction(lock_lrc_action);
pop_menu->addAction(show_lrc_action);
pop_menu->addSeparator();
pop_menu->addAction(login_action);
pop_menu->addAction(logout_action);
}
最新技术文章: