miércoles, 23 de julio de 2014
The great unknown GRADLE
Thanks God, André is enlightening us
http://andreborud.com/android-studio-automatic-incremental-gradle-versioning
miércoles, 25 de junio de 2014
viernes, 20 de junio de 2014
How to use Markdown to edit Blogger posts
Written with StackEdit.
this is the new platform I’ve found to publish with markdown.
via: http://blog.g14n.info/2013/12/how-to-use-markdown-to-edit-blogger.html#publish-on-blogger
Changing Menu Icons and the Drawer layout Icon depending the Theme
First generate the attrs.xml in values folder:
<resources>
<declare-styleable name="customAttrs">
<attr name="customUserInfoIcon" format="reference" />
<attr name="customDrawerLayoutIcon" format="reference" />
<attr name="customInfoDetailsIcon" format="reference" />
</declare-styleable>
</resources>
Second generate your diferent styles:
<style name="REDAppTheme" parent="AppTheme">
<item name="android:actionBarStyle">@style/REDActionBar</item>
<item name="customUserInfoIcon">@drawable/ic_action_userinfo_black</item>
<item name="customDrawerLayoutIcon">@drawable/ic_drawer_black</item>
<item name="customInfoDetailsIcon">@drawable/ic_action_info_details_black</item>
</style>
<style name="REDActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">@color/vbz_red</item>
<item name="android:titleTextStyle">@style/RED.ActionBar.TitleTextStyle</item>
<item name="android:icon">@drawable/icon_red</item>
</style>
<style name="RED.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">@color/black</item>
</style>
<style name="BLUEAppTheme" parent="AppTheme">
<item name="android:actionBarStyle">@style/BLUEActionBar</item>
<item name="customUserInfoIcon">@drawable/ic_action_userinfo_white</item>
<item name="customDrawerLayoutIcon">@drawable/ic_drawer_white</item>
<item name="customInfoDetailsIcon">@drawable/ic_action_info_details_white</item>
</style>
<style name="BLUEActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">@color/vbz_blue</item>
<item name="android:titleTextStyle">@style/BLUE.ActionBar.TitleTextStyle</item>
<item name="android:icon">@drawable/icon</item>
</style>
<style name="BLUE.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">@color/white</item>
</style>
Then you can use the different icons in your menu depending of the style you have chosen:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/userinfo"
android:orderInCategory="100"
android:showAsAction="always"
android:title="@string/userinfo"
android:icon="?attr/customUserInfoIcon"/>
<item
android:id="@+id/info"
android:orderInCategory="100"
android:showAsAction="always"
android:title="@string/info"
android:icon="?attr/customInfoDetailsIcon"/>
</menu>
And for the drawer layout you have to get the referenced Id and put it in the ActionBarDrawerToggle constructor:
TypedArray a = getTheme().obtainStyledAttributes(R.style.AppTheme, new int[] {R.attr.customDrawerLayoutIcon});
int attributeResourceId = a.getResourceId(0, 0);
// ActionBarDrawerToggle ties together the the proper interactions
// between the sliding drawer and the action bar app icon
drawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
drawerLayout, /* DrawerLayout object */
attributeResourceId, /* nav drawer image to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description for accessibility */
R.string.drawer_close /* "close drawer" description for accessibility */
) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // creates call to
// onPrepareOptionsMenu()
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu(); // creates call to
// onPrepareOptionsMenu()
}
};
viernes, 6 de junio de 2014
viernes, 16 de mayo de 2014
viernes, 4 de abril de 2014
miércoles, 2 de abril de 2014
miércoles, 12 de marzo de 2014
viernes, 7 de marzo de 2014
Call after drawing view
This is a Listener which gets called once that particular gets drawn completely.
via: http://stackoverflow.com/questions/12477026/how-to-understand-that-android-finished-drawing-a-view
via: http://stackoverflow.com/questions/12477026/how-to-understand-that-android-finished-drawing-a-view
lunes, 24 de febrero de 2014
Upload File to server
via http://androidexample.com/Upload_File_To_Server_-_Android_Example/index.php?view=article_discription&aid=83&aaid=106
via http://androidexample.com/Upload_File_To_Server_-_Android_Example/index.php?view=article_discription&aid=83&aaid=106
import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class UploadToServer extends Activity { TextView messageText; Button uploadButton; int serverResponseCode = 0; ProgressDialog dialog = null; String upLoadServerUri = null; /********** File Path *************/ final String uploadFilePath = "/mnt/sdcard/"; final String uploadFileName = "service_lifecycle.png"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_upload_to_server); uploadButton = (Button)findViewById(R.id.uploadButton); messageText = (TextView)findViewById(R.id.messageText); messageText.setText("Uploading file path :- '/mnt/sdcard/"+uploadFileName+"'"); /************* Php script path ****************/ upLoadServerUri = "http://www.androidexample.com/media/UploadToServer.php"; uploadButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog = ProgressDialog.show(UploadToServer.this, "", "Uploading file...", true); new Thread(new Runnable() { public void run() { runOnUiThread(new Runnable() { public void run() { messageText.setText("uploading started....."); } }); uploadFile(uploadFilePath + "" + uploadFileName); } }).start(); } }); } public int uploadFile(String sourceFileUri) { String fileName = sourceFileUri; HttpURLConnection conn = null; DataOutputStream dos = null; String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 1 * 1024 * 1024; File sourceFile = new File(sourceFileUri); if (!sourceFile.isFile()) { dialog.dismiss(); Log.e("uploadFile", "Source File not exist :" +uploadFilePath + "" + uploadFileName); runOnUiThread(new Runnable() { public void run() { messageText.setText("Source File not exist :" +uploadFilePath + "" + uploadFileName); } }); return 0; } else { try { // open a URL connection to the Servlet FileInputStream fileInputStream = new FileInputStream(sourceFile); URL url = new URL(upLoadServerUri); // Open a HTTP connection to the URL conn = (HttpURLConnection) url.openConnection(); conn.setDoInput(true); // Allow Inputs conn.setDoOutput(true); // Allow Outputs conn.setUseCaches(false); // Don't use a Cached Copy conn.setRequestMethod("POST"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("ENCTYPE", "multipart/form-data"); conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); conn.setRequestProperty("uploaded_file", fileName); dos = new DataOutputStream(conn.getOutputStream()); dos.writeBytes(twoHyphens + boundary + lineEnd); dos.writeBytes("Content-Disposition: form-data; name="uploaded_file";filename="" + fileName + """ + lineEnd); dos.writeBytes(lineEnd); // create a buffer of maximum size bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); buffer = new byte[bufferSize]; // read file and write it into form... bytesRead = fileInputStream.read(buffer, 0, bufferSize); while (bytesRead > 0) { dos.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read(buffer, 0, bufferSize); } // send multipart form data necesssary after file data... dos.writeBytes(lineEnd); dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); // Responses from the server (code and message) serverResponseCode = conn.getResponseCode(); String serverResponseMessage = conn.getResponseMessage(); Log.i("uploadFile", "HTTP Response is : " + serverResponseMessage + ": " + serverResponseCode); if(serverResponseCode == 200){ runOnUiThread(new Runnable() { public void run() { String msg = "File Upload Completed.\n\n See uploaded file here : \n\n" +" http://www.androidexample.com/media/uploads/" +uploadFileName; messageText.setText(msg); Toast.makeText(UploadToServer.this, "File Upload Complete.", Toast.LENGTH_SHORT).show(); } }); } //close the streams // fileInputStream.close(); dos.flush(); dos.close(); } catch (MalformedURLException ex) { dialog.dismiss(); ex.printStackTrace(); runOnUiThread(new Runnable() { public void run() { messageText.setText("MalformedURLException Exception : check script url."); Toast.makeText(UploadToServer.this, "MalformedURLException", Toast.LENGTH_SHORT).show(); } }); Log.e("Upload file to server", "error: " + ex.getMessage(), ex); } catch (Exception e) { dialog.dismiss(); e.printStackTrace(); runOnUiThread(new Runnable() { public void run() { messageText.setText("Got Exception : see logcat "); Toast.makeText(UploadToServer.this, "Got Exception : see logcat ", Toast.LENGTH_SHORT).show(); } }); Log.e("Upload file to server Exception", "Exception : " + e.getMessage(), e); } dialog.dismiss(); return serverResponseCode; } // End else block } }
via http://androidexample.com/Upload_File_To_Server_-_Android_Example/index.php?view=article_discription&aid=83&aaid=106
jueves, 13 de febrero de 2014
Recover commit file version from git repository (eclipse)
This can be done via the context menu "Replace with/File in Git index" on the file in package view.
http://stackoverflow.com/questions/1750997/eclipse-git-checkout-aka-revert/4104149#4104149
http://stackoverflow.com/questions/1750997/eclipse-git-checkout-aka-revert/4104149#4104149
jueves, 30 de enero de 2014
Adding % in strings.xml
just add formatted="false" in the entry:
Please the field %s, in %s, should have a value!
Get connectivity in android
Common solution:
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();Using a broadcast receiver when the network state change:
Post data in body part
try { URL url = new URL("http://requestb.in/14a9s7m1"); HttpURLConnection conn; conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); OutputStream os = null; try { os = conn.getOutputStream(); os.write("fkdlsakl!".getBytes()); } catch (Exception e) { e.printStackTrace(); } os.close(); conn.connect(); int respCode = conn.getResponseCode(); if(respCode == 200) { InputStream ip = conn.getInputStream(); // response.headers = conn.getHeaderFields(); int s = ip.read(); ip.close(); } } catch (Exception e) {}
Suscribirse a:
Entradas (Atom)