Compressing a bitmap to JPG format Android example
Codec, compress(), CompressFormat, quality, decodeByteArray(), Android example source code with image.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new SampleView(this));
}
private static Bitmap codec(Bitmap src, Bitmap.CompressFormat format,
int quality) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
src.compress(format, quality, os);
byte[] array = os.toByteArray();
return BitmapFactory.decodeByteArray(array, 0, array.length);
}
private static class SampleView extends View {
// CONSTRUCTOR
public SampleView(Context context) {
super(context);
setFocusable(true);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
canvas.drawColor(Color.GRAY);
// you need to insert some image flower_blue into res/drawable folder
Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.flower_blue);
// Best of quality is 80 and more, 3 is very low quality of image
Bitmap bJPGcompress = codec(b, Bitmap.CompressFormat.JPEG, 3);
// get dimension of bitmap getHeight() getWidth()
int h = b.getHeight();
canvas.drawBitmap(b, 10,10, paint);
canvas.drawBitmap(bJPGcompress, 10,10 + h + 10, paint);
}
}
}
396LW NO topic_id
AD
Další témata ....(Topics)
Dil 3. HeadlinesFragment.java
V 1. dílu jsme se něco dozvěděli od XML souborech
V 2. dílu jsme rozebrali MainActivity.java
V tomto dílu si rozebereme záludnosti v HeadlinesFragment.java souboru.
Používáme příklad i zip porojekt z https://developer.android.com/training/basics/fragments/creating.html Pozorně si jej nastudujte.
V 1. dílu jsme se něco dozvěděli od XML souborech
V 2. dílu jsme rozebrali MainActivity.java
V tomto dílu si rozebereme záludnosti v HeadlinesFragment.java souboru.
Používáme příklad i zip porojekt z https://developer.android.com/training/basics/fragments/creating.html Pozorně si jej nastudujte.
package com.example.android.fragments;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
// pokud chceme aby byla aplikace spustitelná i v nižších verzích Androidu
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
// extends ListFragment důležité pro základní obsluhu ListView atd.
public class HeadlinesFragment extends ListFragment {
// zajistí zpětné odesílání zprav - zde zachytí kliknutí uživatele na položku
// v ListView - seznamu položek
OnHeadlineSelectedListener mCallback;
// pro odposlouchávání zpráv v ListView a odesílání do MainActivity.java
public interface OnHeadlineSelectedListener {
/**
funkce je volána onArticleSelected z HeadlinesFragment když uživatel
klikne na item v ListView - položku seznamu -
Tělo funkce je v MainActivity!!! Tam proběhnou potřebné úkony.
Například výměna fragmentů atd. */
public void onArticleSelected(int position);
}
/** Protože je HeadlinesFragment rozšířením (extends) ListFragment
používá funkci onCreate().
ArticleFragment extends Fragment bude používat onCreateView()
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Zde si pohlídáme verze Androidu a přiřadíme jim
// předdefinovanou šablonu XML souboru
// Je to důležité pokud chceme využívat více možností,
// které nové verze nabízejí
// například podbarvení vybrané položky seznamu
int layout = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?
android.R.layout.simple_list_item_activated_1 : android.R.layout.simple_list_item_1;
// zde se vytovoří jednotlivé položky seznamu v ListView
// Pole vypadá takto:
// static String[] Headlines = {"Article One","Article Two"};
// položky tedy ponesou názvy ze String[] Headlines
// Teoreticky si menší pole položek můžete dát i sem pro jednodušší editaci
setListAdapter(new ArrayAdapter<String>(getActivity(), layout, Ipsum.Headlines));
}
@Override
public void onStart() {
super.onStart();
// Pokud se bude zobrazovat dual-panel
// (pro tablety, větší obrazovky)
// například je dobré
// když bude zvýrazněna vybraná položka setChoiceMode(ListView.CHOICE_MODE_SINGLE);
// Toto provádíme v onStart(), kdy máme přístup k listview
if (getFragmentManager().findFragmentById(R.id.article_fragment) != null) {
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
}
// onAttach() bude asi deprecated, tak můžete vyzkoušet
/*
@Override
public void onAttach(Context context) {
super.onAttach(context);
Activity a;
if (context instanceof Activity){
a=(Activity) context;
}
}
*/
// nebo pohledat něco na inetu
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// Zde přiřadíme odposlouchávání zprávy kliknutí na položku ListView
// a zpětnou vazbu s MainActivity.
// Pokud se to nepodaří, bude zaznamenáno a předáno dál chybové hlášení
try {
mCallback = (OnHeadlineSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnHeadlineSelectedListener");
}
}
/** kliknuto na položku ListView */
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// long id se bude hodit například při obsluze sql.databází
// Upozorní - předá zprávu MainActivity.java, že uživatel
// klikl na položku a odešle i pozici v seznamu
mCallback.onArticleSelected(position);
// getListView().setItemChecked(position, true);
// má zajistit podbarvení
// - zvýraznění vybrané položky,
// ale mi to nefungovalo, tak jsem ještě znovu přidal,
// které je už v onStart() a už to funguje jak má
// Možná nějaká záludnost v mém telefonu :(
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
getListView().setItemChecked(position, true);
}
}
Example source code for Android Developers
// clickable TextView
public TextView createTextView(String sText, Context con){
TextView b = null;
try {
b = new TextView (con);
b.setTextSize(15.0f);
b.setTextColor(Color.rgb( 0, 0, 200));
b.setOnClickListener(this);
b.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
b.setText(sText);
//tr.addView(b, 60,30);
} catch (Exception e) {
e.printStackTrace();
return b;
}
return b;
}
/*****************/
public void onClick(View view) {
try {
String s = ((TextView) view).getText().toString();
}
catch (Exception e1) {
e1.printStackTrace();
}
}
/***********/
// if you want restore in TextView after chagne of orientation
// you have to put code to Manifest.xml android:configChanges
activity android:name=".main"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation" //this line important !!!!!!!
This software allow find all IDs from xml layout file source code and create variables with findViewById for onCreate, for onClick and load save preferences functions.
Get all ID is for Windows XP and higher.
2017,04,28
Download 1.0.2.0
[caption id="attachment_903" align="alignleft" width="300" caption="Get all ID from xml file for Android developers utility."][/caption]
Get all ID is for Windows XP and higher.
2017,04,28
Download 1.0.2.0
[caption id="attachment_903" align="alignleft" width="300" caption="Get all ID from xml file for Android developers utility."][/caption]
StringBuilder, res/raw folder, try catch finaly throws, BufferedReader, InputStream, openRawResource, getResources Android example
MainActivity.java
MainActivity.java
public class MainActivity extends Activity {
TextView txtV;
Context cntx;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtV = (TextView)findViewById(R.id.idLabel);
cntx = this;
try {
StringBuilder strBuilder = myFunction(cntx);
txtV.setText(strBuilder);
} catch (IOException e) {
e.printStackTrace();
}
}
private StringBuilder myFunction(Context context) throws IOException {
final Resources resources = context.getResources();
InputStream inputStream = resources.openRawResource(R.raw.my_file);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder strBuild = new StringBuilder();
try {
String line;
while ((line = reader.readLine()) != null) {
strBuild.append(line);
}
} finally {
reader.close();
}
return strBuild;
}
}
ACRA allows your Android application to send Crash Reports to various destinations:
a Google Docs spreadsheet (default and original behavior)
an email
your own server-side HTTP POST script
any other possible destination by implementing your own report sender
ACRA wiki and download page of project library
a Google Docs spreadsheet (default and original behavior)
an email
your own server-side HTTP POST script
any other possible destination by implementing your own report sender
ACRA wiki and download page of project library
Editace: 2013-12-09 13:09:56
Počet článků v kategorii: 396
Url:compressing-a-bitmap-to-jpg-format-android-example