C# 配置文件读取

配置文件介绍

在.net 开发中有些数据要写在配置文件中,winform中配置文件为App.config,web中配置文件为Web.config。
一般我们需要读取的数据分别在两个节点中,connectionStrings和appSettings。当然还有些其他的配置信息。

  • connectionStrings存放数据库连接字符串。
  • appSettings存放程序的一些自定义配置

 

配置文件读取

想要读取配置文件很多方法,比如可以直接把他当作一个xml文件读取出来,然后找到自己想要的配置。
.net 也给我们提供了简单的获取方法。

首先需要先引用一个dll文件,System.Configuration.dll。

然后使用该程序集中的ConfigurationManager.ConnectionStrings 和 ConfigurationManager.AppSettings就可以获取中两个节点的配置信息。

如:ConfigurationManager.ConnectionStrings[“conn”] 的值是 “this is connection string”
ConfigurationManager.AppSettings[“key1”] 的值是 “value1”

Advertisements

Android 动态加载布局文件

本文转自:Android开发技巧:动态创建UI界面

Android的基本UI界面一般都是在xml文件中定义好,然后通过activity的setContentView来显示在界面上,这是Android UI的最简单的构建方式。为了实现更加复杂和更加灵活的UI界面,往往需要动态生成UI界面,甚至根据用户的点击或者配置,动态改变UI本文即介绍该技巧。

假设Android工程的一个xml文件名为activity_main.xml,定义如下:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView 
        android:id="@+id/DynamicText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout> 

在MainActivity中,希望显示这个简单的界面有三种方式(注:以下 的代码均在MainActivity的onCreate()函数中实现)。

1、直接通过传统的setContentView(R.layout.*)来加载

setContentView(R.layout.activity_main);

TextView text = (TextView)this.findViewById(R.id.DynamicText);
text.setText("Hello world");

2、通过LayoutInflater来间接加载

LayoutInflater mInflater = LayoutInflater.from(this);
View contentView = mInflater.inflate(R.layout.activity_main,null);

TextView text = (TextView)contentView.findViewById(R.id.DynamicText);
text.setText("Hello world");

setContentView(contentView);

注意:LayoutInflater相当于一个“布局加载器”,有三种方式可以从系统中获取到该布局加载器对象,如下

  • LayoutInflater.from(this);
  • (LayoutInflater)this.getSystemService(this.Layout_INFLATER_SERVICE);
  • this.getLayoutInflater();

通过该对象的inflate方法可以将指定的xml文件加载转换为View类对象,该xml文件中的控件的对象,都可以通过该View对象的findViewById方法获取。

3、纯粹手工创建UI界面

xml文件中的任何标签,都是有相应的类来定义的。因此,我们完全可以不使用xml文件,纯粹地动态创建所需的UI界面,如下:

LinearLayout layout= new LinearLayout(this);

TextView text = new TextView(this);
text.setText("Hello world");
text.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

layout.addView(text);
setContentView(layout);

Android开发中软键盘常见问题

本文转自:http://www.cnblogs.com/itrena/p/5938210.html

软键盘显示原理

软键盘本质是什么呢?软件盘其实是一个Dialog。
InputMethodService为我们的输入法创建一个Dialog,并且将该Dialog的Window的默写参数(如Gravity)进行了设置,使之能够在底部或者全屏显示。当我们点击输入框时,系统对活动主窗口进行调整,从而为输入法腾出相应的空间,然后将该Dialog显示在底部,或全屏显示。

软键盘显示的调整

android定义了一个属性,名字为windowSoftInputMode,这个属性用于设置Activity主窗口与软键盘的交互模式,用于避免软键盘遮挡内容的问题。我们可以在AndroidManifest.xml中对Activity进行设置。如:android:windowSoftInputMode=”stateUnchanged|adjustPan”。

该属性可选的值有两部分,一部分为软键盘的状态控制,控制软键盘是隐藏还是显示,另一部分是Activity窗口的调整,一遍腾出控件展示软键盘。

  • stateUnspecified(未指定状态):当我们没有设置windowSoftInputMode属性的时候,软件默认采用的就是这种交互方式,系统会根据界面采取相应的软键盘的显示模式。
  • stateUnchanged(不可改变状态):当前界面的软键盘状态,取决于上一个界面的软键盘状态,无论是隐藏还是显示。
  • stateHidden(隐藏状态):当设置该状态时,软键盘总是被隐藏,不管是否有输入的需求。
  • stateAlwaysHidden(总是隐藏状态):当设置该状态是,软键盘总是被隐藏,和stateHidden不同的是,当我们跳转到下个界面,如果下个页面的软键盘是显示的,而我们再次回来的时候,软键盘就会隐藏起来。
  • stateVisible(可见状态):当设置为这个状态是,软键盘总是可见的,即使在界面上没有输入框的情况下也可以强制弹出来。
  • stateAlwaysVisible(总是显示状态):当设置为这个状态时,软键盘总是可见的,和stateVisible不同的是,当我们跳转到下个界面,如果下个页面软键盘是隐藏的,而我们再次回来的时候,软键盘就会显示出来。
  • adjustUnspecified(未指定模式):设置软键盘与软件的显示内容之间的显示关系,当你跟我们没有设置这个值的时候,这个选项也是默认的设置模式。在这种情况下,系统会根据界面选择不同的模式。
  • adjustResize(调整模式):该模式下窗口总是调整屏幕的大小,用于保证软键盘的显示控件,这个选项不能和adjustPan同时使用。如果这两个属性都没有被设置,系统会根据窗口中的布局自动选择其中一个。
  • adjustPan(默认模式):该模式下不会调整来保证软键盘的控件,而是采取了另外一种策略,系统会通过布局的移动,来保证用户要进行输入的输入框肯定在用户的视野范围内,从而让用户可以看到自己输入的内容。

C# HttpWebRequest实现http Get和Post请求

在C#中用来提取网页Html的组件比较多,常用的用WebBrowser、WebClient、HttpWebRequest这三个。下面简单介绍以下HttpWebRequest实现Get和Post请求。

Http post code demo:

public string HttpPost(string postUrl, string paramData, Encoding dataEncode)
{
    string result = string.Empty;

    //Define a HttpWebRequest object
    HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
    webReq.Method="POST";
    webReq.ContentType="application/x-www-form-urlencoded";

    //先将post的参数写入HttpWebRequest
    byte[] byteArray = dataEncode.GetBytes(paramData);
    webReq.ContentLength = byteArray.Length;
    Stream newStream = webReq.GetRequestStream();
    newStream.Write(byteArray, 0, byteArray.Length);
    newStream.Close();

    //提交Post请求,并获取数据
    HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
    StreamReader sReader = new StreamReader(response.GetResponseStream(), Encoding.Default);
    result = sReader.ReadToEnd();
    sReader.Close();
    response.Close();
    newStream.Close();

    return result;
}

Http Get code demo:

public string HttpGet(string getUrl, string paramData, Encoding dataEncode)
{
    string result = string.Empty;
    
    HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(getUrl +"?"+ paramData));
    webReq.Method = "GET";
    webReq.ContentType = "text/html";

    HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
    StreamReader sReader = new StreamReader(response.GetResponseStream(), Encoding.Default);
    result = sReader.ReadToEnd();
    sReader.Close();
    response.Close();

    return result;
}