qt android开发篇之如何实现在不同分辨率手机中自适应字体大小,或者像素什么的
2017-01-11 16:28
2723 查看
我们知道现在手机屏幕的分辨率跟电脑的分辨率不同,或许你直接在电脑中设置的字体像素大小为20,在电脑中运行的时候看起来很正常 的字体,但是部署到手机后大家分先那些字看起来像蚂蚁一样小,这时候改怎么办呢?小编通过调用android api来解决这个问题,本来很 高兴的说发现qt中的qpplicationwindows这个有一个devicePixelRatio属性,但是它的值我不知道怎么算到手机上,所以只能调用android API了! 源码: Screen.java
devicescreen.h
main.cpp
main.qml
点赞
转载:http://ju.outofmemory.cn/entry/200667
package com.tommego.work; //tommego import java.util.List; import android.content.Context; //屏幕像素密度 import android.util.DisplayMetrics; //蓝牙 开关 import android.bluetooth.BluetoothAdapter; public class Screen extends org.qtproject.qt5.android.bindings.QtActivity{ private static Screen m_instance;//单例对象 private static BluetoothAdapter m_bluetoothAdapter;//蓝牙控制对象 public Screen(){ m_instance = this;//实例化单例对象 m_bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!m_bluetoothAdapter.isEnabled()){ //打开蓝牙 m_bluetoothAdapter.enable(); } } //获取屏幕像素密度 public static double getDentisy(){ DisplayMetrics metrics=new DisplayMetrics(); m_instance.getWindowManager().getDefaultDisplay().getMetrics(metrics); return metrics.density; // return 3; } }
devicescreen.h
#ifndef DEVICESCREEN_H #define DEVICESCREEN_H #include <QObject> #include <QAndroidJniObject> #include <QList> #include <QString> class DeviceScreen : public QObject { Q_OBJECT public: explicit DeviceScreen(); ~DeviceScreen(); Q_PROPERTY(double dentisty READ dentisty WRITE setDentisty NOTIFY dentistyChanged) //获取屏幕像素密度 Q_INVOKABLE double getDentisy(); double dentisty(){ return this->m_dentisty; } void setDentisty(double a){ this->m_dentisty=a; } signals: void dentistyChanged(); public slots: // void onDentistyChanged private: double m_dentisty; }; #endif // DEVICESCREEN_H >##devicscreen.cpp #include"devicescreen.h" DeviceScreen::DeviceScreen() { m_dentisty=getDentisy(); dentistyChanged(); } DeviceScreen::~DeviceScreen() { } //获取屏幕像素密度 double DeviceScreen::getDentisy(){ return QAndroidJniObject::callStaticMethod<double>("com/tommego/work/Screen", "getDentisy","()D"); }
main.cpp
#include <QApplication> #include <QQmlApplicationEngine> #include <QtQml> #include <QQmlContext> #include "Device/devicescreen.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); QQmlApplicationEngine engine; qmlRegisterType<DeviceScreen>("Device",1,0,"MyDevice"); // QQmlContext *context = new QQmlContext(engine.rootContext()); DeviceScreen device; // context->setContextProperty("mydevice",&device); // context->set engine.rootContext()->setContextProperty("mydevice",&device); engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); return app.exec(); }
main.qml
import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Window 2.2 ApplicationWindow { width: Screen.desktopAvailableWidth height: Screen.desktopAvailableHeight visible: true Text{ text:"hello" font.pixelSize:20*mydevice.dentisty//设置字体大小 anchors.centerIn:parent } }
点赞
转载:http://ju.outofmemory.cn/entry/200667
相关文章推荐
- Android手机在不同分辨率情况下字体自适应大小
- Android手机在不同分辨率情况下字体自适应大小
- Android手机在不同分辨率情况下字体自适应大小
- Android手机在不同分辨率情况下字体自适应大小
- Android手机在不同分辨率情况下字体自适应大小
- android如何在代码中让字体大小在不同分辨率中随之变化?
- android开发:在不同分辨率,不同屏幕密度dpi的平板上的字体大小和布局的自适应
- 【Android随记】-- 不同分辨率下字体自适应大小
- android如何让字体大小在不同分辨率中随之变化?
- Android 不同分辨率下如何使字体大小随之变化
- Android 不同分辨率下字体自适应大小
- Android 不同分辨率下如何使字体大小随之变化
- Android不同手机屏幕分辨率自适应
- Android布局layout如何适应不同的分辨率和不同大小的屏幕
- Android 实现图片的自动缩放,适应分辨率不同的手机
- Android自适应不同分辨率或不同屏幕大小
- Android自适应不同分辨率或不同屏幕大小
- Android自适应不同分辨率或不同屏幕大小的layout布局(横屏|竖屏)
- Android自适应不同分辨率或不同屏幕大小
- Android不同手机屏幕分辨率自适应