вы не будете использовать файл макета. Вместо этого укажите фон вашего заставки в качестве фона темы мероприятия. Для этого сначала создайте XML-чертеж в res / drawable.
Примечание: доступен весь код ниже GitHub Link
-
Здесь I Вы установили фоновый цвет и изображение.
Затем вы установите это как фоновый фон вашей всплеска в теме. Перейдите к файлу styles.xml и добавьте новую тему для вашей активности всплеска:
В новом SplashTheme установите атрибут фона фона для вашего XML-чертежа. Настройте это как тему своей активности всплеска в вашем AndroidManifest.xml:
Наконец, ваш класс SplashActivity должен просто перенаправлять вас на ваш основной вид деятельности:
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}
Обратите внимание, что вы даже не создали представление для этого SplashActivity. Взгляд исходит из темы. Когда вы настраиваете пользовательский интерфейс для своей активности всплеска в теме, он доступен сразу.
Если у вас был файл макета для вашей активности всплеска, этот файл макета будет отображаться для пользователя только после вашего приложение полностью инициализировано, что слишком поздно. Вы хотите, чтобы всплеск отображался только за это небольшое количество времени до того, как приложение будет инициализировано.
Попробуйте следующее:
XmlDocument doc = new XmlDocument();
doc.LoadXml("yourxmlhere");
Configuration configuration = new Configuration();
XmlNode root = doc.FirstChild;
if (root.HasChildNodes)
{
foreach (XmlNode item in root.ChildNodes)
{
configuration = SetValueByPropertyName(configuration, item.Attributes["name"].Value, item.FirstChild.InnerText);
}
}
Вспомогательный метод для установки значений:
public static TInput SetValueByPropertyName<TInput>(TInput obj, string name, string value)
{
PropertyInfo prop = obj.GetType().GetProperty(name);
if (null != prop && prop.CanWrite)
{
if (prop.PropertyType != typeof(String))
{
prop.SetValue(obj, Convert.ChangeType(value, prop.PropertyType), null);
}
else
{
prop.SetValue(obj, value, null);
}
}
return obj;
}
Загрузите xml в качестве документа
XmlDocument doc = new XmlDocument();
doc.LoadXml(your_xml_data);
Затем выполните итерацию через дочерние узлы
Configuration configuration = new Configuration();
XmlNode root = doc.FirstChild;
//fill the configuration from the child nodes.
if (root.HasChildNodes)
{
if(root.ChildNodes[0].Name == "host")
{
configuration.host = root.ChildNodes[0].InnerText;
}
if(root.ChildNodes[1].Name == "port")
{
configuration.port = root.ChildNodes[1].InnerText;
}
}
Вы можете назвать эту «старую школу», но она работает.
XSD.exe
(еще более старая школа) - делает то же самое для документов XML. sitemap.xml
на каждом веб-сайте). Сгенерированный класс поможет вам понять его. Это стандартный набор / массив / список. [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class configuration
{
private configurationSetting[] settingField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("setting")]
public configurationSetting[] setting
{
get
{
return this.settingField;
}
set
{
this.settingField = value;
}
}
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class configurationSetting
{
private string valueField;
private string nameField;
/// <remarks/>
public string value
{
get
{
return this.valueField;
}
set
{
this.valueField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string name
{
get
{
return this.nameField;
}
set
{
this.nameField = value;
}
}
}
С учетом вышеизложенного вы можете сделать это:
string rawXml = "<configuration><setting name=\"host\"><value>127.0.0.1</value></setting><setting name=\"port\"><value>80</value></setting></configuration>";
var ser = new XmlSerializer(typeof(configuration));
configuration config;
using (TextReader rdr = new StringReader(rawXml))
{
config = (configuration)ser.Deserialize(rdr);
}
foreach (configurationSetting setting in config.setting)
{
Console.WriteLine($"{setting.name} = {setting.value}");
}
Выход:
host = 127.0.0.1
port = 80
Hth ..